Как настроить интернет-эквайринг на 1С-Битрикс?
Задача «подключить оплату картой» кажется тривиальной до первого инцидента в продакшне: статусы заказов не обновляются, деньги пришли — а заказ висит в «Ожидает оплаты». Причина — webhook от банка не доходит до сервера из-за WAF или ошибки PHP. Один из проектов — интернет-магазин автозапчастей с каталогом на 50 000 товаров. При переходе на выделенный сервер Cloudflare заблокировал POST-запросы от банка. Диагностика заняла два часа, решение — настройка исключений в файрволе. После этого мы разработали универсальный чек-лист для проверки доставки уведомлений. Мы, инженеры с десятилетним опытом в Битрикс-разработке, разберём полный цикл: от выбора схемы до диагностики. Наш подход — надёжность и прозрачность, гарантируем работоспособность интеграции.
Подробнее о технологии webhook можно прочитать на Wikipedia Webhook.
Три подхода к интеграции
Готовый модуль из Маркетплейса — Сбербанк, Тинькофф, ЮKassa, Альфа-Банк имеют официальные модули. Устанавливаются через /bitrix/admin/update_system.php. Быстро, поддерживается вендором, но ограниченная гибкость.
Кастомный обработчик в /local/ — когда стандартный модуль не покрывает нужды: нестандартный маппинг статусов, кастомная фискализация, несколько эквайеров.
JS-виджет эквайера — CloudPayments, Robokassa встраиваются скриптом. Часть работы на клиенте, сервер только верифицирует результат.
Установка и настройка (пример: Тинькофф)
После установки модуля из Маркетплейса: Магазин → Настройки → Платёжные системы → Добавить → Тинькофф.
| Параметр | Источник |
|---|---|
| Terminal Key | ЛК Тинькофф Бизнес → Интернет-эквайринг |
| Secret Key | Там же |
| Notification URL | https://shop.ru/bitrix/tools/sale_ps_result.php |
| Success URL | Страница успешной оплаты |
Кастомный обработчик: минимальный каркас
<?php // local/php_interface/include/sale_payment/mybank/handler.php use Bitrix\Sale\PaySystem\BaseServiceHandler; use Bitrix\Sale\PaySystem\ServiceResult; use Bitrix\Sale\Payment; use Bitrix\Main\Request; class MyBankHandler extends BaseServiceHandler { public function initiatePay(Payment $payment, Request $request): ServiceResult { $result = new ServiceResult(); $order = $payment->getCollection()->getOrder(); $session = $this->createGatewaySession( $order->getId(), $payment->getSum() ); if (empty($session['payUrl'])) { $result->addError(new \Bitrix\Main\Error('Gateway error: ' . ($session['error'] ?? ''))); return $result; } $result->setPaymentUrl($session['payUrl']); return $result; } public function processRequest(Payment $payment, Request $request): ServiceResult { $result = new ServiceResult(); $data = json_decode(file_get_contents('php://input'), true); // ВСЕГДА верифицируем подпись — не доверяем данным из запроса if (!$this->verifySignature($data)) { $result->addError(new \Bitrix\Main\Error('Invalid signature')); return $result; } if (($data['status'] ?? '') === 'PAID') { $result->setOperationType(ServiceResult::MONEY_COMING); } return $result; } } Диагностика: webhook не доходит
Самая частая причина — статусы заказов не меняются, хотя деньги списаны. Алгоритм диагностики:
# 1. Проверяем доступность endpoint извне curl -v -X POST https://shop.ru/bitrix/tools/sale_ps_result.php -d 'test=1' # Должен вернуть 200, не 403 # 2. Смотрим access.log на запросы от IP банка grep "sale_ps_result" /var/log/nginx/access.log | tail -50 # 3. Временное логирование (только при отладке!) file_put_contents('/tmp/ps_debug.log', date('Y-m-d H:i:s') . ' ' . $_SERVER['REMOTE_ADDR'] . ' ' . file_get_contents('php://input') . PHP_EOL, FILE_APPEND ); Типичные виновники: Cloudflare Bot Fight Mode блокирует POST-запросы без User-Agent; fail2ban блокирует IP банка по количеству запросов; PHP fatal error без записи в лог; HTTP→HTTPS редирект теряет тело POST.
Почему кастомный обработчик лучше готового модуля?
Готовый модуль не позволяет гибко маппить статусы заказов: например, в Тинькофф статус «SUCCESS» может означать «Оплачен» или «Ждёт подтверждения». Кастомный обработчик даёт 100% контроль над логикой, плюс возможность объединить несколько эквайеров в один интерфейс. При интеграции с 1С и фискализацией (54-ФЗ) кастомный подход обязателен — готовые модули часто не поддерживают АТОЛ в нестандартных сценариях. Требования 54-ФЗ регулируются Федеральным законом.
Когда нужна фискализация?
Фискализация обязательна для всех онлайн-платежей на территории РФ. При оплате картой кассовый чек должен быть отправлен покупателю в электронном виде. Настройка фискализации включает интеграцию с ОФД и АТОЛ. В нашем стеке — АТОЛ Онлайн, который поддерживает 54-ФЗ. Подключение фискализации добавляет 1–2 дня к сроку разработки.
Как мы обеспечиваем надёжность интеграции?
После настройки проводим нагрузочное тестирование: эмулируем до 50 одновременных запросов от банка, проверяем корректность обработки дублей и сбоев. Для критичных магазинов настраиваем мониторинг webhook-ов через cron — каждые 5 минут проверяем, что endpoint отвечает 200. В договоре фиксируем гарантию на доставку уведомлений: если заказ оплачен, статус изменится максимум за 30 секунд.
Двухстадийный эквайринг
Для магазинов, отгружающих после резервирования товара:
// При оформлении заказа — холдируем (PayType=T у Тинькофф) // При смене статуса на "Отгружен" — подтверждаем списание AddEventHandler('sale', 'OnSaleStatusOrder', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); if ($order->getField('STATUS_ID') !== 'OD') return; foreach ($order->getPaymentCollection() as $payment) { if ($payment->getField('PS_STATUS') === 'hold') { capturePayment($payment->getField('PS_INVOICE_ID')); } } }); Что входит в работу?
Полный пакет при заказе настройки эквайринга: аудит текущей платёжной системы, выбор оптимальной схемы, разработка или доработка обработчика (включая фискализацию), настройка webhook-ов и тестирование доставки уведомлений, интеграция с 1С (обмен статусами, синхронизация), документация по настройкам и логированию, гарантийная поддержка 1 месяц после запуска.
Сроки и наши цифры
| Задача | Срок |
|---|---|
| Установка и настройка готового модуля | 0.5–1 день |
| Кастомный обработчик с нуля | 2–4 дня |
| Двухстадийный эквайринг | +1–2 дня |
| Отладка webhook и тестирование | 0.5–1 день |
Мы работаем с 1С-Битрикс более 10 лет, реализовали 200+ проектов для интернет-магазинов и B2B-порталов. Более 50 из них — с кастомным эквайрингом. В случае проблем реагируем за 2 часа, предоставляем сертификаты соответствия.
Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта. Закажите услугу настройки эквайринга — получите надёжную интеграцию.







