Интеграция логистических сервисов Почты России в мобильное приложение
Почта России предоставляет REST API для трекинга отправлений, расчёта тарифов, оформления заказов на доставку и генерации этикеток. Документация есть, но работа с ней требует понимания ряда неочевидных ограничений.
API Почты России: что доступно
Официальный портал разработчика — otpravka.pochta.ru. Два основных раздела:
Отправка (Отправка API): создание заказов, оформление партий, генерация PDF-этикеток, расчёт стоимости доставки. Требует договор с Почтой России и выпуск токена через личный кабинет.
Трекинг (Tracking API): отслеживание отправлений по трек-номеру. Доступен в двух режимах — Single (один запрос на один трек-номер, лимит 100 запросов в сутки) и Batch (до 3000 трек-номеров за запрос, требует отдельного соглашения).
Авторизация и типичные ошибки
Авторизация через Basic Auth: Authorization: Basic base64(login:password) плюс заголовок X-User-Authorization: Basic base64(token). Два разных заголовка — это первое, на чём спотыкаются. Токен из личного кабинета — не пароль пользователя.
Расчёт тарифов (POST /1.0/tariff) принимает object-type (посылка, бандероль, письмо), вес в граммах, индексы отправителя и получателя. Возвращает стоимость в копейках — делим на 100. Без перевода единиц приложение покажет цену в 100 раз больше реальной.
Адресные данные. API требует индексы в формате ФИАС или почтовые индексы из справочника Почты России. Произвольный адрес «ул. Ленина, 5» API не поймёт — нужна предварительная нормализация через сервис адресных подсказок.
Реализация трекинга в мобильном приложении
Трекинг — самая востребованная функция. Запрос на получение статусов:
POST https://tracking.russianpost.ru/rtm34?wsdl
Важно: Tracking API работает через SOAP, а не REST. Для мобильного приложения оборачиваем в backend-прокси — парсить SOAP на устройстве громоздко, проще возвращать клиенту чистый JSON.
Список операций (статусов) для одного отправления может содержать 20+ записей. На экране показываем последний статус и краткую историю. Коды операций и атрибутов публичные, но расшифровка — в отдельном справочнике на портале разработчика.
Фоновое обновление статусов
Трекинг обновляем не по запросу пользователя, а в фоне: на iOS — BGAppRefreshTask, на Android — WorkManager с PeriodicWorkRequest с интервалом не менее 15 минут. При изменении статуса отправляем локальный пуш-нотификацию.
Кэшируем список трек-номеров и последние статусы локально — пользователь должен видеть данные даже без интернета.
Генерация этикеток
Если приложение используется для отправки посылок (e-commerce, маркетплейс), нужен полный цикл: создание заказа → формирование партии → запрос этикетки (PDF, формат F7 или F7п). Этикетку можно печатать на термопринтере через Bluetooth — на iOS используем UIPrintInteractionController, на Android PrintManager. Интеграция с принтерами Zebra или Honeywell через их SDK добавляет ещё 2-3 дня к сроку.
Сроки: интеграция трекинга — 5-7 дней. Полный цикл отправки с генерацией этикеток — 2-3 недели.







