Перейти к основному содержимому

Интерфейс оплаты

Об интерфейсе оплаты

Внимание! Если вы используете CMS систему или любые другие торговые платформы, рекомендуем ознакомиться с готовыми решениями в разделе виджеты и модули.

Интерфейс Robokassa, предлагает перейти к оплате, нажав одну кнопку. Предварительно магазин должен сохранить у себя передаваемую информацию (номер счёта, сумма, дата формирования и дополнительные параметры, если они используются).

Покупатель отправляется для оплаты в платёжный интерфейс Robokassa, выбирает способ оплаты и совершает платёж. После чего средства перечисляются на Ваш баланс в системе Robokassa, а на указанный вами ResultURL мы пришлём уведомление об оплате.

URL для запросов HTTP GET/POST:

https://auth.robokassa.ru/Merchant/Index.aspx

Готовый виджет для оплаты на сайте

Вы можете выбрать готовый виджет и кастомизировать его под ваши нужды в конструкторе или в личном кабинете в разделе "Платежный виджет"

В конструкторе выберите нужный виджет способа перехода к оплате, отредактируйте его внешний вид, проставте сумму оплаты и при необходимости дополнительные поля. Затем сгенерируемый готовый код скопируйте к себе на сайт.

По каждому магазину передается четыре параметра:

• Кнопка перехода на оплату;

• Форма с произвольной суммой оплаты;

• Ссылка перехода на оплату;

• Оплата с помощью QR-кода;

Пример кода виджета, для самостоятельной установки

Приведённые примеры предполагают, что в технических настройках магазина выбран алгоритм расчёта хэша MD5.

Кнопка

Минимальный вариант — это кнопка, которая сразу ведёт пользователя на страницу Robokassa.

<?php
$merchantLogin = "demo";
$password1 = "password_1";
$invId = 12;
$outSum = "990.00";
$description = "Оплата заказа №12";

$signature = md5("$merchantLogin:$outSum:$invId:$password1");
?>

<form action="https://auth.robokassa.ru/Merchant/Index.aspx" method="POST">
<input type="hidden" name="MerchantLogin" value="<?= $merchantLogin ?>" />
<input type="hidden" name="OutSum" value="<?= $outSum ?>" />
<input type="hidden" name="InvId" value="<?= $invId ?>" />
<input type="hidden" name="Description" value="<?= $description ?>" />
<input type="hidden" name="SignatureValue" value="<?= $signature ?>" />
<input type="hidden" name="IsTest" value="1" />
<button type="submit">Оплатить через Robokassa</button>
</form>

Форма с произвольной суммой

Если покупатель должен сам ввести сумму (например, при пополнении счёта), используйте промежуточную форму. Скрипт ниже принимает сумму от пользователя, рассчитывает подпись и автоматически отправляет данные на страницу оплаты.

<?php
$merchant_login = "demo";
$password_1 = "password_1";
$invid = 0;
$description = "Техническая документация по ROBOKASSA";
$default_sum = "10";
$signature_value = md5("$merchant_login::$invid:$password_1");
print "<html><script language=JavaScript ".
"src='https://auth.robokassa.ru/Merchant/PaymentForm/FormFLS.js?".
"MerchantLogin=$merchant_login&DefaultSum=$default_sum&InvoiceID=$invid".
"&Description=$description&SignatureValue=$signature_value'></script></html>";
?>

С применением всех параметров

Расширенный пример позволяет передать дополнительные настройки: язык интерфейса, валюту, email покупателя и чек для фискализации.

<?php
// регистрационная информация (Идентификатор магазина, пароль №1)
$merchant_login = "demo";
$password_1 = "password_1";
// номер заказа
$invid = 12345;
// описание заказа
$description = "Техническая документация по ROBOKASSA";
// сумма заказа
$out_sum = "8.96";
// товарная номенклатура в url encode
$receipt = "%7B%22items%22%3A%5B%7B%22name%22%3A%22product%22%2C%22quantity%22%3A1%2C%22sum%22%3A8.96%2C%22tax%22%3A%22none%22%7D%5D%7D";
// предлагаемая валюта платежа
$incurrlabel = "BankCard";
// язык интерфейса
$culture = "ru";
// email покупателя
$Email = "test@test.com";
// срок оплаты, до которого необходимо совершить платеж
$ExpirationDate = "2029-01-16T12:00";
// пользовательский параметр
$Shp_item = "digital";
// generate signature
$signature_value = md5("$merchant_login:$out_sum:$invid:$receipt:$password_1:Shp_item=$Shp_item");
// форма оплаты товара
print
"<html>".
"<form action='https://auth.robokassa.ru/Merchant/Index.aspx' method='POST'>".
"<input type='hidden' name='MerchantLogin' value='$merchant_login'>".
"<input type='hidden' name='OutSum' value='$out_sum'>".
"<input type='hidden' name='InvId' value='$invid'>".
"<input type='hidden' name='Description' value='$description'>".
"<input type='hidden' name='SignatureValue' value='$signature_value'>".
"<input type='hidden' name='Shp_item' value='$Shp_item'>".
"<input type='hidden' name='IncCurrLabel' value='$incurrlabel'>".
"<input type='hidden' name='Culture' value='$culture'>".
"<input type='hidden' name='Email' value='$Email'>".
"<input type='hidden' name='ExpirationDate' value='$ExpirationDate'>".
"<input type='hidden' name='Receipt' value='$receipt'>".
"<input type='submit' value='Оплатить'>".
"</form>".
"</html>";
?>

Скачать примеры

Описание параметров

Обязательные параметры

ПараметрЗначение
MerchantLoginЛогин магазина, указанный в технических настройках.
OutSumСумма к оплате. Формат — число через точку, например 123.45.
SignatureValueКонтрольная сумма запроса. Строится из строки MerchantLogin:OutSum:[InvId]:[модификаторы]:Пароль#1:[Shp_*] с использованием настроенного метода хэширования. Подробнее — в разделе «Сборка подписи».

Необязательные параметры

ПараметрЗначение
InvIdНомер счёта в магазине. Должен быть уникальным для каждой оплаты.
DescriptionНазвание товара или услуги (до 100 символов, без спецсимволов).
EmailПочта покупателя. Используется для чеков и уведомлений.
IncCurrLabelПредлагаемый способ оплаты или валюта. Например, BankCard для банковских карт. Подробности см. в разделе «XML-интерфейсы».
CultureЯзык интерфейса (ru или en).
EncodingКодировка передаваемых данных (по умолчанию UTF-8).
IsTestВключение тестового режима (1 — тест, 0 — основной).
ExpirationDateКрайний срок оплаты в формате ISO 8601 (YYYY-MM-DDThh:mm).
ReceiptФискальные данные в формате JSON (закодированы в UTF-8 и затем в URL). Подробности см. в разделе «Фискализация».
StepByStepПризнак холда (true), при котором оплата проводится в два этапа. Подробности см. в разделе «Холдирование и предавторизация».
ResultUrl2Дополнительный серверный callback. Используется, например, для холдов. Подробности см. в разделе «Дополнительное оповещение об оплате на ResultUrl2».
SuccessUrl2Дополнительный адрес возврата при успешной оплате. Подробности см. в разделе «Дополнительная переадресация (ReturnURL: SuccessUrl2)».
SuccessUrl2MethodМетод запроса к SuccessUrl2 (GET или POST).
FailUrl2Дополнительный адрес возврата при ошибке. Подробности см. в разделе «Дополнительная переадресация (ReturnURL: FailUrl2)».
FailUrl2MethodМетод запроса к FailUrl2 (GET или POST).
TokenТокен сохранённой карты. Подробности см. в разделе «Оплата по сохранённой карте».
RecurringФлаг периодического платежа (true). Подробности см. в разделе «Периодические платежи».
ShpДополнительные пользовательские параметры. Подробности см. в разделе «Дополнительные пользовательские параметры».

Сборка подписи SignatureValue

SignatureValue подтверждает, что запрос на платёж сформирован вашим магазином. Строка для подписи собирается последовательно и всегда разделяется двоеточиями без пробелов:

MerchantLogin:OutSum:[InvId или пусто>]:[модификаторы в строгом порядке]:Пароль#1:[Shp_]

Основные правила:

  • Если InvId не передаётся, оставьте пустой слот (OutSum::...).
  • Пароль#1 из личного кабинета всегда указывается перед пользовательскими параметрами.
  • Дополнительные параметры Shp_* добавляются после пароля, сортируются по названию ключа и присоединяются в формате :Shp_key=value.

Состав строки:

  • Обязательные элементы — MerchantLogin, OutSum, Пароль#1.
  • Опциональные — InvId.
  • Модификаторы добавляются только при наличии и строго в следующем порядке:
    1. Receipt — фискальные данные в минимизированном JSON UTF-8.
    2. StepByStep — признак поэтапной оплаты.
    3. ResultUrl2 — дополнительный серверный callback.
    4. SuccessUrl2 — альтернативный success-редирект.
    5. SuccessUrl2Method — метод запроса к SuccessUrl2 (GET или POST).
    6. FailUrl2 — альтернативный fail-редирект.
    7. FailUrl2Method — метод запроса к FailUrl2.
    8. Token — токен сохранённой карты для CoF-платежей.

После формирования строки вычислите хеш — по умолчанию используется MD5, при необходимости можно переключиться на SHA-256.

Дополнительные пользовательские параметры

Параметры, начинающиеся с префикса Shp_, позволяют передать в Robokassa собственные данные — идентификатор пользователя, тип товара или любые другие служебные значения.

  • Добавляйте только латинские буквы, цифры и подчёркивания после префикса Shp_.
  • Перед отправкой запроса отсортируйте параметры Shp_* по названию и включите их в строку подписи в формате :Shp_key=value.
  • Переданные значения будут возвращены в ResultURL, SuccessURL, FailURL и других уведомлениях без изменений.

Используйте пользовательские параметры, чтобы связать оплату с внутренними сущностями магазина или передать дополнительные признаки заказа.