Интеграция 1С-Битрикс с платёжной системой CloudPayments
Владельцы интернет-магазинов на 1С-Битрикс часто сталкиваются с падением конверсии при оплате: редирект на страницу банка отпугивает до 20% покупателей. CloudPayments решает эту проблему через Checkout Widget — данные карты вводятся прямо на сайте, конверсия растёт на 15–25%. Мы выполняем интеграцию с CloudPayments под ключ: виджет без редиректа, рекуррентные платежи, фискализация по 54-ФЗ. По нашим данным, стоимость интеграции обычно составляет от 30 000 до 70 000 руб в зависимости от объёма работ.
Как CloudPayments повышает конверсию в Битрикс?
CloudPayments предлагает две схемы оплаты. Checkout Widget — JS-виджет, форма открывается в popup или inline. Данные карты уходят напрямую в шлюз (PCI DSS), на ваш сервер — только токен транзакции. Это безопасно и не требует сертификации. API без редиректа требует, чтобы магазин собирал данные карты самостоятельно и передавал через REST — такой подход почти не используется из-за необходимости PCI DSS.
Типичная конверсия с редиректом — 2–3%, с виджетом — 4–6%. Разница особенно заметна на мобильных устройствах. CloudPayments даёт конверсию в 2 раза выше, чем при использовании редиректа. Виджет настраивается за 2–3 дня, включая серверные колбэки. Для сравнения: интеграция с Сбербанком через API занимает 5–7 дней, конверсия ниже.
Почему CloudPayments выгоднее альтернатив?
| Параметр | CloudPayments | Сбербанк | Т-Касса |
|---|---|---|---|
| Виджет без редиректа | Да (встроен) | Требуется доработка | Да |
| PCI DSS сертификация | Не требуется | Требуется для API | Не требуется |
| Срок интеграции (база) | 2–3 дня | 5–7 дней | 3–4 дня |
| Рекуррентные платежи | Встроенные | Через подписки | Дополнительно |
| Фискализация 54-ФЗ | Встроенная | Отдельная настройка | Встроенная |
CloudPayments даёт готовую фискализацию — не нужно писать свой модуль для ОФД. Это экономит до 40% времени на разработку.
Как настроить виджет CloudPayments в Битрикс: пошаговая инструкция
- Получите публичный и секретный ключи в личном кабинете CloudPayments.
- В шаблоне оформления заказа (компонент
bitrix:sale.order.checkout) добавьте ссылку на скрипт виджета:
<script src="https://widget.cloudpayments.ru/bundles/cloudpayments.js"></script>
- Инициализируйте виджет с параметрами заказа (сумма, описание, invoiceId).
- Обработайте колбэки
onSuccessиonFail— вonSuccessотправьте запрос на сервер для подтверждения оплаты. - Настройте серверный обработчик
checkиpayс проверкой HMAC-подписи. - Протестируйте сценарии: успешный платёж, отмена, ошибка.
Подключение виджета
На странице оформления заказа в Битрикс (компонент bitrix:sale.order.checkout) добавляем скрипт и инициализируем виджет:
<script src="https://widget.cloudpayments.ru/bundles/cloudpayments.js"></script>
<script>
var widget = new cp.CloudPayments({language: 'ru-RU'});
widget.pay('auth', // 'auth' — двухстадийная, 'charge' — одностадийная
{
publicId: 'pk_XXXXX',
description: 'Оплата заказа #<?= $orderId ?>',
amount: <?= $amount ?>,
currency: 'RUB',
invoiceId: '<?= $orderId ?>',
accountId: '<?= $userId ?>',
skin: 'mini',
data: {
orderId: '<?= $orderId ?>',
csrfToken: '<?= bitrix_sessid() ?>',
}
},
{
onSuccess: function(options) {
// Платёж прошёл — уведомить сервер
fetch('/bitrix/tools/sale_ps_result.php', {
method: 'POST',
body: JSON.stringify({ orderId: options.invoiceId }),
});
},
onFail: function(reason, options) {
console.error('Payment failed:', reason);
}
}
);
</script>
В Битрикс виджет подключается в шаблоне компонента или в result_modifier.php. Мы передаём invoiceId — номер заказа, по которому потом подтверждаем оплату.
Серверная обработка: check и pay уведомления
CloudPayments отправляет два POST-запроса на ваш эндпоинт: Check — перед списанием, магазин должен ответить {"code":0}, если заказ существует; Pay — после успешного списания, подтверждение оплаты.
Обработчик (local/payment/cloudpayments/callback.php):
$data = json_decode(file_get_contents('php://input'), true);
// Проверка HMAC подписи
$hmac = base64_encode(hash_hmac('sha256', file_get_contents('php://input'), $apiSecret, true));
if ($hmac !== $_SERVER['HTTP_CONTENT_HMAC']) {
http_response_code(403);
exit;
}
$invoiceId = $data['InvoiceId']; // наш orderId
$status = $data['Status']; // 'Completed', 'Cancelled' и т.д.
if ($status === 'Completed') {
// Найти платёж по orderId, подтвердить
$order = \Bitrix\Sale\Order::loadByAccountNumber($invoiceId);
$paymentCollection = $order->getPaymentCollection();
foreach ($paymentCollection as $payment) {
if ($payment->getPaySystem()->getField('CODE') === 'cloudpayments') {
$payment->setPaid('Y');
}
}
$order->save();
}
header('Content-Type: application/json');
echo json_encode(['code' => 0]);
Проверка подписи обязательна. CloudPayments передаёт HMAC SHA-256 в заголовке Content-HMAC. Без проверки злоумышленник может подтвердить оплату фальшивым POST. Подробнее: Wikipedia: HMAC.
Частая ошибка: неверный HMAC
Если код отвечает 403, проверьте, что вы используете секретный ключ (не публичный) и что тело запроса берётся сырым (file_get_contents('php://input')). В PHP вычисляйте HMAC до декодирования JSON.Рекуррентные платежи
CloudPayments поддерживает подписки: при первом платеже создаётся токен карты (Token), последующие списания делаются без участия покупателя:
// Первый платёж с сохранением токена — через виджет с параметром createReceipt
// Последующие платежи через API
$response = $this->apiRequest('payments/tokens/charge', [
'Amount' => 999,
'Currency' => 'RUB',
'InvoiceId' => $subscriptionId,
'AccountId' => $userId,
'Token' => $savedToken,
'Description' => 'Подписка за февраль',
]);
Токен хранится в базе (например, в HL-блоке), привязанный к пользователю Битрикс. Комиссия за рекуррентные платежи такая же, как за обычные.
Что нужно для фискализации?
CloudPayments интегрируется с онлайн-кассами через параметр cloudPayments.CustomerReceipt в запросе виджета. Передаёте массив позиций заказа, ставку НДС, систему налогообложения. CloudPayments сам формирует чек через подключённую кассу и отправляет его покупателю на email или SMS.
Пример передачи данных в виджет:
var receipt = {
Items: [
{
label: 'Товар 1',
price: 500.00,
quantity: 1,
amount: 500.00,
vat: 20,
}
],
taxationSystem: 0, // ОСН
email: '[email protected]',
phone: '+71234567890',
};
widget.pay('charge', { ..., cloudPayments: { customerReceipt: receipt } });
Что входит в работу
При заказе интеграции вы получаете:
- Настройка виджета на странице оформления заказа.
- Обработчик уведомлений check/pay с проверкой подписи.
- Интеграция рекуррентных платежей (опционально).
- Фискализация с передачей чеков (опционально).
- Тестирование всех сценариев: успех, отмена, ошибка.
- Документация по интеграции и доступы (логи, админка).
- Консультации по настройке онлайн-кассы в CloudPayments.
Сроки разработки
| Задача | Срок |
|---|---|
| Базовая интеграция: виджет + check/pay callbacks | 2–3 дня |
| Двухстадийные платежи (auth + confirm) | +1 день |
| Рекуррентные платежи | +2–3 дня |
| Фискализация | +1–2 дня |
| Тестирование и отладка | 1 день |
Наш опыт: более 5 лет работы с Битрикс и платёжными системами, 50+ успешных интеграций. Получите консультацию по настройке CloudPayments. Свяжитесь с нами — мы рассчитаем точные сроки за 1 день. Для точного расчёта обратитесь к нашим инженерам.







