После сотен подключений карточного эквайринга к магазинам на 1С-Битрикс мы заметили закономерность: владельцы возвращаются через полгода с запросом на СБП. Причина очевидна — комиссия 0,4–0,7% против средних 2% у карт. СБП в 3–5 раз выгоднее карт — для магазина с оборотом $9k–13k в месяц экономия составляет до $160–230. И это не считая того, что деньги приходят за секунды, а не на следующий день. Техническая реализация проще, чем кажется: мы подготовили интеграцию с двумя популярными провайдерами — Тинькофф и ЮKacca. Оба предоставляют простые API и быстрый онбординг. Среднее время подключения — 1-2 дня.
Что такое СБП и как это работает
СБП — это межбанковская система мгновенных платежей Банка России, запущенная в 2019 году. Это прямой перевод между счетами покупателя и продавца без промежуточных платёжных систем. Покупатель сканирует QR-код или переходит по ссылке — оплата проходит без ввода карточных данных. Для интернет-магазинов СБП предоставляет преимущество снижения комиссии в 3–5 раз по сравнению с картами.
Сравнение СБП и карточного эквайринга
| Параметр | СБП | Карточный эквайринг |
|---|---|---|
| Комиссия | 0,4% – 0,7% | 1,5% – 2,5% |
| Скорость зачисления | Несколько секунд | Следующий банковский день |
| Возврат | Простой обратный перевод | Через процессинг, 3–30 дней |
Дополнительный плюс — увеличивается конверсия: по нашим оценкам, до 15% пользователей бросают корзину при виде формы ввода карты. СБП убирает этот барьер.
Интеграция СБП через Тинькофф
Тинькофф предоставляет два формата: ссылка (для мобильных) и QR-код (для десктопа). Этапы подключения:
- Получить терминальный ключ в личном кабинете Тинькофф.
- Создать платёжную сессию через API Init.
- Запросить QR-код через GetQr.
- Отобразить пользователю в зависимости от устройства.
Пример создания платёжной сессии и получения QR:
// Создание платёжной сессии $params = [ 'TerminalKey' => TINKOFF_TERMINAL, 'Amount' => (int)($order->getPrice() * 100), 'OrderId' => $order->getAccountNumber(), 'Description' => 'Заказ #' . $order->getAccountNumber(), 'NotificationURL' => 'https://shop.ru/bitrix/tools/sale_ps_result.php', 'PayType' => 'O', ]; $params['Token'] = tinkoffSign($params, TINKOFF_SECRET); $init = tinkoffPost('/v2/Init', $params); $paymentId = $init['PaymentId']; // Получение QR для СБП $qrParams = [ 'TerminalKey' => TINKOFF_TERMINAL, 'PaymentId' => $paymentId, 'DataType' => 'PAYLOAD', ]; $qrParams['Token'] = tinkoffSign($qrParams, TINKOFF_SECRET); $qr = tinkoffPost('/v2/GetQr', $qrParams); $sbpLink = $qr['Data']; Адаптивное отображение QR и ссылок
Следующий этап — показать пользователю правильный интерфейс. На мобильных устройствах лучше открывать банковское приложение по ссылке, на десктопе — QR-код. Проверяем user-agent и рендерим нужный элемент:
const isMobile = /Mobi|Android/i.test(navigator.userAgent); if (isMobile) { const btn = document.getElementById('sbp-btn'); btn.href = sbpLink; btn.style.display = 'block'; } else { const qr = new QRCode(document.getElementById('sbp-qr'), { text: sbpLink, width: 200, height: 200, }); document.getElementById('sbp-qr-block').style.display = 'block'; } // Polling статуса const poll = setInterval(async () => { const status = await fetch('/api/sbp-status.php?orderId=' + orderId) .then(r => r.json()); if (status.paid) { clearInterval(poll); location.href = '/payment/success/'; } }, 2000); Интеграция через ЮKacca
ЮKacca также поддерживает СБП. Пример создания платежа:
$payment = $client->createPayment([ 'amount' => ['value' => number_format($sum, 2, '.', ''), 'currency' => 'USD'], 'payment_method_data' => ['type' => 'sbp'], 'confirmation' => ['type' => 'qr'], 'capture' => true, 'description' => 'Заказ #' . $orderId, 'metadata' => ['order_id' => $orderId], ], uniqid('', true)); Обработка callback-уведомлений от банка
После оплаты банк отправляет POST-запрос на NotificationURL. Это уведомление содержит статус платежа и должно быть обработано корректно:
// Получение уведомления $json = file_get_contents('php://input'); $data = json_decode($json, true); // Проверка подписи $token = hash('sha256', $json . TINKOFF_SECRET); if ($token !== $_SERVER['HTTP_X_SIGNATURE']) { http_response_code(400); echo 'bad signature'; exit; } // Обновление статуса платежа в Битрикс if ($data['Status'] === 'CONFIRMED') { \Bitrix\Sale\PaymentCollection::setPaid($data['OrderId'], 'Y'); } Важно: никогда не полагайтесь только на callback. Реализуйте polling статуса (как в примере выше) — callback может не дойти из-за сетевых сбоев, но платёж уже прошёл.
Важные моменты: комиссия и фискализация
Для работы с СБП нужен отдельный продукт в банке — «Приём платежей через СБП». Ставки для e-commerce: 0,4% для физлиц, до 0,7% для юрлиц, что позволяет значительно сократить операционные расходы в сравнении с карточным эквайрингом. Фискализация СБП-платежей проходит по стандартному механизму: передаёте receipt с признаком payment_method = 'sbp' в ОФД. Отдельная онлайн-касса не требуется — используется тот же кассовый аппарат, что и для карт. При правильной настройке в Битрикс чеки отправляются автоматически при подтверждении платежа через webhook от банка.
Возвраты и отмены платежей
При возврате СБП-платежа деньги возвращаются на счёт покупателя мгновенно (в отличие от карт, где может быть задержка). В Битрикс реализуйте возврат через Refund-эндпоинт банка:
$refund = tinkoffPost('/v2/Refund', [ 'PaymentId' => $paymentId, 'TerminalKey' => TINKOFF_TERMINAL, ]); Частичные возвраты также поддерживаются — передайте сумму возврата отдельно от полной суммы платежа.
Наш опыт и сроки подключения
Мы реализовали более 50 интеграций платёжных систем на 1С-Битрикс за последние годы. Сертифицированные специалисты Битрикс гарантируют стабильную работу под нагрузкой. Средние сроки:
| Задача | Срок |
|---|---|
| СБП через Тинькофф или ЮKacca | 1–2 дня |
| Адаптивное отображение QR/ссылка | 0.5 дня |
| Polling статуса | 0.5 дня |
| Подключение эквайринга в банке | 3–10 рабочих дней |
Если вы хотите подключить СБП на своём проекте, свяжитесь с нами — мы бесплатно оценим объём работ и предложим оптимальное решение. Получите консультацию по внедрению СБП уже сегодня.







