Разработка калькулятора доставки с интеграцией СДЭК и Почты России

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

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

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

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

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

Почему калькулятор доставки на сайте считает неверно

Калькулятор доставки почти всегда расходится с реальностью не из-за ошибки в формуле, а из-за данных, на которых он считает. Тарифная сетка перевозчика меняется чаще, чем её успевают переносить в код: пока менеджер вручную правит прайс в админке, служба уже ввела топливную надбавку или переписала зоны. В итоге расчёт стоимости доставки на сайте показывает одну сумму, а в накладной при отгрузке всплывает другая — и разницу клиенту объясняет оператор, а не сайт.

Вторая причина — габариты. Клиент вводит «коробка, примерно небольшая», а перевозчик считает объёмный вес по трём измерениям и сравнивает его с фактическим. Если калькулятор берёт только массу, посылка 40×30×20 см с лёгким наполнителем уедет по цене килограмма, а перевозчик выставит счёт по объёмному весу. Дальше — зоны и сроки: часть направлений идёт по магистральному тарифу, часть — по местному, а пригород и вовсе считается отдельно.

Третья причина — ручной ввод. Менеджер подставляет город, индекс или способ получения руками, и там, где нужен точный код населённого пункта, появляется «примерно рядом». Интеграция службы доставки по справочнику и API убирает этот слой: адрес нормализуется, зона определяется автоматически, тариф запрашивается в момент оформления, а не берётся из кэша недельной давности.

Отдельно стоит расхождение по доплатам — страховка, забор из пункта выдачи, доставка до двери, негабарит. Если калькулятор их не учитывает, ошибки в расчёте доставки копятся на каждом заказе и всплывают уже в бухгалтерии. Разбираем, как это закрывается на уровне архитектуры расчёта.

Как работает калькулятор доставки с интеграцией СДЭК и Почты России

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

Нормализация ответов служб

Каждый ответ API служб доставки маппится в общую модель: срок в днях, признак «до двери или до пункта выдачи», ограничения по габаритам. Это снимает главную боль — когда фронтенд начинает ветвиться по имени перевозчика. Сроки пересчитываются с учётом даты отгрузки и выходных, иначе «3 дня» в пятницу и в понедельник означают разное.

Кэш и деградация

Тарифы кэшируются по ключу «маршрут + вес + габаритный класс» на короткое окно. Это срезает повторные запросы при переборе корзины и держит расчёт в пределах секунды. Если служба не ответила, показываем последний известный тариф с пометкой «предварительно» — покупатель не теряет корзину из-за чужого сбоя.

Негабарит и удалённые зоны

Тяжёлые и объёмные позиции уходят в отдельную ветку: часть служб их не берёт, часть считает по volumetric weight. Удалённые зоны помечаются как «доставка до пункта выдачи» — иначе клиент выбирает курьера, которого там нет.

Вариант Когда подходит Ограничения
Онлайн-запрос к API служб Актуальные тарифы, частые изменения Зависимость от доступности чужого сервиса
Свой справочник тарифов Стабильные маршруты, высокая нагрузка Устаревает при смене прайса перевозчика
Гибрид: кэш + онлайн Большинство интернет-магазинов Нужна логика деградации и фолбэка

СДЭК и Почта России отдают тарифы через официальные интерфейсы, поэтому расчёт не приходится поддерживать вручную.

Этапы внедрения калькулятора доставки на сайт

Внедрение калькулятора доставки начинается не с кода, а с аудита текущей логистики: какие службы уже используются, как считаются тарифы, где менеджеры вручную пересчитывают стоимость и на каких заказах расчёт расходится с фактом. На этом этапе фиксируем правила — откуда берётся вес и габариты, как учитываются зоны, наложенный платёж, объявленная ценность и примерка. Без согласованных тарифных правил настройка расчёта доставки превращается в бесконечные правки после запуска.

Дальше работа идёт этапами, каждый заканчивается проверяемым результатом:

  1. Аудит логистики и сбор требований — разбираем текущие заказы, находим расхождения между расчётной и фактической стоимостью, фиксируем перечень служб и способов доставки.
  2. Согласование тарифных правил — описываем матрицу «зона / вес / габариты / срок», правила округления, пороги бесплатной доставки и надбавки. Правила утверждает заказчик до начала разработки.
  3. Проектирование интеграции — определяем, какие данные уходят в службы доставки, как кэшируются ответы, что показываем клиенту, если служба недоступна или вернула ошибку.
  4. Настройка расчёта — подключаем справочники городов и пунктов выдачи, связываем корзину с тарифами, настраиваем поведение калькулятора при изменении состава заказа.
  5. Тестирование интеграции — прогоняем реальные заказы: разные веса, негабарит, дальние зоны, несколько служб в одном заказе. Сверяем расчёт с фактическими накладными.
  6. Обработка отказов — проверяем, что происходит при недоступности службы: клиент видит понятное сообщение, заказ не теряется, менеджер получает уведомление.
  7. Передача документации — отдаём схему интеграции, матрицу тарифов, инструкцию по правке правил и регламент обновления справочников.

