Исполнение заказа
Заказ с региональным исполнением передают вам на хабе Садарака, а заканчивается он у двери клиента. Эта страница — ваш участок: где вы принимаете заказ, о каких событиях сообщаете и какие переходы машина состояний заказа примет от вас.
Где вы принимаете заказ
Сборщики приносят товар с прилавков, хаб сканирует каждую строку на приёмке и упаковывает заказ в посылки — у каждой код вида ES-1042-P1. Только после этого есть что грузить.
RUNNER_PICKUP → AT_HUB → PACKED → EN_ROUTE → DELIVEREDНа хабе вы забираете заказ в статусе PACKED. AT_HUB означает «принят, но ещё не упакован»: посылок пока нет, класть в машину нечего.
Назначение может опередить упаковку
Оператор может передать заказ вашему ключу в любом из этих статусов: AT_HUB, PACKED. Поэтому вебхук order.assigned_to_partner может прийти, пока хаб ещё упаковывает, — считайте это предупреждением и дождитесь упакованного заказа, прежде чем отправлять машину.
События, о которых вы сообщаете
POST /v1/partner/orders/:code/events со scope logistics:write. Каждый type соответствует ровно одному переходу, который выполняется актором PARTNER и помечается вашим названием партнёра:
| type | Значение |
|---|---|
PICKED_UP | Посылки погружены через наше сканирование передачи на хабе. Заказ становится SCANNED_TO_VAN. |
EN_ROUTE | Посылки в пути к клиенту. Если грузите в свою машину, сообщайте это сразу из PACKED. |
DELIVERED | Передано клиенту. По заказу с наложенным платежом отправьте codCollectedQepik — целое число в гяпиках, 4750 = 47.50 ₼. |
FAILED | Доставка не состоялась. Заказ остаётся у вас, пока вы не повторите попытку или не вернёте его. |
Переходы, которые мы принимаем
Все пары from → to, которые API принимает от партнёрского ключа, в порядке сообщения:
PICKED_UP PACKED → SCANNED_TO_VAN
EN_ROUTE PACKED → EN_ROUTE (только партнёр)
EN_ROUTE SCANNED_TO_VAN → EN_ROUTE
DELIVERED EN_ROUTE → DELIVERED
FAILED EN_ROUTE → FAILEDPACKED → EN_ROUTE принадлежит только вам. Заказ с региональным исполнением уезжает с хаба в вашей машине и потому никогда не проходит через SCANNED_TO_VAN — этот статус означает, что посылки отсканированы в микроавтобус Turanyol, и этот шлюз наш. Никакой другой актор платформы этот переход сделать не может.
Когда мы отказываем
Всё, чего нет в таблице выше, отклоняется, и заказ сохраняет свой статус — невозможный переход никогда не портит заказ.
ERR_INVALID_TRANSITIONМашина состояний заказа отклоняет переход из текущего статуса.
ERR_PARTNER_ORDER_NOT_ASSIGNEDЗаказ не назначен вашему партнёрскому аккаунту.
ERR_API_KEY_SCOPEКлюч валиден, но не содержит скоуп, который нужен этому эндпоинту.
Сообщить о доставке
Код заказа — тот, что напечатан на этикетке посылки (ES-1042), а не идентификатор заказа.
curl -sS -X POST "https://api.turanyol.com/v1/partner/orders/ES-1042/events" \
-H "X-Api-Key: $ESADARAK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"DELIVERED","codCollectedQepik":4750}'