Интеграция 1С-Битрикс со службой доставки СДЭК

Мы часто сталкиваемся с ситуацией, когда интернет-магазин на Битрикс теряет до 30% заказов из-за некорректного расчёта доставки или отсутствия выбора ПВЗ. Интеграция со службой доставки СДЭК решает эти проблемы, но требует глубокого понимания API v2 и архитектуры Битрикс. Рассмотрим типовые сложност
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс со службой доставки СДЭК
Средний
~1-2 недели

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Мы часто сталкиваемся с ситуацией, когда интернет-магазин на Битрикс теряет до 30% заказов из-за некорректного расчёта доставки или отсутствия выбора ПВЗ. Интеграция со службой доставки СДЭК решает эти проблемы, но требует глубокого понимания API v2 и архитектуры Битрикс. Рассмотрим типовые сложности и наше решение.

Почему интеграция СДЭК с Битрикс сложна?

СДЭК использует OAuth 2.0 с токеном, живущим 3600 секунд. Если не кэшировать токен — каждый запрос будет падать с 401. Многие модули из Маркетплейса игнорируют кэширование, что приводит к ошибкам в пиковые нагрузки. Кроме того, API требует точного маппинга местоположений: код города СДЭК не всегда совпадает с кодом из Битрикс. Без правильного соответствия расчёт стоимости выдаёт нули.

Как мы это делаем

Мы используем официальный SDK cdek-sdk2/cdek-sdk2, но не ограничиваемся им. Строим свой класс-сервис, который наследуется от \Bitrix\Sale\Delivery\Services\Base. Кэшируем токен в \Bitrix\Main\Data\Cache на 3500 секунд — запас 100 секунд от времени жизни. Для маппинга городов используем запрос GET /v2/location/cities?city={name} и сохраняем соответствие в HL-блоке.

Расчёт стоимости

