Интеграция логистических сервисов СДЭК в мобильное приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция логистических сервисов СДЭК в мобильное приложение
Средний
~3-5 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Интеграция логистических сервисов СДЭК в мобильное приложение

СДЭК — один из крупнейших логистических провайдеров России с развитой API-документацией. Интеграция на первый взгляд стандартная: запрос тарифов, создание заказа, отслеживание. Но у СДЭК есть особенности аутентификации, устаревшие и актуальные версии API одновременно, и несколько разных эндпоинтов для разных задач.

API v2 vs v1: что использовать

СДЭК поддерживает две версии API параллельно. api.cdek.ru/v2/ — актуальная, REST с OAuth2. api.cdek.ru/v1/ — legacy, XML/SOAP, ещё работает, но новые фичи туда не добавляют. Используем только v2.

Аутентификация в v2 — OAuth2 client credentials flow:

POST https://api.cdek.ru/v2/oauth/token
grant_type=client_credentials&client_id=...&client_secret=...

Возвращает access_token с TTL 3600 секунд. Токен кэшируем на клиенте, обновляем за 60 секунд до истечения. Не запрашиваем новый токен на каждый запрос — это медленно и нарушает rate limits.

Тестовая среда: api.edu.cdek.ru/v2/ с тестовыми credentials EMscd6r9JnFiQ3bLoyjJY6eM78JV9wbo / PjLZkKBHEiLK3YsjtNrt3TGNG0ahs3kG из документации. Всегда разрабатываем на тестовой среде.

Ключевые эндпоинты

Расчёт тарифа:

POST /v2/calculator/tariff
{
  "from_location": {"code": 44},  // код города СДЭК, не ФИАС
  "to_location": {"code": 270},
  "packages": [{"weight": 1000, "length": 20, "width": 15, "height": 10}]
}

Возвращает стоимость доставки для каждого тарифа. Коды городов СДЭК — собственный справочник, не совпадает с КЛАДР. Список городов: GET /v2/location/cities.

Список ПВЗ (пунктов выдачи заказов):

GET /v2/deliverypoints?city_code=44&type=PVZ

Возвращает GeoJSON-совместимый список с координатами — можно сразу класть на карту как маркеры.

Создание заказа:

POST /v2/orders

Минимум полей обязателен: тариф, отправитель, получатель, список товаров с весом и размерами, тип доставки (до двери или до ПВЗ). Ответ содержит uuid заказа — сохраняем для дальнейшего отслеживания.

Отслеживание:

GET /v2/orders?uuid=...

или по треку:

GET /v2/orders?cdek_number=...

Возвращает statuses — массив событий с timestamp и описанием на русском.

Реализация на iOS

URLSession или Alamofire. Создаём CDEKApiClient с методами getToken(), calculateTariff(), getPickupPoints(), createOrder(), trackOrder(). Токен храним в Keychain через KeychainWrapper. Не в UserDefaults — это credentials.

Список ПВЗ — кэшируем на сутки в Core Data: пункты выдачи меняются редко, а запрашивать при каждом открытии экрана — лишняя нагрузка на API.

Реализация на Android

Retrofit + OkHttp. Interceptor для автоматической подстановки Authorization: Bearer {token} в каждый запрос. При получении 401 — Authenticator обновляет токен и повторяет запрос автоматически. Это освобождает бизнес-логику от ручного управления токенами.

class TokenAuthenticator(private val tokenRepo: TokenRepository) : Authenticator {
    override fun authenticate(route: Route?, response: Response): Request? {
        val newToken = runBlocking { tokenRepo.refreshToken() }
        return response.request.newBuilder()
            .header("Authorization", "Bearer $newToken")
            .build()
    }
}

Карта ПВЗ

Список пунктов выдачи отображаем на Google Maps с кластеризацией (ClusterManager). При тапе на маркер — BottomSheetDialog с адресом, режимом работы, фото. Поиск ближайшего ПВЗ — через ST_DWithin если фильтруем на сервере, или локально через сортировку по Location.distanceTo().

Срок: три-пять дней — аутентификация, расчёт тарифов, создание заказа, отслеживание, карта ПВЗ.