Содержание
- Отправка запроса
- Создание доставки
- Получение статуса доставки
- Получение списка товаров
- Получение списка типов оплат
- Пример работы с API с использованием языка PHP
Отправка запроса
Для отправки запроса необходимо использовать метод POST — эквивалент html form submit.
Адрес для передачи параметров зависит от метода, а также версии электронного взаимодействия https://account.interpos.pro/api/vВЕРСИЯ/МЕТОД/
Кодировка uft-8
Методы
| Название | URL запроса |
|---|---|
| Новая доставка | https://account.interpos.pro/api/v1/delivery/create/ |
| Получение статуса доставки | https://account.interpos.pro/api/v1/delivery/status/ |
| Получение списка товаров | https://account.interpos.pro/api/v1/delivery/product/get/ |
| Получение списка типов оплат | https://account.interpos.pro/api/v1/payment/get-list/ |
Ответы ошибок
При отправке запросов могут возникнуть ошибки выполнения. В общем случае ответом на запрос является JSON объект, структура которого представлена в таблице 1.
| Наименование параметра | Тип | Описание |
|---|---|---|
| status | Целый | Статус выполнения запроса. Статусам является код ответа HTTP запроса |
| message | Строка | Текст сообщения о возникшей ошибке |
Создание доставки
Метод предназначен для передачи доставки из интернет-магазина или приложения. Данный метод поддерживает две модели создания доставки: без оплаты заказа и с оплатой заказа. Для передачи информации об оплате заказа, необходимо передать в структуре данных заполненный массив данных платежей payments.
Метод: POST
Тип данных: application/json
Данные передаются в виде JSON объекта, структура которого представлена в таблице 2.
Таблица 2 – Структура данных, передаваемая для создания доставки
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| access_token | Строка | Да | Ключ API организации |
| delivery | Объект | Да | Доставка |
| surname | Строка | Нет | Фамилия клиента |
| name | Строка | Да | Имя клиента |
| phone | Да | Строка | Телефон клиента |
| Строка | Нет | Электронная почта клиента | |
| city | Строка | Да | Город |
| district | Строка | Нет | Район |
| street | Строка | Да | Улица |
| house | Строка | Да | Дом |
| porch | Строка | Нет | Подъезд |
| floor | Строка | Да | Этаж |
| apartment | Строка | Нет | Квартира |
| intercom | Строка | Нет | Домофон |
| type | Целый | Да | Тип доставки (0 – Доставка курьером; 1 - Самовывоз) |
| comment_to_order | Текст | Нет | Комментарий к заказу |
| comment_to_address | Текст | Нет | Комментарий к адресу |
| comment_to_client | Текст | Нет | Комментарий к клиенту |
| order | Объект | Да | Информация о заказе |
| guest_amount | Целый | Да | Количество гостей |
| items | Массив объектов item (см. таблицу 3) | Да | Позиции заказа |
| payments | Массив объектов payment (см. таблицу 5) | Да/Нет | Платежи заказа |
Таблица 3 – Структура объекта «Позиция заказа»
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| product | Объект | Да | Товар в заказе |
| Id | Целый | Да | Локальный идентификатор товара в организации |
| price | Вещественный | Да | Цена 1 единицы товара |
| amount | Вещественный | Да | Количество позиций в заказе |
| modifiers | Массив объектов modifier (см. таблицу 4) | Условно обязательно | Модификаторы позиции |
Таблица 4 – Структура объекта «Модификатор позиции»
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| product | Объект | Да | Модификатор позиции в заказе |
| id | Целый | Да | Локальный идентификатор модификатора в организации |
| price | Вещественный | Да | Цена 1 единицы модификатора |
| amount | Вещественный | Да | Количество позиций модификатора в заказе |
Таблица 5 – Структура объекта «Платеж»
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| payment | Объект | Да | Платеж |
| id | Целый | Да | Локальный идентификатор платежа в организации |
| amount_pay | Вещественный | Да | Сумма оплаты |
Пример запроса:
{
"delivery": {
"surname": "Саленко",
"name": "Александр",
"phone": "89181110048",
"email": "demo07@mail.ru",
"type": "1",
"order": {
"guest_amount": 1,
"items": [
{
"product": {
"id": 51
},
"price": 302,
"amount": 1,
"modifiers": [
{
"product": {
"id": 135
},
"price": 10,
"amount": 1
}
]
}
],
"payments": [
{
"payment": {
"id": 2
},
"amount_pay": 312
}
]
},
"city": "Краснодар",
"street": "40 Летия Победы",
"house": "222",
"apartment": "111"
},
"access_token": "1234567890"
}
В случае успешного ответа, будет получен результат в виде JSON объекта, структура которого представлена в таблице 6.
Таблица 6 – Структура успешного ответа создания новой доставки
| Наименование параметра | Назначение | Тип параметра |
|---|---|---|
| status | Целый | Статус |
| delivery_key | Строка | Уникальный ключ доставки |
Пример успешного ответа:
{
"status": 200,
"delivery_key": "850C9E18-DB83-4230-BF8B-D96DDCA9C09E"
}
Пример ответа с ошибкой:
{
"status": 400,
"message": "Ошибки при создании доставки",
"errors": [
"Не соответствие передаваемой цены по номенклатуре Пицца \"Маргарита\""
]
}
Получение статуса доставки
Метод предназначен для получения информации о статусе доставки.
Метод: POST
Тип данных: application/json
Данные передаются в виде JSON объекта, структура которого представлена в таблице 7.
Таблица 7 – Структура запроса получения статуса доставки
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| access_token | Строка | Да | Ключ API организации |
| delivery_key | Строка | Да | Уникальный ключ доставки |
В случае успешного ответа, будет получен результат в виде JSON объекта, структура которого представлена в таблице 8.
Таблица 8 – Структура успешного ответа получения статуса доставки
| Наименование параметра | Назначение | Тип параметра |
|---|---|---|
| status | Целый | Статус |
| delivery_key | Строка | Уникальный ключ доставки |
| delivery_status | Целый | Статус доставки. Может принимать следующие значения: 0 - Не подтвержден; 1 – Новый, 2 – Готовится, 3 – Готов, 4 – Отправлен, 5 – Закрыт, 6 – Отменен |
| order_status | Целый | Статус заказа. Может принимать следующие значения: 1 – Открыт, 2 – Распечатан счет, 3 – Оплачен, 4 – Закрыт, 5 – Отменен. |
Пример запроса:
{
"delivery_key": "BDBA775B-AF8C-424C-9000-111",
"access_token": "1234567890"
}
Пример успешного ответа:
{
"status": 200,
"delivery_key": "BDBA775B-AF8C-424C-9000-95EC43776E13",
"delivery_status": 2,
"order_status": 1
}
Пример ответа с ошибкой:
{
"status": 404,
"message": "Доставка с идентификатором BDBA775B-AF8C-424C-9000-111 не найдена"
}
Получение списка товаров
Метод предназначен для получения информации о перечне товаров доступных для доставок.
Метод: POST
Тип данных: application/json
Данные передаются в виде JSON объекта, структура которого представлена в таблице 8.
Таблица 8 – Структура запроса получения перечня товаров
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| access_token | Строка | Да | Ключ API организации |
Пример запроса:
{
"access_token": "1234567890"
}
Пример успешного ответа:
{
"status": 200,
"products": [
{
"id": 1,
"is_group": true,
"article": "000001",
"name": "Кухня",
"base_price": null,
"cost_price": 0,
"count": null,
"cold_processing": null,
"hot_processing": null,
"is_sold_by_weight": null,
"description": "",
"comment": ""
},
{
"id": 51,
"is_group": false,
"article": "000051",
"name": "Пицца \"Маргарита\"",
"base_price": 302,
"cost_price": 227.3,
"count": 6,
"cold_processing": 0,
"hot_processing": 0,
"is_sold_by_weight": false,
"description": "",
"comment": "",
"modifiers": [
{
"product": {
"id": 134,
"is_group": true,
"article": "000134",
"name": "Добавки к пицце",
"base_price": null,
"cost_price": 0,
"count": null,
"cold_processing": null,
"hot_processing": null,
"is_sold_by_weight": null,
"description": "",
"comment": ""
},
"min_value": 1,
"max_value": 1
},
{
"product": {
"id": 134,
"is_group": true,
"article": "000134",
"name": "Добавки к пицце",
"base_price": null,
"cost_price": 0,
"count": null,
"cold_processing": null,
"hot_processing": null,
"is_sold_by_weight": null,
"description": "",
"comment": ""
},
"min_value": 1,
"max_value": 1
},
{
"product": {
"id": 134,
"is_group": true,
"article": "000134",
"name": "Добавки к пицце",
"base_price": null,
"cost_price": 0,
"count": null,
"cold_processing": null,
"hot_processing": null,
"is_sold_by_weight": null,
"description": "",
"comment": ""
},
"min_value": 0,
"max_value": 2
}
]
},
{
"id": 54,
"is_group": false,
"article": "000054",
"name": "Сыр \"Дорблю\"",
"base_price": 0,
"cost_price": 0,
"count": 1,
"cold_processing": 0,
"hot_processing": 0,
"is_sold_by_weight": false,
"description": "",
"comment": ""
},
]
}
Получение списка типов оплат
Метод предназначен для получения информации о перечне типов оплат.
Метод: POST
Тип данных: application/json
Данные передаются в виде JSON объекта, структура которого представлена в таблице 9.
Таблица 9 – Структура запроса для получения перечня типов оплат
| Наименование параметра | Тип | Обязательный | Описание |
|---|---|---|---|
| access_token | Строка | Да | Ключ API организации |
Пример запроса:
{
"access_token": "1234567890"
}
В случае успешного ответа, будет получен результат в виде JSON объекта, структура которого представлена в таблице 10.
Таблица 10 – Структура успешного ответа получения статуса доставки
| Наименование параметра | Назначение | Тип параметра |
|---|---|---|
| status | Целый | Статус |
| payments | Список | Список типов оплат, состоящий из элементов payment (см. таблицу 11) |
Таблица 11 – Структура элемента payment
| Наименование параметра | Назначение | Тип параметра |
|---|---|---|
| id | Целый | Идентификатор |
| name | Строка | Наименование типа оплаты |
| type | Целое | Тип (0 – Наличные; 1- Банковская карта) |
| is_visible | Булево | Видимость в кассе |
| is_enabled | Булево | Включен для работы |
| is_open_cashbox | Булево | Отрывать денежный ящик |
| is_processing | Булево | Использовать банковский процессинг |
| comment | Булево | Комментарий |
| manual_entry | Булево | Ввод вручную |
| can_be_taken_externally | Булево | Может приниматься извне |
Пример успешного ответа:
{
"status": 200,
"payments": [
{
"id": 1,
"name": "Наличные",
"type": 0,
"is_visible": true,
"is_enabled": true,
"is_open_cashbox": true,
"is_processing": false,
"comment": null,
"manual_entry": true,
"can_be_taken_externally": false
},
{
"id": 2,
"name": "Visa",
"type": 1,
"is_visible": true,
"is_enabled": true,
"is_open_cashbox": true,
"is_processing": true,
"comment": null,
"manual_entry": true,
"can_be_taken_externally": false
},
{
"id": 3,
"name": "Master Card",
"type": 1,
"is_visible": true,
"is_enabled": true,
"is_open_cashbox": true,
"is_processing": true,
"comment": null,
"manual_entry": true,
"can_be_taken_externally": false
}
]
}
Пример работы с API с использованием языка PHP
// Отправка запроса
function sendRequest($url, $data) {
$base_url = "http://account.interpos.pro";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url . $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
// Ключ организации
$access_token = "ключ организации";
$data = [];
$data['access_token'] = $access_token;
// --------------------------------------------------
// -------- Получение списка товаров ------
// --------------------------------------------------
//$products = sendRequest("/api/v1/delivery/product/get/", $data);
//var_dump(json_decode($products));
// --------------------------------------------------
// -------- Получение списка типов оплат ------
// --------------------------------------------------
//$payments = sendRequest("/api/v1/payment/get-list/", $data);
//var_dump(json_decode($payments));
// --------------------------------------------------
// -------- Получение статуса доставки --------
// --------------------------------------------------
$delivery_key = "D97FEAC5-7E5B-4635-9107-068E021C40EA";
$data = [];
$data['access_token'] = $access_token;
$data['delivery_key'] = $delivery_key;
//$statusInfo = sendRequest("/api/v1/delivery/status/", $data);
// --------------------------------------------------
// -------- Создание новой доставки -----------
// --------------------------------------------------
$data = [];
$data['access_token'] = $access_token;
$data['delivery'] = [];
$data['delivery']['surname'] = "Иванов";
$data['delivery']['name'] = "Иван";
$data['delivery']['phone'] = "890012345678";
$data['delivery']['email'] = "demo@demo.ru";
$data['delivery']['city'] = "Краснодар";
$data['delivery']['street'] = "Красная";
$data['delivery']['house'] = "1";
$data['delivery']['apartment'] = null;
$data['delivery']['type'] = 0;
$data['delivery']['order'] = [];
$data['delivery']['order']['guest_amount'] = 10;
$data['delivery']['order']['items'] = [];
// Позиция
$data['delivery']['order']['items'][0]['product']["id"] = 51;
$data['delivery']['order']['items'][0]["amount"] = 1;
$data['delivery']['order']['items'][0]["price"] = 302;
// Модификаторы к позиции (необязательно)
$data['delivery']['order']['items'][0]['modifiers'][0]['product']["id"] = 135;
$data['delivery']['order']['items'][0]['modifiers'][0]["amount"] = 1;
$data['delivery']['order']['items'][0]['modifiers'][0]["price"] = 10;
// Оплаты доставки (необязательно)
$data['delivery']['order']['payments'] = [];
$data['delivery']['order']['payments'][0]['payment']['id'] = 2;
$data['delivery']['order']['payments'][0]['amount_pay'] = 312;
$response = sendRequest("/api/v1/delivery/create/", $data);
$json = json_decode($response);
var_dump($json);
// Ключ доставки
$delivery_key = $json->delivery_key;

