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

В системе есть возможность подписаться на отправку заказов по 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' true Статус заказа
new - новый неразобранный заказ
approved - назначен курьер для доставки (заказ обработан оператором)
completed - доставлено
removed - отменено (диспетчером или клиентом)
created_at datetime false Дата создания
total float true Сумма заказа (стоимость доставки включена)
delivery_cost float false Стоимость доставки
coins float false Кол-во баллов, которые использовались для оплаты заказа
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 Объект содержащий клиента
shipping_address object true Объект содержащий адрес доставки

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

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

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

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

Название Тип Обязательный Описание
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 Адрес не структурировано, а единой строкой

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

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

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

[
  {
    "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"
      ],
      "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, г. Сыктывкар   Орбита ближняя (Париж)"
        }
      ],
      "requisites": {
        "bank_account": {
          "inn": "1234512345",
          "kpp": "1234512345",
          "account_number": "1234512345",
          "correspondent_account": "1234512345",
          "bik": "1234512345",
          "bank_name": "1234512345"
        }
      },
      "legal_address": [
        "г. Сыктывкар,ул. Кутузова,д. 21"
      ],
      "product_price_list": {
        "36": {
          "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,
    "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