Интеграция 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 дня |







