# Экспорт заказов
В системе есть возможность подписаться на отправку заказов по 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 |
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