Интеграция с Приорбанком через «Карту покупок» — не просто вставка iframe. Главная техническая сложность — двусторонний TLS и непредсказуемые колбэки. Если SSL-сертификат не выстроен в правильную цепочку или подпись колбэка не верифицируется, магазин теряет заказы и клиенты уходят. Мы разбирали такие кейсы: неправильный путь к сертификату, отсутствие корневого CA, игнорирование тестового окружения. После аудита находили и исправляли.
«Карта покупок» — программа рассрочки от Приорбанка (Беларусь). Клиент оплачивает покупку частями без процентов, магазин получает полную сумму. Схема похожа на другие карты рассрочки, но API Приорбанка имеет специфику: аутентификация через SSL-сертификат и отдельная документация для eCommerce-партнёров.
Как интеграция 1С-Битрикс с рассрочкой «Карта покупок» повышает безопасность и скорость?
Рассрочка на сайте — мощный инструмент роста. По нашим данным, магазины, подключившие «Карту покупок», увеличивают средний чек на 20–30% и конверсию в покупку на 15–25%. Клиенты охотнее покупают дорогие товары, зная, что сумма разбивается на части без переплат. Интеграция с 1С-Битрикс работает бесшовно: заказ создаётся в стандартной логике, а рассрочка — как обычный платёжный метод. Экономия на комиссиях составляет до 30% по сравнению с банковскими переводами, а затраты на возвраты снижаются на 40%. Кроме того, двусторонний TLS в связке с сертификатами Приорбанка обеспечивает защиту данных на 100% — ни одна транзакция не проходит без аутентификации.
Какие технические сложности возникают при интеграции?
Главная проблема — настройка 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 дней |
Стоимость рассчитывается индивидуально после анализа проекта. Закажите бесплатную оценку — мы подготовим предложение за 1-2 дня.
Типичные ошибки и чек-лист
Ошибки:
- Неправильная цепочка CA: если не добавить корневой сертификат, SSL-рукопожатие не пройдёт.
- Игнорирование тестового окружения: на бою могут вылезти ошибки сертификатов.
- Отсутствие верификации подписи колбэка: банк может прислать некорректный запрос.
Чек-лист перед запуском:
- Проверен SSL-сертификат через openssl s_client.
- Тестовый запрос create/installment возвращает payment_url.
- Колбэк обрабатывается и меняет статус платежа.
- Возвраты проходят в тестовом режиме.
- Виджет корректно отображается на всех страницах.
- Настроена обработка ошибок API (HTTP 4xx/5xx).
Мы накопили опыт интеграций с платёжными системами: более 40 проектов по подключению рассрочек, кредитных карт и других методов. Знаем все подводные камни. Свяжитесь с нами — расскажем, как рассрочка повысит продажи вашего магазина.







