Первый в России сайт с полным циклом ИИСмотрите презентацию ИИ-сайта продажСайт, которым полностью управляет ИИКонтент, реклама, лиды и аналитика — на автопилоте

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

11 мин чтения
Д

ДаниилТехнический директор AmSales

Отвечает за разработку: сайты, веб-приложения, ИИ-интеграции, приложения для Битрикс24 и бэкенд.

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

Коротко: Для реализации доставки в приложении используется API СДЭК v2 через протокол OAuth2. Основной процесс включает авторизацию через getToken, расчет стоимости через calculateTariff, поиск пунктов через getPickupPoints, создание заказа через createOrder и отслеживание через trackOrder. Важно учитывать требования закона № 265-ФЗ о трансграничной передаче персональных данных, чтобы избежать крупных штрафов.

Кстати, в AmSales мы делаем разработку сайтов и приложений и ИИ-интеграцию и анализ звонков под ключ. Если нужна помощь - напишите нам.

Выбор версии API СДЭК для приложения

Когда бизнес решает внедрить доставку напрямую в интерфейс мобильного приложения, первым делом возникает вопрос: какую версию программного интерфейса использовать? Сейчас на рынке сосуществуют две ветки, и это создает определенную путаницу у разработчиков. На текущий момент (по состоянию на сентябрь 2026 года) актуальной и рекомендуемой является версия API v2 (api.cdek.ru/v2/). Она более современная, структурированная и лучше подходит для высоконагруженных мобильных интерфейсов, где важна скорость отклика.

Несмотря на то, что v2 является стандартом, важно понимать: API v1 и v2 поддерживаются параллельно. Это сделано для того, чтобы компании не переходили на новые рельсы мгновенно, а могли провести тестирование. Однако, если вы начинаете разработку с нуля, использование старой версии - это заведомо проигрышный сценарий. Новая архитектура лучше обрабатывает сложные запросы и имеет более предсказуемую структуру ответов, что критично для мобильного клиента, где любая задержка в отрисовке интерфейса ведет к потере пользователя.

При выборе версии стоит учитывать не только техническую часть, но и скорость поддержки. Разработчики СДЭК фокусируют основные усилия именно на v2. Это означает, что новые фишки, например, расширенные параметры для специфических типов отправлений, будут появляться в первую очередь там. Если ваша мобильная платформа предполагает сложную логистику (международные отправления, специфические габариты), ориентируйтесь исключительно на документацию v2. Ошибка в выборе версии на старте проекта может заставить вас через полгода переписывать половину кода интеграции.

Технический стек приложения должен быть готов к работе с JSON-форматами, которые предоставляет v2. В отличие от старых методов, здесь выше требования к точности передачи параметров. Если вы планируете масштабироваться, сразу закладывайте в архитектуру работу с актуальным методом получения данных, чтобы не столкнуться с депрекацией (удалением) старых методов в будущем.

Методы getToken и авторизация OAuth2

Забудьте о передаче логина и пароля в каждом запросе. В современной версии API СДЭК реализован протокол OAuth2, что является стандартом безопасности для любого серьезного B2B-сервиса. Это значит, что ваше приложение сначала обращается к серверу авторизации, получает временный токен, и уже с этим токеном делает все остальные запросы. Это значительно снижает риски: даже если токен перехватят, он имеет ограниченный срок жизни и не дает прямого доступа к учетным данным вашего личного кабинета.

Процесс начинается с вызова метода getToken. Вашему бэкенду нужно отправить запрос с использованием ваших Client ID и Client Secret, которые вы получаете в личном кабинете СДЭК. В ответ сервер присылает access_token. Этот токен - ваш "пропуск" на время сессии. Важно правильно настроить логику обновления: токен не вечен. Если приложение попытается отправить запрос с просроченным токеном, сервер вернет ошибку 401, и пользователь увидит "пустую корзину" или бесконечную загрузку. Разработчики часто забывают реализовать механизм автоматического обновления токена (refresh token), из-за чего сервис "отваливается" раз в сутки.