Ключевой момент — тестирование на реальных заказах, а не на тестовых данных: именно там всплывают расхождения по объёмному весу и негабариту. После сдачи заказчик может менять пороги и надбавки самостоятельно, без обращения к разработчику. Опишите вашу логистику — вернёмся с оценкой и планом по этапам.

Чем отличается расчёт через API СДЭК от расчёта через Почту России?

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

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

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

Возврат ошибок — самый недооценённый участок. API СДЭК отдаёт структурированные коды и понятные причины отказа, API Почты России чаще возвращает общий признак ошибки, и расшифровывать его приходится по контексту запроса. Поэтому в калькуляторе нужен слой нормализации: обе службы приводятся к одному набору состояний — «рассчитано», «недоступно для этого направления», «превышены ограничения», «сервис недоступен». Тогда интерфейс не зависит от того, какая служба ответила, а клиент видит внятную причину вместо пустого блока с ценой.

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

Кейс: как калькулятор доставки сократил время оформления заказа

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

Что изменили

Собрали калькулятор доставки, который на странице оформления сам обращается к API перевозчиков и отдаёт клиенту точную цену и срок. Логика расчёта вынесена на сервер: браузер отправляет только адрес и состав корзины, а вес, габариты и тариф подставляются из карточек товаров и справочника перевозчика.

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

Метрики до и после

Показатель До После
Время оформления заказа 20-40 минут с участием менеджера 2-3 минуты без менеджера
Точность расчёта ручной пересчёт, расхождения при негабарите цена и срок совпадают с итоговой накладной
Доля заказов с пересчётом доставки каждая вторая заявка единичные случаи
Нагрузка на менеджеров ручной расчёт по каждой корзине только спорные и нестандартные отправления

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

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

Что если перевозчик поменяет тарифы? Тарифная сетка и правила расчёта вынесены в конфигурацию, а не зашиты в код — обновление занимает минуты без релиза.

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

Сомнения перед внедрением: совместимость, миграция, откат

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

Что если уже есть свой расчёт? Оставляем его как источник тарифов по умолчанию и переводим на API СДЭК и Почты России только те направления, где нужна точная стоимость по весу и габаритам. Как переносить данные? Историю заказов и справочник зон выгружаем в промежуточный формат, сверяем построчно и заливаем в новую структуру — расхождения по каждой позиции фиксируем в отчёте. Можно ли откатиться? Да: конфигурация версионируется, переключение на прежний расчёт — одна правка без выката нового кода.

Какие доступы нужны для интеграции?

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

На руки вы получаете: схему потока расчёта с точками отказа, конфигурацию тарифов и зон, политику кеширования ответов API, скрипт миграции справочников, инструкцию по переключению и откату, чеклист проверки перед запуском и документацию по доставке для поддержки.

Опишите текущий расчёт и стек сайта — вернёмся с оценкой и планом работ.

Сроки внедрения калькулятора доставки: этапы и ориентиры

Сроки зависят не от количества перевозчиков, а от состояния каталога и того, насколько предсказуемо ведут себя их API. Если у товаров уже есть габариты и вес, а склад один — проектирование и настройка идут быстрее. Если вес считается по формуле из характеристик, а часть позиций едет из нескольких точек, добавляется этап нормализации данных, и он же чаще всего определяет общий срок.

Этапы идут с частичным перекрытием: настройка начинается, пока согласуются правила расчёта, а тесты по регионам запускаются до полной готовности интерфейса. Поэтому суммарный срок — обычно 3–5 недель, а не сумма строк таблицы. Отдельно стоит заложить время на доступы: получение боевых ключей и согласование договора с перевозчиком идёт параллельно и иногда занимает больше, чем сама разработка.

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

  • Заказывают интеграцию только с одной службой доставки, а потом выясняется, что половина регионов оформляет заказы вручную — калькулятор считает «не туда» и покупатель видит чужой тариф
  • Передают разработчику прайс-лист в виде таблицы, которую менеджер обновляет вручную: при первом же изменении тарифов на стороне перевозчика расчёт расходится с реальной стоимостью отправки
  • Не учитывают вес и габариты упаковки — считают по весу товара, а перевозчик тарифицирует объёмный вес, и разницу доплачивает магазин
  • Ожидают, что калькулятор сам определит город по введённому адресу без справочника и подсказок: покупатель ошибается в написании, расчёт уходит в никуда, заказ теряется
  • Забывают про сценарий «служба недоступна»: при сбое на стороне перевозчика форма оформления зависает или показывает пустую стоимость вместо запасного варианта
  • Не продумывают поведение калькулятора для негабаритных, хрупких и складских позиций — универсальный тариф применяется ко всему, и часть заказов уходит в минус по доставке
  • Не фиксируют в договоре, кто отвечает за актуальность тарифов и справочников после запуска: обновления ложатся на плечи магазина, а расхождения всплывают уже в претензиях покупателей

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060