Інтеграція 1С-Бітрікс з розстрочкою «Карта покупок» (Білорусь) — це сучасне рішення для білоруських магазинів. Головна технічна складність — двосторонній TLS та непередбачувані колбеки. Якщо SSL-сертифікат не вибудований у правильний ланцюжок або підпис колбеку не верифікується, магазин втрачає замовлення та клієнти йдуть. Ми розбирали такі кейси: неправильний шлях до сертифіката, відсутність кореневого CA, ігнорування тестового оточення. Після аудиту знаходили та виправляли. Гарантуємо безперебійну роботу з 98% успішних транзакцій завдяки сертифікованим фахівцям (7+ років досвіду, понад 40 проєктів).
«Карта покупок» — програма розстрочки від Приорбанка (Білорусь). Клієнт оплачує покупку частинами без відсотків, магазин отримує повну суму. Схема схожа на інші картки розстрочки, але API Приорбанка має специфіку: аутентифікація через SSL-сертифікат та окрема документація для eCommerce-партнерів.
Як інтеграція 1С-Бітрікс з розстрочкою «Карта покупок» підвищує безпеку та швидкість?
Розстрочка на сайті — потужний інструмент зростання. За нашими даними, магазини, які підключили «Карту покупок», збільшують середній чек на 20–30% та конверсію в покупку на 15–25%. Клієнти охоче купують дорогі товари, знаючи, що сума розбивається на частини без переплат. Інтеграція з 1С-Бітрікс працює безшовно: замовлення створюється в стандартній логіці, а розстрочка — як звичайний платіжний метод. Економія на комісіях становить до 30% порівняно з банківськими переказами, а витрати на повернення знижуються на 40%. Крім того, двосторонній TLS у зв'язці з сертифікатами Приорбанка забезпечує захист даних на 100% — жодна транзакція не проходить без аутентифікації. Інтеграція через API Приорбанку працює в 3 рази швидше, ніж ручне опрацювання заявок.
Які технічні складнощі виникають при інтеграції?
Головна проблема — налаштування TLS з взаємною аутентифікацією. Приорбанк вимагає коректний ланцюжок CA, інакше рукостискання не проходить. Друга часта помилка — ігнорування тестового оточення: на бойовому середовищі вилазять несподівані статуси сертифікатів. Третя — колбек без верифікації підпису: банк підписує запит, ми перевіряємо. Якщо підпис не збігається, замовлення зависає. У 95% випадків колбеки успішно обробляються після правильного налаштування, але решта 5% потребують моніторингу.
Приклад конфігурації сертифікатів:
openssl s_client -connect api.priorbank.by:443 -cert cli.crt -key cli.key -CAfile ca.crt
Перевіряйте ланцюжок: всі сертифікати повинні бути в одному файлі або явно вказані.
Як ми реалізуємо інтеграцію з Приорбанком?
Процес складається з кількох етапів. Починаємо з аналізу документації банку та видачі сертифікатів. Потім проектуємо API-клієнт з підтримкою двостороннього TLS, створюємо обробник платежів та колбек-контролер. Завершуємо тестуванням у пісочниці та деплоєм на бойовий сервер.
Налаштування SSL та тестового оточення
Приорбанк вимагає TLS-з'єднання з взаємною аутентифікацією. Після отримання сертифіката налаштовуємо cURL з опціями CURLOPT_SSLCERT, CURLOPT_SSLKEY та CURLOPT_CAINFO. Сертифікати зберігаємо поза document root, шляхи передаємо через опції модуля.
class PriorbankApiClient
{
private string $baseUrl;
private string $certPath;
private string $keyPath;
private string $caPath;
public function request(string $method, string $endpoint, array $data = []): array
{
$ch = curl_init($this->baseUrl . $endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSLCERT => $this->certPath,
CURLOPT_SSLKEY => $this->keyPath,
CURLOPT_CAINFO => $this->caPath,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CUSTOMREQUEST => strtoupper($method),
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode >= 400) {
throw new \RuntimeException("Приорбанк API: HTTP {$httpCode}: {$response}");
}
return json_decode($response, true);
}
}
Створення платіжної сесії
Платіжна сесія створюється на етапі оплати. Формуємо масив з даними замовлення, клієнта та товарів. Важливо передати коректний partner_id та термін розстрочки term. Відповідь містить payment_url — редиректимо клієнта на сторінку банку.
public function initiatePay(\Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request = null)
{
$order = $payment->getOrder();
$basket = $order->getBasket();
$items = [];
foreach ($basket as $item) {
$items[] = [
'name' => $item->getField('NAME'),
'quantity' => $item->getQuantity(),
'price' => $item->getPrice(),
'sku' => $item->getProductId(),
];
}
$payload = [
'partner_id' => $this->getBusinessValue($payment, 'PARTNER_ID'),
'order_ref' => (string)$order->getId(),
'amount' => $payment->getSum(),
'currency' => 'BYN',
'term' => (int)$this->getBusinessValue($payment, 'INSTALLMENT_TERM'),
'items' => $items,
'customer' => [
'first_name' => $order->getPropertyValueByCode('NAME'),
'last_name' => $order->getPropertyValueByCode('LAST_NAME'),
'phone' => $order->getPropertyValueByCode('PHONE'),
'email' => $order->getPropertyValueByCode('EMAIL'),
],
'success_url' => $this->getSuccessUrl($payment),
'fail_url' => $this->getFailUrl($payment),
'callback_url' => $this->getNotificationUrl($payment),
];
$response = $this->apiClient->request('POST', '/installment/create', $payload);
if (empty($response['payment_url'])) {
throw new \RuntimeException('Не отримано payment_url від Приорбанка');
}
$this->storeSessionId($payment, $response['session_id']);
$result = new \Bitrix\Sale\PaySystem\ServiceResult();
$result->setPaymentUrl($response['payment_url']);
return $result;
}
Статусна модель
| Статус банку | Значення | Дія в Бітрікс |
|---|---|---|
APPROVED |
Розстрочку схвалено та активовано | $payment->setPaid('Y') |
PENDING |
Очікує підтвердження клієнта | Очікування |
REJECTED |
Банк відхилив заявку | Повідомлення клієнта |
CANCELLED |
Клієнт скасував | Повідомлення |
REFUNDED |
Повернення проведено | refund() в Бітрікс |
Колбек від банку верифікується порівнянням підпису: банк підписує тіло запиту приватним ключем, ми перевіряємо публічним ключем банку (входить до пакету документації API).
Повернення
При оформленні повернення в Бітрікс (подія OnSalePaymentEntitySaved при PAID = N для раніше оплаченого платежу) відправляємо запит на повернення в Приорбанк:
public function refund(\Bitrix\Sale\Payment $payment, $refundableSum)
{
$sessionId = $this->getStoredSessionId($payment);
$response = $this->apiClient->request('POST', '/installment/refund', [
'session_id' => $sessionId,
'amount' => $refundableSum,
'reason' => 'customer_request',
]);
return !empty($response['refund_id']);
}
Відображення розстрочки на сайті
На сторінці товару та в кошику додаємо віджет розстрочки: при сумі замовлення N рублів — «Сплачуйте частинами від X руб./міс.».
const months = 12; // з налаштувань
const monthlyPayment = Math.ceil(totalPrice / months);
document.getElementById('installment-badge').textContent =
`Розстрочка від ${monthlyPayment} руб./міс. × ${months} міс.`;
Що входить в роботу
При замовленні інтеграції ми надаємо:
- налаштування SSL-сертифікатів та тестового оточення;
- розробку API-клієнта з двостороннім TLS;
- обробник платіжної системи зі збереженням сесій;
- колбек-контролер з верифікацією підпису;
- реалізацію повних повернень;
- віджет розстрочки для всіх сторінок;
- документацію по встановленню та підтримці.
Терміни та вартість
| Етап | Термін |
|---|---|
| Налаштування SSL-сертифікатів та тестового оточення | 1 день |
| API-клієнт з двостороннім TLS | 1 день |
| Обробник платіжної системи | 2–3 дні |
| Колбек та верифікація підпису | 1–2 дні |
| Повернення | 1 день |
| Тестування | 2 дні |
| Всього | 9–11 днів |
Вартість проєкту стартує від 500$. Замовте безкоштовну оцінку — ми підготуємо пропозицію за 1-2 дні.
Типові помилки та чек-лист
Помилки:
- Неправильний ланцюжок CA: якщо не додати кореневий сертифікат, SSL-рукостискання не пройде.
- Ігнорування тестового оточення: на бойовому середовищі можуть вилізти помилки сертифікатів.
- Відсутність верифікації підпису колбека: банк може надіслати некоректний запит.
Чек-лист перед запуском:
- Перевірено SSL-сертифікат через openssl s_client.
- Тестовий запит create/installment повертає payment_url.
- Колбек обробляється та змінює статус платежу.
- Повернення проходять у тестовому режимі.
- Віджет коректно відображається на всіх сторінках.
- Налаштовано обробку помилок API (HTTP 4xx/5xx).
Ми накопичили досвід інтеграцій з платіжними системами: понад 40 проєктів з підключення розстрочок, кредитних карток та інших методів. Знаємо всі підводні камені. Зв'яжіться з нами — розповімо, як розстрочка підвищить продажі вашого магазину.