Реализация авторизации требует особого внимания к безопасности хранения секретных ключей. Никогда не вшивайте Client Secret напрямую в код мобильного приложения. Любой опытный реверс-инженер сможет вытащить его из скомпилированного файла. Правильный путь: мобильное приложение делает запрос на ваш собственный сервер, сервер добавляет секретный ключ и делает запрос к СДЭК, а затем отдает результат приложению. Так вы защищаете свои коммерческие условия и данные от кражи.

При настройке авторизации также стоит учитывать лимиты (rate limits) на запросы к методу getToken. Хотя они и не являются критическими при стандартном использовании, массовые попытки авторизации при резком всплеске трафика могут привести к временной блокировке вашего IP. Поэтому кэширование токена на стороне вашего сервера - это не роскошь, а необходимость для обеспечения стабильной работы приложения.

Алгоритм расчета тарифа и логистики

Самый важный момент для конверсии в приложении - это цена доставки. Пользователь не будет покупать товар, если не понимает, во сколько ему обойдется доставка. Для этого используется метод calculateTariff. Это не просто "калькулятор", а сложный процесс, где система учитывает множество факторов. Чтобы расчет был точным, приложению нужно передать вес, габариты (длина, ширина, высота) и пункт отправления/получения.

Процесс автоматизации доставки в приложении обычно выглядит следующим образом:

  1. Пользователь выбирает товары в корзине.
  2. Система суммирует их вес и определяет объем (объемный вес - критический параметр).
  3. Приложение вызывает метод расчета тарифа, передавая параметры груза.
  4. Сервер СДЭК возвращает список доступных вариантов: курьер, ПВЗ, экспресс-доставка и т.д. с указанием стоимости и сроков.

Здесь кроется одна из главных технических ловушек: учет объемного веса. Многие новички забывают, что логистические компании считают стоимость по большему значению: либо по реальному весу, либо по объему (длина * ширина * высота / коэффициент). Если ваше приложение передает только реальный вес, клиент получит в приложении одну цену, а при оформлении заказа в системе СДЭК цена может подскочить из-за габаритов. Это прямой путь к негативным отзывам и возвратам.

Настройка api сдэк расчет тарифа также требует учета региональных коэффициентов и специфики конкретных маршрутов. Рекомендуется делать предварительный расчет сразу, как только пользователь ввел свой город или ZIP-код, не дожидаясь этапа оформления заказа. Это делает процесс покупки бесшовным. Если клиент видит цену доставки еще в корзине, уровень брошенных корзин заметно снижается.

Получение пунктов выдачи через getPickupPoints

Удобство получения - это то, за что клиенты любят СДЭК. Для мобильного приложения критически важно предоставить удобную карту или список пунктов выдачи. Для этого используется метод getPickupPoints. Он позволяет получить координаты, адреса и даже режим работы выбранных точек. В современных приложениях это реализуется через интеграцию с картами (Google Maps, Yandex Maps), где на карте отображаются маркеры ПВЗ.

Метод getPickupPoints принимает на вход координаты (широту и долготу) текущего местоположения пользователя или выбранный город. Важно реализовать фильтрацию: пользователь хочет видеть только те пункты, которые работают сейчас, или те, где есть возможность хранения посылки более 3 суток. Также не забудьте про фильтрацию по типу: не всем нужны только пункты выдачи, кому-то удобнее курьерская доставка. Приложение должно уметь обрабатывать массив данных и быстро отрисовывать его на карте.

Одной из проблем при реализации этого функционала является обработка "пустых" зон. Если пользователь находится в удаленном населенном пункте, где нет ПВЗ СДЭК, метод может вернуть пустой массив или очень ограниченный список. В этом случае интерфейс приложения должен корректно объяснить пользователю, что ближайшая доставка возможна только курьером или в ближайший крупный город. Нельзя просто показывать "Пунктов выдачи не найдено" - это убивает продажи.

