Стандартный модуль Robokassa из Маркетплейса часто не даёт нужной гибкости: вы не можете управлять параметрами Shp_*, менять логику фискализации или оптимизировать обработку под высокие нагрузки. Кастомная интеграция решает эти проблемы — вы получаете полный контроль над формированием подписи, обработкой уведомлений и логикой ошибок. Наш опыт — 7+ лет интеграций Битрикс с платёжными системами, более 50 успешных проектов. Мы гарантируем корректную обработку платежей и полное соответствие требованиям 54-ФЗ.
Почему кастомная интеграция Robokassa надёжнее готового модуля?
Готовый модуль из Маркетплейса ограничен в настройках: не позволяет гибко управлять параметрами Shp_*, не поддерживает нестандартные сценарии фискализации и не оптимизирован под высокие нагрузки. Кастомная интеграция даёт полный контроль над формированием подписи, обработкой уведомлений и логикой ошибок. Она в 3 раза быстрее обрабатывает платежи за счёт оптимизированного кэширования и параллельных запросов к API Битрикс и Robokassa.
| Критерий | Стандартный модуль | Кастомная интеграция |
|---|---|---|
| Управление Shp_* | Ограничено | Полный контроль |
| Фискализация | Базовая, часты ошибки | Гибкая настройка под 54-ФЗ |
| Производительность | Средняя | Оптимизирована (кэширование, параллельные запросы) |
| Гарантия | Отсутствует | 12 месяцев |
Схема работы
- Битрикс формирует подписанную ссылку на форму Robokassa
- Покупатель оплачивает (карта, кошелёк, наличные)
- Robokassa отправляет POST-уведомление на
ResultURLмагазина - Магазин проверяет подпись, подтверждает оплату
- Robokassa перенаправляет покупателя на
SuccessURLилиFailURL
Параметры и формирование подписи
Базовые параметры запроса к Robokassa:
| Параметр | Значение | Описание |
|---|---|---|
MerchantLogin |
из ЛК | Логин магазина |
OutSum |
сумма | Сумма оплаты |
InvId |
orderId | Номер заказа |
Description |
текст | Описание (до 100 символов) |
SignatureValue |
MD5/SHA256 | Подпись |
IsTest |
1 | Тестовый режим |
Encoding |
utf-8 | Кодировка |
Подпись формируется как MD5 или SHA256 (зависит от настроек магазина в ЛК Robokassa):
// MD5 подпись $signature = md5("{$merchantLogin}:{$outSum}:{$invId}:{$password1}"); // SHA256 (рекомендуется) $signature = hash('sha256', "{$merchantLogin}:{$outSum}:{$invId}:{$password1}"); // URL платёжной формы $payUrl = 'https://auth.robokassa.ru/Merchant/Index.aspx?' . http_build_query([ 'MerchantLogin' => $merchantLogin, 'OutSum' => number_format($outSum, 2, '.', ''), 'InvId' => $invId, 'Description' => $description, 'SignatureValue' => $signature, 'Encoding' => 'utf-8', 'IsTest' => $isTest ? 1 : 0, ]); Обработка ResultURL
Robokassa отправляет POST с параметрами на ResultURL. Проверка подписи обязательна — используется Password2 (отличается от Password1):
$outSum = $_POST['OutSum']; $invId = $_POST['InvId']; $received = strtolower($_POST['SignatureValue']); $password2 = $this->getBusinessValue($payment, 'ROBOKASSA_PASSWORD2'); $expected = strtolower(hash('sha256', "{$outSum}:{$invId}:{$password2}")); if ($received !== $expected) { echo 'bad sign'; exit; } // Подпись верна — подтверждаем оплату $order = \Bitrix\Sale\Order::loadByAccountNumber($invId); // ... setPaid('Y'), save() echo "OK{$invId}"; // Robokassa ждёт именно этот ответ Критично: ответ на ResultURL должен быть строго OK{InvId}. Если Robokassa не получает этот ответ — считает уведомление неотправленным и пробует снова (до 8 раз).
Дополнительные параметры (Shp_*)
Robokassa поддерживает пользовательские параметры с префиксом Shp_. Они включаются в подпись и возвращаются в ResultURL. Используйте для передачи идентификатора заказа в Битрикс, если InvId занят или нужны дополнительные данные:
$signature = hash('sha256', "{$merchantLogin}:{$outSum}:{$invId}:{$password1}:Shp_item={$itemId}&Shp_user={$userId}" ); // Параметры Shp_ в подпись включаются в алфавитном порядке ключей Фискализация
Robokassa поддерживает ФЗ-54 через параметр Receipt в base64-encoded JSON:
$receipt = [ 'sno' => 'osn', // система налогообложения 'items' => array_map(function($basketItem) { return [ 'name' => $basketItem->getField('NAME'), 'quantity' => $basketItem->getQuantity(), 'sum' => $basketItem->getPrice() * $basketItem->getQuantity(), 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'tax' => 'vat20', ]; }, iterator_to_array($order->getBasket())), ]; $receiptEncoded = base64_encode(json_encode($receipt, JSON_UNESCAPED_UNICODE)); Как обеспечить корректную фискализацию чеков?
Для соблюдения 54-ФЗ при оплате через Robokassa необходимо передавать в запросе параметр Receipt с корректными данными о товарах, ставках НДФЛ и системе налогообложения. Частая ошибка — неверный формат payment_object или tax. В нашей практике мы используем предварительную валидацию чека через тестовый контур Robokassa. Это позволяет избежать отказов фискального накопителя и штрафов.
Пример из практики: интернет-магазин бытовой техники
Недавно мы внедрили кастомную интеграцию Robokassa для крупного магазина бытовой техники. Стандартный модуль не справлялся с нагрузкой в 2000+ заказов в день — платежи зависали, фискализация сыпала ошибки. Мы переписали модуль: добавили асинхронную обработку ResultURL через очередь, оптимизировали запросы к инфоблокам и настроили параллельную отправку чеков. В результате время подтверждения платежа снизилось с 3 секунд до 0.4 секунды, а число неуспешных фискализаций упало до нуля. Заказчик сэкономил на возвратах и штрафах — инвестиции в интеграцию окупились за пару месяцев.
Что входит в работу
Мы предоставляем интеграцию «под ключ»:
- Анализ текущей схемы оплаты на сайте
- Разработка модуля с полным циклом: генерация ссылки, ResultURL, SuccessURL, FailURL
- Настройка дополнительных параметров
Shp_*для передачи метаданных заказа - Реализация фискализации в соответствии с 54-ФЗ
- Тестирование на тестовом и боевом контуре Robokassa
- Документация по API и инструкция по обслуживанию
- Гарантия на код — 12 месяцев
Сроки и бюджет
| Задача | Срок |
|---|---|
| Обработчик: формирование ссылки + ResultURL | 1–2 дня |
| Дополнительные параметры Shp_* | 0.5 дня |
| Фискализация | +1–2 дня |
| Тестирование полного цикла | 0.5 дня |
Стоимость рассчитывается индивидуально и зависит от сложности — в среднем она сопоставима с тремя месяцами абонемента на готовый модуль, но даёт гораздо больше контроля. Оценим ваш проект за 1 день.
Свяжитесь с нами для консультации — мы гарантируем стабильную работу даже при пиковых нагрузках. Закажите интеграцию, и мы настроим всё под ваш бизнес.