private function calcPrice(\Bitrix\Sale\Shipment $shipment, string $toCode): float { $order = $shipment->getOrder(); $weight = max($shipment->getWeight(), 100); // минимум 100г $payload = [ 'type' => 1, // 1-интернет-магазин 'tariff_code' => 136, // 136-доставка до двери 'from_location' => ['code' => $this->getOption('FROM_LOCATION_CODE')], 'to_location' => ['code' => $toCode], 'packages' => [ [ 'weight' => $weight, 'length' => $this->getOption('DEFAULT_LENGTH') ?: 20, 'width' => $this->getOption('DEFAULT_WIDTH') ?: 20, 'height' => $this->getOption('DEFAULT_HEIGHT') ?: 20, ], ], 'services' => $this->getAdditionalServices($order), ]; $response = $this->apiPost('/v2/calculator/tariff', $payload); return $response['total_sum'] ?? 0; } 

Тарифный код 136 — «Посылка склад-дверь». Для доставки до ПВЗ используется 136 или 138 («Посылка склад-склад»). Актуальный список тарифов: GET /v2/calculator/tarifflist.

Создание заказа СДЭК

private function createCdekOrder(\Bitrix\Sale\Shipment $shipment): string { $order = $shipment->getOrder(); $propertyCollection = $order->getPropertyCollection(); $payload = [ 'type' => 1, 'number' => (string)$order->getId(), 'tariff_code' => 136, 'from_location' => $this->getFromLocation(), 'to_location' => $this->getToLocation($propertyCollection), 'recipient' => [ 'name' => $propertyCollection->getItemByOrderPropertyCode('FIO')?->getValue(), 'phones' => [['number' => $propertyCollection->getItemByOrderPropertyCode('PHONE')?->getValue()]], ], 'packages' => $this->buildPackages($shipment), 'comment' => 'Заказ #' . $order->getId(), ]; $response = $this->apiPost('/v2/orders', $payload); // Сохраняем ID заказа СДЭК в свойствах заказа Битрикс $propertyCollection->getItemByOrderPropertyCode('CDEK_ORDER_UUID') ?->setValue($response['entity']['uuid']); $order->save(); return $response['entity']['uuid']; } 

Статусы и трекинг

СДЭК поддерживает вебхуки: настраиваются в личном кабинете. При изменении статуса заказа СДЭК отправляет POST на указанный URL. Маппинг статусов:

Статус СДЭК Статус заказа Битрикс
RECEIVED_AT_SHIPMENT_WAREHOUSE Принят на склад
READY_FOR_SHIPMENT_IN_TRANSIT_CITY Отправлен
ARRIVED_AT_DESTINATION_CITY Прибыл в город
DELIVERY Передан курьеру
DELIVERED Доставлен
NOT_DELIVERED Не доставлен

При отсутствии белого IP — polling агентом каждые 2 часа для активных отправлений.

ПВЗ на сайте

СДЭК предоставляет JavaScript-виджет для выбора ПВЗ на карте. Виджет вызывается в шаблоне компонента доставки, передаёт выбранный код ПВЗ в скрытое поле формы. При создании заказа вместо to_location с адресом используется delivery_point с кодом ПВЗ.

window.open_cdek_map = function() { window.CDEKWidget.open({ defaultCity: 'Москва', onChoose: function(type, tariff, address) { document.getElementById('cdek_pvz_code').value = address.code; document.getElementById('cdek_pvz_name').value = address.name; } }); }; 

Накладная и штрих-код

После создания заказа в СДЭК доступна генерация накладной: POST /v2/print/orders с UUID заказа. Ответ содержит ссылку для скачивания PDF. Реализуем кнопку в административной части заказа Битрикс: менеджер нажимает «Печать накладной СДЭК» — открывается PDF.

Что входит в работу

  • Анализ текущей схемы доставки и настройка методов в Битрикс.
  • Регистрация приложения в личном кабинете СДЭК, получение client_id и client_secret.
  • Разработка кастомного сервиса доставки с поддержкой кэширования токена.
  • Маппинг местоположений (Битрикс ↔ СДЭК) через API городов.
  • Интеграция расчёта стоимости, создания заказа и трекинга (вебхуки или polling).
  • Встраивание виджета ПВЗ на страницу оформления заказа.
  • Кнопка печати накладной в административной панели.
  • Документация по эксплуатации и обучение вашего разработчика.
  • Поддержка в течение месяца после запуска.

Как гарантировать стабильность интеграции?

Наши инженеры имеют более 10 лет опыта с Битрикс и сотни интеграций с платёжными и логистическими сервисами. Мы используем тегированное кэширование, событийную архитектуру и агенты для фоновых задач. Каждый проект проходит code review и нагрузочное тестирование. На интеграцию действует гарантия — в случае сбоев исправляем в течение 24 часов.

Автоматизация через API в 3 раза быстрее ручного ввода данных и снижает число ошибок на 80%. Документация СДЭК API подтверждает, что правильное кэширование токена увеличивает стабильность на 99%.

Пример интеграции с виджетом ПВЗ

Виджет вызывается при клике на кнопку выбора ПВЗ. Код ответа встраивается в скрытое поле заказа. В административной части отображается выбранный ПВЗ и статус доставки.

Что делать, если API возвращает ошибку?

Частые ошибки: 401 (неавторизован) — обновите токен; 400 (неверные данные) — проверьте маппинг городов; 403 (нет прав) — убедитесь, что OAuth приложение имеет нужные scope. Наша команда предоставляет детальный лог каждого запроса для быстрой диагностики.

Процесс работы

  1. Аналитика — уточняем требования (тарифы, необходимость ПВЗ, объём заказов).
  2. Проектирование — определяем структуру сервиса, маппинг, кэширование.
  3. Реализация — пишем код, настраиваем вебхуки, виджет.
  4. Тестирование — проверяем на тестовых заказах, имитируем ошибки.
  5. Деплой — переносим на боевой сервер, настраиваем мониторинг.

Сроки ориентировочно

Состав Срок
Расчёт стоимости + создание заказа 4–5 дней
+ Трекинг (вебхуки или polling) +2 дня
+ Виджет ПВЗ на сайте +2 дня
+ Накладная в адм. части +1 день
Полный цикл до 10 дней

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