Интеграция по API

Содержание

Отправка запроса

Для отправки запроса необходимо использовать метод 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 Да Строка Телефон клиента
email Строка Нет Электронная почта клиента
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;
Дата создания: 25.11.2020 в 21:54:26
Дата редактирования: 01.12.2020 в 11:16:36