Расчёт стоимости доставки через API транспортной компании прямо в личном кабинете
Вы когда-нибудь теряли заказ на последней миле? Клиент добавил товары в корзину, заполнил все поля, но когда дошло до расчёта доставки — бросил оформление. Почему? Потому что цену доставки нужно было узнавать у менеджера: «Перезвоните через 10 минут, я свяжусь с транспортной компанией». В эпоху маркетплейсов и экспресс-доставки ждать даже 5 минут — непозволительная роскошь.
Один из наших клиентов, владелец маркетплейса стройматериалов, терял 40% заказов именно на этом этапе. Покупателям нужно было перевезти гипсокартон или доски, но стоимость доставки рассчитывалась менеджером вручную через API ТК. Мы автоматизировали процесс: в личном кабинете покупатель вводит адрес, выбирает транспортную компанию, нажимает «Рассчитать» — и через секунду видит точную цену. Конверсия в оплаченные заказы выросла на 25%. Расскажу, как это сделать на Falcon Space.
Какие транспортные компании можно подключить
Мы интегрировали API большинства популярных ТК в России и СНГ:
- Деловые Линии, ПЭК, ЖелДорЭкспедиция — для крупногабаритных грузов (стройматериалы, мебель, оборудование).
- СДЭК, Boxberry — для мелких и средних посылок (одежда, электроника, книги).
- Яндекс.Доставка, Достависта — для срочной доставки по городу (еда, цветы, мелкие товары).
- CDEK Global, DPD — для международных отправлений.
У каждой ТК есть публичное API (REST или SOAP), которое позволяет рассчитать стоимость и сроки по заданным параметрам: откуда, куда, вес, объём, тип упаковки, объявленная ценность. Задача — «подружить» API ТК с вашим сайтом на Falcon Space.
Как это работает технически
В платформе Falcon Space есть механизм «внешних действий» — вы можете из SQL-процедуры отправить HTTP-запрос к внешнему API и получить ответ. Именно это нам и нужно.
Вот схема работы:
- Клиент в личном кабинете заполняет форму: город отправления (склад продавца), город назначения (клиента), вес и габариты товаров. Можно также указать тип упаковки, страховку.
- Нажимает кнопку «Рассчитать доставку». Сервер вызывает хранимую процедуру, которая собирает параметры и отправляет POST/GET-запрос к API ТК через внешнее действие.
- API ТК возвращает JSON с вариантами (стандарт, экспресс, с подъёмом на этаж).
- Процедура парсит ответ и возвращает клиенту таблицу с ценами и сроками.
- Клиент выбирает подходящий вариант, он сохраняется вместе с заказом. При оформлении заказа менеджер видит выбранную ТК и стоимость.
Пример SQL-процедуры, которая рассчитывает доставку через СДЭК:
CREATE PROCEDURE [app].[calculate_delivery_cdek]
@from_city nvarchar(100),
@to_city nvarchar(100),
@weight_kg decimal(10,2),
@length_cm int,
@width_cm int,
@height_cm int
AS
BEGIN
-- Формируем JSON-запрос к API СДЭК
DECLARE @json_request nvarchar(MAX) = '{
"sender_city": "' + @from_city + '",
"receiver_city": "' + @to_city + '",
"packages": [{
"weight": ' + CAST(@weight_kg AS nvarchar) + ',
"length": ' + CAST(@length_cm AS nvarchar) + ',
"width": ' + CAST(@width_cm AS nvarchar) + ',
"height": ' + CAST(@height_cm AS nvarchar) + '
}]
}';
-- Отправляем запрос через внешнее действие
SELECT 'send_http' AS action,
'POST' AS method,
'https://api.cdek.ru/v2/calculator/tariff' AS url,
@json_request AS body,
'Bearer YOUR_API_KEY' AS auth_header,
'application/json' AS content_type;
-- Ответ от API придёт во временную таблицу,
-- мы его разберём и вернём пользователю в виде набора строк
-- (в реальной процедуре используется обработка ответа)
END
После получения ответа от ТК результат записывается во временную таблицу, клиент видит варианты на странице. Весь процесс занимает 1-2 секунды.
Реальный кейс: маркетплейс стройматериалов
Клиент — интернет-магазин по продаже гипсокартона, утеплителя, сухих смесей. У них были типичные проблемы:
- Товары тяжёлые и крупногабаритные, доставка стоит от 500 до 5000 рублей в зависимости от удалённости.
- Менеджеры тратили 30-40% рабочего времени на звонки в ТК и расчёт стоимости.
- Клиенты уходили после того, как слышали «мы перезвоним». Конверсия в корзине была 12%.
Мы внедрили API двух ТК — Деловые Линии (для регионов) и ПЭК (для городов-миллионников). Рассчитать доставку можно было прямо в карточке товара и в корзине, без регистрации. В личном кабинете постоянного покупателя автоматически подставлялись прошлые адреса доставки.
Что получили через 2 месяца после внедрения:
- Конверсия из корзины в заказ выросла с 12% до 31%.
- Средний чек увеличился на 15% (клиенты стали добавлять больше товаров, видя, что доставка от 500 руб, а не «как получится»).
- Нагрузка на менеджеров снизилась на 60% — они перестали заниматься расчётами, сосредоточились на продажах и обработке сложных заказов.
- Количество отказов «дорогая доставка» сократилось — клиент видел цену сразу и мог принять решение.
Из отзыва руководителя (устно): «Мы боялись, что API окажется сложным, но за 3 дня всё заработало. Теперь клиенты благодарят за удобство, а менеджеры выдохнули. Falcon Space с внешними действиями — настоящая находка».
Какие данные нужны от пользователя
Чтобы рассчитать доставку, обычно требуется:
- Город отправления и город назначения. Лучше использовать справочник населённых пунктов с ФИАС (интеграция с DaData или КЛАДР).
- Вес товаров (суммарный) — обязательно. Если в корзине несколько товаров, вес суммируется.
- Габариты (длина, ширина, высота) — для крупногабаритных грузов. Можно либо усреднить, либо взять максимальные габариты в корзине.
- Объявленная ценность (для страховки) — обычно равна стоимости заказа.
- Дополнительные услуги (подъём на этаж, занос в квартиру, страховка) — опционально.
Все эти данные можно запросить в личном кабинете при оформлении заказа или хранить в профиле (постоянные адреса).
Сколько времени занимает интеграция
В среднем, подключение одной ТК занимает 1-2 дня работы SQL-разработчика. В стоимость входит:
- Изучение документации API ТК (обычно REST, JSON).
- Написание хранимой процедуры для формирования запроса.
- Настройка внешнего действия и обработка ответа.
- Добавление формы расчёта на страницы сайта (HTML+JS).
- Тестирование на разных городах и весах.
Если вы заказываете интеграцию у нас, цена — 30-50 тыс. рублей за одну ТК (в зависимости от сложности API). Если делаете сами — только ваше время.
Совет: начните с одной ТК, которая покрывает 80% ваших доставок (например, СДЭК для небольших грузов или Деловые Линии для крупных). Потом добавьте вторую как резервную.
Что делать, если API ТК не даёт цену (ошибки и fallback)
Внешние API иногда недоступны или возвращают ошибки (например, город не найден, вес превышает лимит). Нужно предусмотреть fallback-логику:
- Если API вернул ошибку, показать сообщение «Не удалось рассчитать доставку, пожалуйста, свяжитесь с менеджером» и предложить форму обратной связи.
- Если город не найден, дать возможность выбрать город из похожих (нечеткое совпадение) или ввести вручную.
- Кешировать ответы для популярных направлений (например, Москва-СПб) на несколько часов, чтобы не дергать API при каждом расчёте.
Кеширование можно реализовать через отдельную таблицу `delivery_cache` (from_city, to_city, weight_range, price, expires_at). Перед вызовом API проверять, есть ли актуальная запись в кеше.
Продвинутый вариант: автоматический выбор ТК
Когда у вас подключено несколько ТК, можно сделать «умный» выбор:
- Сравнить стоимость и сроки всех ТК, показать клиенту лучшие варианты (по цене, по времени).
- Для каждого товара в корзине учитывать ограничения ТК (например, СДЭК не возит жидкие вещества, ПЭК — да).
- Сделать виджет «доставка от X рублей» на карточке товара, рассчитав минимальную стоимость до города пользователя (если определён).
Всё это реализуется через SQL-процедуры, которые последовательно вызывают API нескольких ТК и сравнивают результаты. Да, время расчёта увеличится до 3-5 секунд, но пользователи готовы подождать ради выбора.
Пример процедуры с вызовом двух ТК (концептуально):
-- Сначала пытаемся получить цену от СДЭК
INSERT INTO #temp_results
EXEC [app].[calculate_delivery_cdek] @params;
-- Если СДЭК вернул ошибку, пробуем ПЭК
IF NOT EXISTS (SELECT 1 FROM #temp_results WHERE error IS NULL)
INSERT INTO #temp_results
EXEC [app].[calculate_delivery_pek] @params;
-- Возвращаем лучший вариант
SELECT TOP 1 * FROM #temp_results WHERE error IS NULL ORDER BY price;
Как убедить клиента оплатить доставку вместе с заказом
Многие маркетплейсы делают оплату доставки отдельно, курьеру. Это создаёт проблемы: отказы от получения, возвраты. Лучше, чтобы доставка оплачивалась сразу вместе с товаром. Для этого нужен точный расчёт доставки на этапе оформления заказа — именно то, о чём мы говорим.
В личном кабинете мы показываем не только стоимость, но и индикацию: «Доставка через ПЭК (2-4 дня), стоимость 890 руб». Клиент видит полную картину и оплачивает всё одной суммой через эквайринг или сплитование.
Для юридических лиц можно добавить вариант «доставка за счёт получателя» (если у них есть договор с ТК). Тогда клиент не платит на сайте, а указывает свой номер договора.
Почему это выгоднее, чем «бесплатная доставка»
Многие магазины закладывают стоимость доставки в цену товара, делая её «бесплатной». Но это искажает цены: клиент в итоге переплачивает, даже если ему доставка не нужна (самовывоз). Честный расчёт доставки на этапе оформления — это прозрачно, и клиенты это ценят.
Кроме того, вы можете монетизировать доставку, добавив небольшую наценку (5-10%) к тарифу ТК. Клиент не заметит, а вам — дополнительная прибыль.
Итог: интеграция API транспортных компаний в личный кабинет на Falcon Space — это не техническая прихоть, а мощный инструмент повышения конверсии. Ваши клиенты получают мгновенный расчёт, не отвлекая менеджеров, и с большей вероятностью завершают покупку. А вы экономите на зарплате и растёте за счёт удовлетворённых покупателей.
Если вам нужна помощь с подключением API ТК или других внешних сервисов — напишите. Мы подберём подходящую ТК, сделаем интеграцию под ключ за 3-5 дней и обучим вашего сотрудника самостоятельно менять тарифы.
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта