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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой Robokassa
Средняя
~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С-Битрикс с платёжной системой Robokassa

Robokassa — агрегатор платежей: принимает карты, ЮMoney, QIWI, наличные через терминалы. Удобен когда нужно предоставить максимум способов оплаты. У Битрикс есть готовый модуль Robokassa в Маркетплейсе, но нередко нужна кастомная реализация с контролем параметров и логикой.

Схема работы

  1. Битрикс формирует подписанную ссылку на форму Robokassa
  2. Покупатель оплачивает (карта, кошелёк, наличные)
  3. Robokassa отправляет POST-уведомление на ResultURL магазина
  4. Магазин проверяет подпись, подтверждает оплату
  5. 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));

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

Задача Срок
Обработчик: формирование ссылки + ResultURL 1–2 дня
Дополнительные параметры Shp_* 0.5 дня
Фискализация +1–2 дня
Тестирование полного цикла 0.5 дня