Частичный ответ: как сохранить доступные тарифы

Одна служба не ответила — остальные тарифы остаются полезными. Разбираем rates, unavailable и условия списания запроса.

У перевозчиков независимые сбои

В одном расчёте Почта России может ответить, ПЭК вернуть тариф, а другая служба превысить таймаут. Ожидать успешного ответа от всех служб как единственного корректного исхода — значит скрывать уже полученные варианты доставки.

Доставометр обращается к службам параллельно и возвращает доступные тарифы вместе с причинами недоступности остальных.

rates и unavailable решают разные задачи

rates — то, что можно показать пользователю как предварительное предложение. unavailable — диагностика по конкретным службам. Непустой unavailable не делает непустой rates ошибочным.

Не показывайте техническое сообщение покупателю

На checkout достаточно «Тариф этой службы временно недоступен». Внутри интеграции сохраните код причины и request_id. Не выдавайте внутренние детали перевозчика в клиентском интерфейсе.

Когда списывается запрос

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

Повторяйте только нужное

Ошибку 422 нужно исправлять, а не повторять с задержкой. Для 429 следуйте Retry-After. После сетевого сбоя используйте прежний Idempotency-Key и то же тело: это одна операция, а не новый расчёт.

Не сортируйте неизвестный срок как ноль

Если дни неизвестны, сортируйте такие варианты отдельно либо только по цене. Нулевой срок создаёт ложное обещание мгновенной доставки.

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

Проверьте API в своём проекте

Получите 100 запросов к API бесплатно после подтверждения email.

Начать бесплатно