# Экспорт заказов

В системе есть возможность подписаться на отправку заказов по HTTP протоколу при их создании и изменении

# Настройка экспорта

Для того чтобы приходили заказы, нам необходимо сообщить адреса для импорта заказов на вашей стороне, например https://your-domain.com/order/import. Настроить аутентификацию по Bearer токену, далее выдать этот токен нам, чтобы мы вам присылали запросы с этим токеном

# Как работает экспорт

При создании заказа и его изменении, он попадает в очередь по обмену. Очередь запускается каждую минуту и отправляет заказы на указанные при настройке адреса по HTTP протоколу

# Параметры

[order, order...] где order имеет следующие атрибуты

Название Тип Обязательный Описание
id string(255) true Идентификатор в экспортирующей системе
external_id integer(11) false Идентификатор в принимающей системе
status range in 'new', 'approved', 'completed', 'removed', 'performed' true Статус заказа
new - новый неразобранный заказ
approved - назначен курьер для доставки (заказ обработан оператором)
performed - заказ выполняется
completed - доставлено
removed - отменено (диспетчером или клиентом), с этим же статусом уезжает недоставленный заказ
created_at datetime false Дата создания
total float true Сумма заказа (стоимость доставки включена)
delivery_cost float false Стоимость доставки
coins float false Кол-во баллов, которые использовались для оплаты заказа
discount float false Скидка на заказ (например, по промокоду) в рублях, 0 - если скидки нет. В total не вычтена: сумма к оплате = total - discount - coins. Только передаётся нами: при импорте заказа поле discount не принимается
payment_type range false Способ оплаты, возможные варианты можно посмотреть здесь
payment_status boolean true true - заказ успешно оплачен, false - заказ еще не оплачен
shipping_date_from datetime true Время доставки от
shipping_date_to datetime true Время доставки до
comment string false Комментарий
ask_for_checkout range in 'bill', 'agreement' false Запрос документов
bill - запрос счёта
agreement - запрос договора
count_of_returned_bottles integer false Кол-во бутылей к возврату
order_item_list array true Массив из заказанных позиций
client object true Объект содержащий клиента
account_number integer(11) false Абонентский номер клиента
shipping_address object true Объект содержащий адрес доставки
organization object false Объект содержащий организацию на которую был сделан заказа
order_taraZalog_list array false Возвратная тара отдельными позициями заказа. Передаётся, только если у партнёра включён учёт возвратной тары под залог

Атрибуты объекта клиент client, если он существует в системе можно посмотреть здесь

Атрибуты объекта клиент client, если заказ от не зарегистрированного пользователя

Название Тип Обязательный Описание
username string(255) true Имя клиента
phone string(12) true Телефон клиента, например +79191991919
email string(255) false Электронная почта клиента

Атрибуты объекта организации на которую был сделан заказ organization

Название Тип Обязательный Описание
inn string(255) true ИНН
kpp string(12) false КПП
ogrn string(255) false ОГРН
okpo string(255) false ОКПО
name string(255) true Название
full_name string(255) false Полное название
address_name string(255) false Адрес
address_full_name string(255) false Полный адрес

Атрибуты объекта адрес доставки shipping_address

Название Тип Обязательный Описание
id string(255) true Идентификатор адреса заказа в нашей системе
user_address_id integer(11) false Идентификатор в принимающей системе
city string(255) true Город
street string(255) true Улица
house string(10) true Дом
entrance string(10) false Подъезд
floor string(10) false Этаж
room string(10) false Номер квартиры или офиса
str string(255) true Адрес не структурировано, а единой строкой
comment string false Комментарий к адресу
coordinates object false Координаты адреса, null если их нет

Массив из заказанных позиций order_item_list включает в себя заказанные позиции [order_item, order_item...] со следующими атрибутами

Название Тип Обязательный Описание
product_id string(255) true Идентификатор продукта в экспортирующей системе
name string(255) false Название продукта
price decimal(10,2) false Цена продукта
quantity integer(11) false Кол-во заказанных продуктов
order_product_id integer(11) false Идентификатор позиции продукта в заказе в экспортирующей системе

В order_item есть возможность отдавать отсканированные при закрытии заказа коды маркировки, тогда к выше перечисленным атрибутам будет добавлено поле marking_codes содержащее массив строк кодов маркировки. Такие коды уходят только у доставленных заказов и только если партнёр включил их передачу в обмене

Позиции возвратной тары order_taraZalog_list описываются теми же атрибутами, что и order_item_list

# Тело запроса при экспорте заказов

[
  {
    "id": "50894",
    "external_id": "657f9553-ff97-11e9-80d3-001e4f377cd7",
    "status": "approved",
    "client": {
      "id": "68",
      "external_id": "jqLbQR3be8jlJZIh4dBrUCyyIhFzuAKK",
      "username": "Василий Тестовый",
      "comment": null,
      "email": "ognev@baitek.org",
      "account_number": 68,
      "type": "fiz",
      "phones": [
        "9083280832"
      ],
      "additional_phones": [
        "+7(908)328-08-33",
        "+7 (818) 188-18-18"
      ],
      "addresses": [
        {
          "id": "2647",
          "external_id": null,
          "name": "Кутузова, д. 21, эт. 1, кв./оф. 1, под. 2, г. Сыктывкар – Орбита ближняя (Париж)",
          "city": "Сыктывкар",
          "street": "Кутузова",
          "house": "21",
          "room": "1",
          "entrance": "2",
          "floor": "1",
          "district_id": "1",
          "str": "Кутузова, д. 21, эт. 1, кв./оф. 1, под. 2, г. Сыктывкар   Орбита ближняя (Париж)",
          "coordinates": null
        }
      ],
      "legal_address": [
        "г. Сыктывкар,ул. Кутузова,д. 21"
      ],
      "product_price_list": [
        {
          "product_id": "36",
          "external_product_id": null,
          "price": "101.00",
          "active": false
        }
      ],
      "coins_amount": 90,
      "loyalty_system_is_active": true
    },
    "account_number": 68,
    "total": 710,
    "delivery_cost": 30,
    "coins": 710,
    "discount": 0,
    "payment_type": "cash",
    "created_at": "2019-11-07 00:54:05",
    "shipping_address": null,
    "shipping_date_from": "2019-11-06 14:00:00",
    "shipping_date_to": "2019-11-06 21:00:00",
    "order_item_list": [
      {
        "name": "Вода 19 л. Ваш бренд",
        "quantity": 2,
        "price": 355,
        "product_id": "28",
        "order_product_id": 1435
      }
    ],
    "comment": "comment",
    "ask_for_checkout": null,
    "count_of_returned_bottles": 0
  }
]

# Как формировать ответ на принимающей стороне

Запросы отправляются через очередь, если принимающая сторона отвечает кодом отличным от 200, то запрос из очереди не убирается и продолжает отправляться пока не будет дан ответ с кодом 200