Інтеграція 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С-Бітрікс зі службою доставки АвтоЛайтЕкспрес (Білорусь)

АвтоЛайтЕкспрес — білоруська кур'єрська служба з доставкою переважно по Мінську та великих містах Білорусі. Спеціалізується на терміновій кур'єрській доставці день-в-день та міжміських експрес-відправленнях. На відміну від Белпошти та Boxberry, акцент робиться на швидкості, а не на охопленні ПВЗ. Використовується для магазинів з вимогами до швидкої доставки.

API АвтоЛайтЕкспрес

API надається за договором. Інтерфейс — REST JSON, авторизація через API-ключ у заголовку або параметрі запиту. Документація видається при підключенні. Базовий URL: https://api.alexpress.by/v1/ (уточнюється у менеджера при підключенні).

private function apiRequest(string $method, string $path, array $data = []): array
{
    $url = 'https://api.alexpress.by/v1' . $path;
    $ch = curl_init($method === 'GET' ? $url . '?' . http_build_query($data) : $url);

    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST  => $method,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            'X-Api-Key: ' . $this->getOption('API_KEY'),
            'Content-Type: application/json',
        ],
        CURLOPT_POSTFIELDS => $method !== 'GET' ? json_encode($data, JSON_UNESCAPED_UNICODE) : null,
    ]);

    $response = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    $decoded = json_decode($response, true);
    if ($code >= 400 || ($decoded['success'] ?? true) === false) {
        throw new \RuntimeException('ALE API error: ' . ($decoded['message'] ?? $response));
    }

    return $decoded['data'] ?? $decoded;
}

Розрахунок вартості

АвтоЛайтЕкспрес розраховує вартість на основі зон доставки. Мінськ — одна зона, інші міста — інші зони з підвищувальним коефіцієнтом.

public function calcDeliveryCost(
    string $city,
    int $weightGram,
    bool $express = false
): float {
    $response = $this->apiRequest('POST', '/calculate', [
        'city'    => $city,
        'weight'  => $weightGram,
        'express' => $express, // термінова доставка день-в-день
    ]);

    return (float)($response['price'] ?? 0);
}

У 1С-Бітрікс створюються дві служби доставки: «АвтоЛайтЕкспрес» (стандарт) і «АвтоЛайтЕкспрес Експрес» (день-в-день) — з різною вартістю та терміном доставки.

Створення заявки

public function createPickup(\Bitrix\Sale\Shipment $shipment, bool $express = false): string
{
    $order = $shipment->getOrder();
    $props = $order->getPropertyCollection();

    $payload = [
        'externalOrderId' => (string)$order->getId(),
        'express'         => $express,
        'pickupDate'      => date('Y-m-d', strtotime($express ? 'today' : '+1 day')),
        'sender' => [
            'name'    => $this->getOption('SENDER_NAME'),
            'address' => $this->getOption('SENDER_ADDRESS'),
            'phone'   => $this->getOption('SENDER_PHONE'),
            'city'    => $this->getOption('SENDER_CITY'),
        ],
        'recipient' => [
            'name'    => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
            'phone'   => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
            'address' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(),
            'city'    => $props->getItemByOrderPropertyCode('CITY')?->getValue(),
        ],
        'cargo' => [
            'weight'        => $this->getWeight($shipment),
            'declaredValue' => $order->getPrice(),
            'description'   => 'Товар з інтернет-магазину',
        ],
        'paymentType' => 'prepaid', // передоплата або накладений платіж
    ];

    $response = $this->apiRequest('POST', '/orders', $payload);
    $orderId = (string)($response['id'] ?? '');

    $props->getItemByOrderPropertyCode('ALE_ORDER_ID')?->setValue($orderId);
    $order->save();

    return $orderId;
}

Обмеження: тільки білоруські адреси

АвтоЛайтЕкспрес працює виключно по Білорусі. У класі служби доставки необхідно обмежити зону використання:

public function isCompatible(\Bitrix\Sale\Shipment $shipment): bool
{
    $location = $this->getShipmentLocation($shipment);
    $country = $this->getCountryByLocation($location);
    return $country === 'BY';
}

Це запобігає показу служби покупцям з адресами за межами Білорусі.

Трекінг

public function getStatus(string $orderId): string
{
    $response = $this->apiRequest('GET', '/orders/' . $orderId);
    return $response['status'] ?? '';
}

Polling агентом 2–3 рази на день для активних відправлень. Для експрес-замовлень — щогодини в робочий час.

Терміни

Склад Термін
Розрахунок + створення заявки 2–3 дні
+ Експрес-режим + трекінг +1 день
+ Геообмеження по країні Включено