RAPI

FLOW

Создать магазин

Как автоматизировать доставку без дублей отправлений

Как связать заказ, посылку и заявку перевозчику, обработать тайм-аут и повтор статуса. Учебный протокол и пилот автоматизации доставки.

Светлый кот идёт через центр между упаковочным столом и лентой с посылками

Автоматизация доставки должна сохранять однозначную связь между заказом и физическими отправлениями. Её результат — одна корректная заявка на посылку, достоверный статус и управляемое исключение при ошибке. Автоматически отправлять форму перевозчику после каждого изменения заказа недостаточно: так появляются повторные накладные и неверные уведомления.

Сначала выберите один готовый способ доставки и ограниченный тип посылки. Выбор модели исполнения разобран в организации доставки; здесь — надёжность обмена данными после этого выбора.

Какие данные и состояния разделить

До создания заявки проверьте адрес или пункт выдачи, контакты в необходимом объёме, вес, габариты упаковки, состав, оплату и согласованные услуги. Передавайте перевозчику только нужные для исполнения данные с надлежащим основанием. Договор обработки и права доступа к интеграции — часть подготовки.

Заказ магазина и отправление — разные сущности. Один заказ может ехать двумя посылками, а одна посылка иметь несколько этапов отслеживания. Храните внутренний номер заказа, номер посылки, версию заявки и внешний идентификатор. Состояние «готовим» в магазине не должно автоматически означать «принято перевозчиком».

ЭтапДанные для контроляДействие при проблеме
Готовность к отправлениюАдрес, упаковка, оплата, услугиИсправить до передачи
Запрос созданияУстойчивый ключ операцииЗаписать попытку и ответ
Неопределённый результатКлюч, время, внешний ID при наличииСверить результат, не создавать новую посылку вслепую
Заявка подтвержденаВнешний ID и накладнаяПроверить поля перед передачей
ОтслеживаниеИсходный код и время событияОбновить по правилам перехода

Что делать при тайм-ауте

Тайм-аут не означает, что перевозчик не создал отправление. Запрос мог быть обработан, а ответ потерян. Безопасность повторения зависит от конкретного API: некоторые поддерживают ключ идемпотентности, другие — поиск по вашему номеру, третьи требуют иной процедуры сверки.

В учебном примере заказ O-418 содержит посылку P-1. Интеграция отправила операцию создания с ключом O-418/P-1/v1 и не получила ответ. Система отмечает результат как неопределённый, проверяет наличие отправления предусмотренным API способом и записывает найденный внешний номер. Новую заявку с другим ключом она не создаёт.

Если контракт гарантирует идемпотентность повтора, используйте тот же ключ и согласованные данные в пределах установленных условий и срока хранения ключа. Если такой гарантии или поиска нет, передайте случай ответственному на ручную сверку. Автоматический повтор любого POST-запроса небезопасен; универсальную поддержку идемпотентности всем перевозчикам приписывать нельзя.

Как принимать статусы

Сохраняйте исходные события, их идентификаторы и время. Проверяйте источник уведомления по документации сервиса; входящий запрос сам по себе не подтверждает подлинность статуса. Сопоставьте внешние коды с понятными состояниями магазина, сохранив оригинал для диагностики.

Повтор одного события «вручено» не должен повторно списывать товар или отправлять письмо. Запоздалое «в пути» не должно отменять более позднее подтверждённое вручение. Но не сортируйте статусы только по придуманному числу: возврат после вручения — допустимый новый процесс. Правила переходов и исправлений нужно определить отдельно.

Накладная не доказывает физическую передачу посылки, а вручение не всегда означает окончательное завершение денежных расчётов. Для наложенного платежа и возвратов сверяйте предусмотренные договором реестры отдельно от трекинга.

Ограниченный пилот

В тестовой среде или на учебных данных воспроизведите создание, потерю ответа, повтор уведомления, позднее событие и отмену до передачи. Ожидаемый результат для O-418 — одна внешняя посылка, одна накладная, одно уведомление о каждом значимом событии и сохранённая история.

Затем проведите разрешённый операционный пилот на небольшом контролируемом потоке. Сверяйте журнал магазина, кабинет перевозчика и фактически переданные места. Назначьте человека для очереди исключений и срок её проверки по обещанным отправкам. При дублях, потерянных заявках или расхождении состава временно вернитесь к управляемой ручной обработке; нельзя скрывать ошибку статусом «отправлено».

Чек-лист автоматизации

Весь функционал бесплатно на 3 месяца

Далее 990 рублей в месяц

Создать магазин