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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой Bepaid (Беларусь)
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с платёжной системой 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'         => 'ru',
        ],
        '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', etc.

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 дня