РазделВеб-разработка
Чтение8 мин
Дата19 октября 2026
ФорматПрактическая статья
Разделите интеграцию на четыре процесса
- получение/обновление справочника ПВЗ;
- расчёт доступных тарифов;
- создание отправления после заказа;
- синхронизация статусов и трек-номера.
Что лучше не делать в реальном времени
| Операция | Рекомендация |
|---|---|
| ПВЗ | кэшировать локально |
| Расчёт тарифа | запрашивать по актуальной корзине |
| Создание отправления | после фиксации заказа |
| Статусы | webhook/polling по регламенту |
| Справочники городов | локальный кэш/обновление |
| Повтор создания | защищать external order id |
Checkout должен пережить временный сбой API
Если сервис доставки временно недоступен, пользователь не должен терять заполненную корзину. Сохраняйте локальный заказ/черновик и показывайте понятный статус: расчёт доставки временно недоступен, а не «неизвестная ошибка».
Пример структуры локального заказа
JSON
{
"order_id": 12345,
"delivery_provider": "cdek",
"delivery_tariff_id": 999,
"pickup_point_code": "ABC1",
"delivery_price": 450,
"external_delivery_id": null,
"delivery_status": "pending_create"
}ПВЗ и тариф должны соответствовать друг другу
После выбора ПВЗ перепроверяйте, что пункт доступен для нужного типа отправления и тарифа. Не доверяйте только данным, которые пришли из браузера: сервер должен валидировать delivery price и выбранный ПВЗ.
Отслеживание статуса
Храните внешний идентификатор отправления и историю ключевых статусов. Клиенту полезнее видеть понятные стадии заказа, чем внутренние коды API.
Что проверять перед запуском
| Сценарий | Проверка |
|---|---|
| Несколько товаров | вес/габариты считаются правильно |
| ПВЗ закрыт/изменён | выбор обновляется |
| API timeout | заказ не теряется |
| Повтор создания | нет второй накладной |
| Статус доставки | обновляется в заказе |
| Изменение состава корзины | тариф пересчитан |