Технический нюанс: при получении списка точек всегда запрашивайте не только адрес, но и ID пункта. Именно этот ID будет использоваться в дальнейшем методе создания заказа. Ошибка в ID пункта при передаче в API приведет к тому, что посылка уйдет не туда, и автоматизация доставки в приложении превратится в ручной разбор претензий службы поддержки.

Создание заказа и трекинг через API

Когда клиент нажал кнопку "Оплатить", начинается самый ответственный этап - создание заказа. Метод createOrder превращает виртуальную корзину в реальную накладную. Здесь передаются все данные: от состава заказа до контактных данных получателя. Важно, чтобы данные о получателе (ФИО, телефон, email) были валидированы на стороне приложения еще до отправки запроса, чтобы не тратить ресурсы API на заведомо ошибочные запросы.

После успешного создания заказа API возвращает уникальный номер накладной (tracking number). Это ключевой идентификатор. С этого момента приложение переходит в режим трекинга. Метод trackOrder позволяет в реальном времени получать статус посылки: "Принято", "В пути", "Прибыло в пункт выдачи", "Ожидает получения". Клиент должен иметь возможность зайти в свой личный кабинет в приложении и увидеть актуальный статус без звонков на горячую линию.

Для улучшения пользовательского опыта рекомендуется настроить Push-уведомления. Приложение должно само узнавать об изменении статуса через webhook-и или периодический опрос API и мгновенно уведомлять клиента. Например, "Ваш заказ прибыл в ПВЗ на ул. Ленина, 10". Это создает ощущение контроля над покупкой и повышает лояльность к бренду. Однако помните: слишком частые уведомления могут раздражать, настройте логику так, чтобы уведомления были только по действительно важным этапам.

Важный момент: при создании заказа через API важно правильно передать информацию о стоимости товара. Если вы используете наложенный платеж, параметры оплаты должны быть четко синхронизированы с вашей внутренней учетной системой (например, 1С или МойСклад). Любое расхождение в сумме заказа и сумме накладной СДЭК приведет к финансовым потерям и невозможности корректного закрытия сделки.

Соблюдение закона № 265-ФЗ о ПДн

Работа с доставкой неразрывно связана с обработкой персональных данных (ПДн): ФИО, телефон, адрес проживания. С вступлением в силу закона № 265-ФЗ (от 26.07.2026) требования к обработке данных стали еще жестче, особенно в части трансграничной передачи. Теперь недостаточно просто иметь "Политику конфиденциальности" на сайте. Вы должны четко понимать, куда и как уходят данные ваших клиентов.

Согласно новым требованиям, если ваше приложение использует облачные серверы, расположенные за пределами РФ (например, AWS или Azure), вы обязаны соблюдать правила трансграничной передачи. Важнейшее изменение: теперь перечень стран с "адекватной защитой" формирует Роскомнадзор, и старые списки могут быть неактуальны. До подачи уведомления о трансграничной передаче оператор обязан собрать сведения о правовом регулировании ПДн в иностранном государстве. Это сложный юридический процесс, который нельзя игнорировать.

При использовании интеграции СДЭК важно помнить о первичном сборе данных. Согласно российской практике, первичный сбор и хранение ПДн должны происходить на серверах, расположенных на территории РФ. Сначала вы собираете данные пользователя в своей базе (в РФ), и только потом, для целей доставки, передаете их через API в логистическую систему. Прямая передача данных напрямую с телефона клиента на зарубежный сервер (если таковой имеется у логиста) может быть расценена как нарушение, если не соблюдены все условия закона.

Также не забывайте про необходимость отдельного уведомления в Роскомнадзор о трансграничной передаче. Это не заменяет общее уведомление о начале обработки ПДн, а является самостоятельным документом. Для бизнеса это означает необходимость регулярного аудита потоков данных в приложении. Если вы используете сторонние аналитические сервисы (Firebase, AppsFlyer), они тоже являются участниками передачи данных, и их влияние на вашу комплаенс-нагрузку должно быть учтено.

