Інтеграція 1С-Бітрікс з платіжною системою Bepaid (Білорусь)

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з платіжною системою Bepaid (Білорусь)
Середня
~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С-Bitrix з платіжною системою Bepaid (Беларусь)

bePaid — білоруський платіжний шлюз, один з основних для прийому карткових платежів у білоруських інтернет-магазинах. Підтримує карти Visa, MasterCard, МІР, БЕЛКАРТ. Надає REST API з редиректом на платіжну форму або вбудованим віджетом.

Особливості білоруського еквайрингу

Білоруські інтернет-магазини повинні працювати з банком-еквайєром, що має ліцензію Нацбанку РБ. bePaid надає такий еквайринг через партнерські банки (Белгазпромбанк, Приорбанк та інші). Для підключення потрібне юрлицо в РБ.

Основний URL API: https://checkout.bepaid.by/ctp/api/

Схема інтеграції: Checkout Page

Стандартний спосіб — редирект на hosted-сторінку bePaid:

$credentials = base64_encode($shopId . ':' . $secretKey);

$requestData = [
    'checkout' => [
        'test'          => $isTest,
        'transaction_type' => 'payment',  // або 'authorization' для холду
        'order' => [
            'amount'   => (int)($sum * 100),   // у копійках (BYN: *100)
            'currency' => 'BYN',
            'description' => 'Замовлення №' . $orderId,
            'tracking_id' => $orderId,
        ],
        'settings' => [
            'success_url'      => $successUrl,
            'decline_url'      => $failUrl,
            'fail_url'         => $failUrl,
            'notification_url' => $notificationUrl,
            'language'         => 'uk',
        ],
        'customer' => [
            'email' => $email,
            'phone' => $phone,
        ],
    ],
];

$ch = curl_init('https://checkout.bepaid.by/ctp/api/checkouts');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Basic ' . $credentials,
    'Accept: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

// $response['checkout']['redirect_url'] — URL для редиректа покупця
// $response['checkout']['token'] — токен платежу для перевірки статусу

Отримання сповіщень

bePaid відправляє POST з JSON-тілом на notification_url:

$rawBody  = file_get_contents('php://input');
$data     = json_decode($rawBody, true);

// Перевірка підпису через SHA1
$received = $data['transaction']['uid'] ?? '';
$hash     = $data['transaction']['verification_code'] ?? '';
$expected = sha1($secretKey . $received);

// Альтернативна перевірка: через API запит статусу по uid
$trackingId = $data['transaction']['tracking_id'];  // наш orderId
$txStatus   = $data['transaction']['status'];         // 'successful', 'failed', тощо

if ($txStatus === 'successful') {
    $order = \Bitrix\Sale\Order::loadByAccountNumber($trackingId);
    // підтвердити оплату
}

http_response_code(200);

Статуси транзакцій: successful — успішно, failed — неудачно, pending — в обробці, expired — вийшло час.

Повернення коштів

$refundData = [
    'request' => [
        'parent_uid' => $originalTransactionUid,
        'amount'     => (int)($refundAmount * 100),
        'reason'     => 'Скасування замовлення',
    ],
];

$ch = curl_init('https://gateway.bepaid.by/transactions/refunds');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Basic ' . $credentials,
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($refundData));
// ...

Відмінності від російських шлюзів

  • Суми передаються в білоруських рублях (BYN), у копійках: 10.50 BYN = 1050
  • tracking_id — довільна рядок-ідентифікатор замовлення (на відміну від InvId у Robokassa)
  • Підтримуються карти БЕЛКАРТ — специфіка білоруського ринку
  • Сповіщення приходять у JSON через POST, не form-encoded

Тестування

bePaid надає тестове середовище: https://checkout.bepaid.by з прапором test: true. Тестова карта: 4200000000000000, строк 01/30, CVV 123. Сума < 100 BYN — успішна оплата, >= 100 — відмова.

Терміни розробки

Завдання Термін
Базова інтеграція: checkout + сповіщення 2–3 дні
Двохстадійні платежі (authorization + capture) +1 день
Повернення коштів +1 день
Тестування повного циклу 0.5 дня