Содержание
- Отправка запроса
- Создание доставки
- Получение статуса доставки
- Получение списка товаров
- Получение списка типов оплат
- Пример работы с 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;