Методы web-сервиса сборки заказов СМ
Все методы web- сервиса сборки заказов вызываются http(s) запросом POST. Приложения Домино могут получить адрес сервиса из параметра «Сервис сборки заказов СМ» карточки компании.
Адрес точки доступа для сервиса сборки заказов:
https://компания.ru/sbermarket/orders/api/
Для аутентификации при вызове необходимо передавать авторизационный токен в заголовке запроса Client-Token. Приложения Домино могут получить токен из параметра «Авторизационный токен сервиса сборки заказов» карточки компании. Каждый метод сервиса должен проверить полученный токен, и вернуть http-код 403 forbidden в случае ошибки.
Имя вызываемого метода передается в URL. Параметры всегда передаются как content в формате json (требуется установить параметр заголовка Content-type : application/json ). Json – объект с параметрами запроса имеет следующую структуру:
{
requestId : <уникальный идентификатор запроса, string, не обязательный>,
requestData : {
<параметры запроса в формате json, в зависимости от вызванного метода>
}
}
Рекомендуется в каждом запросе передавать уникальный идентификатор запроса requestId. Это упростит анализ протоколов при разборе ошибок. В качестве идентификатора запроса проще всего использовать GUID.
Если метод выполнился, то http-кодом ответа всегда будет 200 OK, вне зависимости от результата выполнения метода. Иные коды ответа (4xx или 5xx) означают ошибки в работе сервиса, но не метода.
Результат выполнения метода всегда возвращается в виде json- объекта с фиксированной на верхнем уровне структурой:
{
requestId : <уникальный идентификатор запроса, string, не обязательный>,
errorCode : <код ошибки (0-успешно), целое, обязательный>,
errorMsg : <описание кода ошибки, string, обязательный при ошибке>,
responseData : {
<данные ответа в формате json, в зависимости от вызванного метода>
}
}
Объект «Заказ» возвращается большинством методов сервиса сборки. Его структура:
order : {
orderId : <Идентификатор заказа СМ, string>
storeId : <Идентификатор магазина СМ, string>
state : <Статус заказа, enum string>
created : <Время поступления заказа, datetime>,
collectAt : <Планируемое время сборки заказа, datetime>,
deliveryAt : <Планируемое время передачи заказа в доставку, datetime>,
collector : <Сборщик, string>,
customer : {
name : <Имя покупателя, string>,
phoneNumber : <Телефон для связи с покупателем, string>,
auxNumber : <Добавочный номер, string>
},
positions : [
{
productId : <Идентификатор товара (SKU), string>,
replacedById : <Товар, на который заменена позиция, string>,
name : <Наименование товара, string>,
picture : <URL картинки с изображением товара, string>,
storage : <Место хранения товара, string>,
isWeight : <Весовой товар, bool>,
isMarked : <Маркированный товар, bool>,
orderedQuantity : <Заказанное количество, number>,
agreedQuantity : <Согласованное количество, number>,
collectedQuantity : <Собранное количество, number>,
markingCodes : [
<Код маркировки, string>,
...
]
},
...
],
comment : <Комментарий к заказу, string>,
replacementPolicy : <Политика замены, string>
}
Комментарии по реквизитам заказа:
- Тип datetime - дата и время в ISO формате, обычно YYYY-MM-DDTHH:MI:SS (время местное).
- state, статус заказа. Возможные значения «Новый», «В сборке», «Собран, «Передан курьеру», «Доставлен», «Отменен».
Для синхронизации состояния заказа между СМ и Домино сервис сборки заказов отправляет в СМ специальные уведомления. Спецификация API уведомлений СМ https://docs.sbermarket.ru/api-products/other/orders/partners-notifications .
Перечень уведомлений, которые сервис для сборки заказов отправляет в СМ
- in_work - заказ взят в работу (сборку)
- ready_for_delivery - сборка заказа завершена, заказ готов к передаче курьеру
- canceled - заказ отменен магазином
Сборщик заказа - это Пользователь в терминах Домино, для которого установлена роль «Сборщик заказов СМ». Сборщик во всех методах web- сервиса сборки заказов идентифицируется именем пользователя, которое в Домино уникально. Если заказ собирается без указания сборщика (т.н. сборка магазина), то поле «Сборщик» документа заказа СМ остается пустым (NULL). При вызове методов web- сервиса сборки заказов можно указывать специальное имя сборщика «Сборка магазина», либо null, либо вообще не указывать - все эти способы эквивалентны, если иное не указано явно. В возвращаемом заказе в случае сборки магазина поле order.collector всегда будет иметь значение null.
Нет комментариев