Интерфейс оплаты
Об интерфейсе оплаты
Внимание! Если вы используете 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. - Модификаторы добавляются только при наличии и строго в следующем порядке:
Receipt— фискальные данные в минимизированном JSON UTF-8.StepByStep— признак поэтапной оплаты.ResultUrl2— дополнительный серверный callback.SuccessUrl2— альтернативный success-редирект.SuccessUrl2Method— метод запроса кSuccessUrl2(GETилиPOST).FailUrl2— альтернативный fail-редирект.FailUrl2Method— метод запроса кFailUrl2.Token— токен сохранённой карты для CoF-платежей.
После формирования строки вычислите хеш — по умолчанию используется MD5, при необходимости можно переключиться на SHA-256.
Дополнительные пользовательские параметры
Параметры, начинающиеся с префикса Shp_, позволяют передать в Robokassa собственные данные — идентификатор пользователя, тип товара или любые другие служебные значения.
- Добавляйте только латинские буквы, цифры и подчёркивания после префикса
Shp_. - Перед отправкой запроса отсортируйте параметры
Shp_*по названию и включите их в строку подписи в формате:Shp_key=value. - Переданные значения будут возвращены в ResultURL, SuccessURL, FailURL и других уведомлениях без изменений.
Используйте пользовательские параметры, чтобы связать оплату с внутренними сущностями магазина или передать дополнительные признаки заказа.