Риски и штрафы за нарушение правил

Игнорирование правил работы с персональными данными - это не просто "юридический риск", это реальная угроза существованию бизнеса. Штрафы за нарушение законодательства о ПДн в 2026 году стали существенно выше. Если раньше компании могли отделаться предупреждениями, то теперь санкции бьют по кошельку напрямую. За несоблюдение правил обработки данных по ч. 2 ст. 13.11 КоАП РФ предусмотрены внушительные штрафы.

Для юридических лиц ситуация выглядит следующим образом:

Тип нарушения Штраф для ЮЛ Штраф для ИП
Первичное нарушение (общие правила) 300 000 - 700 000 руб. 100 000 - 300 000 руб.
Повторное нарушение до 1,5 млн руб. до 1 млн руб.

Помимо прятных для государства штрафов, существуют операционные риски. В случае утечки данных или выявления нарушений регулятором (Роскомнадзором), приложение может быть заблокировано на территории страны. Это означает мгновенную остановку продаж и потерю репутации. Клиенты становятся крайне чувствительны к безопасности данных: если ваше приложение "потеряло" адрес и телефон клиента, восстановить доверие будет практически невозможно.

Также стоит учитывать риски, связанные с некорректной работой API. Если из-за ошибки в коде (например, неверная передача данных о габаритах) стоимость доставки рассчитается неверно, вы несете прямые убытки. Клиент ожидает дешевую доставку, а фактически вы платите СДЭК за объемный груз из своего кармана. Поэтому технический аудит интеграции должен включать не только проверку безопасности данных, но и стресс-тесты на корректность расчетов.

Типичные ошибки при внедрении доставки

Процесс интеграции СДЭК в мобильное приложение - это не только написание кода, но и настройка бизнес-процессов. Ошибки часто возникают на стыке технологий и логистики. Рассмотрим самые распространенные из них, чтобы вы могли их избежать.

Первая и самая частая ошибка - отсутствие учета объемного веса. Как мы уже говорили, это ведет к финансовым расхождениям. Вторая ошибка - плохая обработка ошибок API. Если сервер СДЭК временно недоступен или вернул ошибку, приложение не должно "зависать". Оно должно вежливо сообщить пользователю: "Сервис расчета доставки временно недоступен, попробуйте позже", и дать возможность продолжить покупку без учета доставки (или с фиксированной стоимостью, если это заложено в вашей бизнес-модели).

Третья ошибка - избыточный сбор данных. Не нужно просить пользователя заполнить паспортные данные на этапе корзины, если это не требуется для доставки. Чем меньше данных вы собираете "про запас", тем меньше ваша ответственность и риски по закону № 265-ФЗ. Собирайте только то, что действительно необходимо для создания заказа (ФИО, телефон, адрес/ПВЗ).

Четвертая ошибка - отсутствие синхронизации статусов. Если в приложении статус заказа "В пути", а по факту он уже в пункте выдачи, это создает негативный опыт. Это происходит, когда приложение полагается только на локальную базу данных и не делает регулярных проверок через API. Автоматизация должна быть полной: от момента нажатия кнопки "Купить" до момента, когда курьер забирает товар у склада.

В заключение, вот что стоит запомнить:

  • Всегда используйте API v2 и OAuth2 для безопасности и актуальности.
  • Учитывайте объемный вес при расчете тарифа, чтобы избежать убытков.
  • Следите за требованиями закона № 265-ФЗ о трансграничной передаче ПДн.
  • Реализуйте обработку ошибок и уведомления о статусах через Push.
  • Храните персональные данные на серверах в РФ.

← Все статьи
Поделиться:

Хотите так же?

Начнём с бесплатной диагностики: покажем, где теряются деньги и как система продаж, AI и автоматизация ускорят рост.