Интеграция 1С-Битрикс с платежной системой CloudPayments

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой CloudPayments
Средняя
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    989

Интеграция 1С-Битрикс с платёжной системой CloudPayments

CloudPayments — российский платёжный шлюз с виджетом оплаты на JS, который встраивается в страницу без редиректа. Покупатель вводит данные карты прямо на странице магазина — конверсия выше, чем при редиректе. API основан на REST, поддерживает рекуррентные платежи, 3-D Secure, холдирование.

Архитектура интеграции

CloudPayments предоставляет два варианта оплаты:

Checkout Widget — JS-виджет, форма открывается в popup или inline на странице магазина. Данные карты уходят сразу в CloudPayments (PCI DSS), на сервер магазина — только токен транзакции.

API без редиректа — магазин собирает данные карты сам и передаёт в API. Требует сертификации PCI DSS — редко используется.

Стандартный подход для Битрикс — Checkout Widget.

Подключение виджета

На странице оформления заказа:

<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>

В Битрикс виджет подключается в шаблоне компонента bitrix:sale.order.checkout или в result_modifier.php.

Серверная обработка: check и pay уведомления

CloudPayments отправляет два уведомления на сервер:

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.

Рекуррентные платежи

CloudPayments поддерживает подписки: при первом платеже создаётся токен карты (Token), последующие списания делаются без участия покупателя:

// Первый платёж с сохранением токена — через виджет с параметром createReceipt
// Последующие платежи через API
$response = $this->apiRequest('payments/tokens/charge', [
    'Amount'      => 999,
    'Currency'    => 'RUB',
    'InvoiceId'   => $subscriptionId,
    'AccountId'   => $userId,
    'Token'       => $savedToken,
    'Description' => 'Подписка за февраль',
]);

Фискализация

CloudPayments интегрируется с онлайн-кассами через параметры cloudPayments.CustomerReceipt в запросе виджета. Передаёте массив позиций заказа, ставку НДС, систему налогообложения. CloudPayments формирует чек через подключённую кассу.

Сроки разработки

Задача Срок
Базовая интеграция: виджет + check/pay callbacks 2–3 дня
Двухстадийные платежи (auth + confirm) +1 день
Рекуррентные платежи +2–3 дня
Фискализация +1–2 дня
Тестирование и отладка 1 день