Інтеграція 1С-Бітрікс зі службою доставки СДЕК Білорусь

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс зі службою доставки СДЕК Білорусь
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 1С-Бітрікс зі службою доставки СДЕК (Білорусь)

СДЕК працює в Білорусі через місцеве представництво з тією самою інфраструктурою та тим самим API v2, що і в Росії. Принципові відмінності при інтеграції для білоруських магазинів: валюта — білоруський рубль (BYN), коди локацій інші, ПДВ 20%, і при розрахунках потрібно враховувати різні тарифи для внутрішньобілоруських і транскордонних відправлень.

API СДЕК для Білорусі: те саме, але інше

Технічно API ідентичне російському: ті самі ендпоінти, той самий OAuth 2.0, та сама структура запитів. Базовий URL той самий: https://api.cdek.ru/v2/ (СДЕК використовує єдиний API для всіх країн). Але при реєстрації в особистому кабінеті потрібен білоруський акаунт — client_id і client_secret від білоруського договору.

Ключова відмінність при розрахунку: коди міст (cityId і code у location) для Білорусі відрізняються від російських. Мінськ у базі СДЕК — це не Москва.

// Отримуємо код Мінська
$response = $this->apiGet('/v2/location/cities', [
    'country_codes' => ['BY'],
    'city'          => 'Минск',
]);
// $response[0]['code'] — код для використання в запитах

Розрахунок для внутрішньобілоруських відправлень

protected function calculateConcrete(
    \Bitrix\Sale\Shipment $shipment
): \Bitrix\Sale\Delivery\CalculationResult {
    $result = new \Bitrix\Sale\Delivery\CalculationResult();

    $toCode = $this->getLocationCode($shipment, 'BY');
    if (!$toCode) {
        $result->addError(new \Bitrix\Main\Error('Місцезнаходження не визначено'));
        return $result;
    }

    $payload = [
        'type'          => 1,
        'tariff_code'   => 136,
        'from_location' => ['code' => $this->getOption('FROM_LOCATION_CODE')],
        'to_location'   => ['code' => $toCode],
        'packages'      => [[
            'weight' => max($this->getShipmentWeight($shipment), 100),
            'length' => 20,
            'width'  => 20,
            'height' => 20,
        ]],
        'currency'      => 'BYR', // білоруський рубль
    ];

    $response = $this->apiPost('/v2/calculator/tariff', $payload);

    if (isset($response['errors'])) {
        $result->addError(new \Bitrix\Main\Error($response['errors'][0]['message']));
        return $result;
    }

    $result->setDeliveryPrice((float)$response['total_sum']);
    $result->setPeriodDescription('1–3 дні');
    return $result;
}

Параметр currency: BYR гарантує, що вартість повернеться в білоруських рублях, а не перерахується в російські.

Створення замовлення СДЕК для Білорусі

public function createByCdekOrder(\Bitrix\Sale\Shipment $shipment): string
{
    $order = $shipment->getOrder();
    $props = $order->getPropertyCollection();

    // Перевіряємо: доставка в Білорусі або транскордонна
    $country = $this->getRecipientCountry($props);
    $tariffCode = $country === 'BY' ? 136 : 137; // 137 - міжнародний

    $payload = [
        'type'         => 1,
        'number'       => (string)$order->getId(),
        'tariff_code'  => $tariffCode,
        'from_location' => $this->getFromLocation(),
        'to_location'  => $this->getToLocation($props),
        'recipient'    => [
            'name'   => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
            'phones' => [['number' => $props->getItemByOrderPropertyCode('PHONE')?->getValue()]],
        ],
        'packages'     => $this->buildPackages($shipment),
        'services'     => $this->getAdditionalServices($order),
    ];

    $response = $this->apiPost('/v2/orders', $payload);
    return $response['entity']['uuid'] ?? '';
}

ПВЗ СДЕК у Білорусі

Вибір ПВЗ працює через той самий JavaScript-віджет СДЕК, що і для Росії. При ініціалізації вказуємо країну:

window.CDEKWidget.create({
    apiKey: 'YOUR_API_KEY',
    defaultLocation: 'Минск',
    lang: 'rus',
    currency: 'BYR',
    onReady: function() {
        // Віджет готовий
    },
    onChoose: function(type, tariff, address) {
        document.getElementById('cdek_pvz_code').value = address.code;
    }
});

ПДВ і митниця

Для транскордонних відправлень з Росії до Білорусі (або навпаки) необхідно заповнювати митну декларацію. У запиті POST /v2/orders для міжнародних тарифів додається блок seller з даними продавця та масив packages[].items з описом вмісту, цінами та кодами УКТ ЗЕД. Це вимога ЄАЕС — без декларації посилка затримається на митниці.

Статуси та вебхуки

Повністю аналогічно російській інтеграції. Вебхуки налаштовуються в особистому кабінеті СДЕК — URL той самий, маппінг статусів ідентичний. Якщо магазин вже інтегровано з СДЕК Росія, білоруське представництво налаштовується як друга служба доставки з окремими client_id/client_secret та іншим FROM_LOCATION_CODE.

Терміни

Склад Термін
Налаштування (є рос. інтеграція) 1–2 дні
Інтеграція з нуля + ПВЗ 5–7 днів
+ Транскордонні відправлення + декларація +2 дні