Запрос на оплату через MONETA.Assistant
Запрос на оплату через интерфейс MONETA.Assistant представляет собой HTML-форму. Форма должна быть подготовлена магазином, передана пользователю, подтверждена пользователем и отправлена на адрес https://www.payanyway.ru/assistant.htm для обработки системой «MONETA.RU». Для тестирования можно использовать demo-площадку: https://demo.moneta.ru/assistant.htm.
Если планируется работа через iframe, используйте https://www.payanyway.ru/assistant.widget (на demo: https://demo.moneta.ru/assistant.widget).
Примечание: Альтернативно для продакшена часто используется https://moneta.ru/assistant.htm и https://moneta.ru/assistant.widget — поведение соответствует указанным выше адресам на домене PayAnyWay.
Новую форму достаточно поместить внутрь iframe — она адаптируется к размерам1.
Параметры запроса на оплату
Обязательные параметры
- MNT_ID
- Идентификатор магазина в системе MONETA.RU. Соответствует номеру расширенного счёта магазина.
Примечание: Номера счетов (MNT_ID) на demo-площадке и рабочей платформе различаются.
- MNT_AMOUNT
- Сумма оплаты. Десятичные символы отделяются точкой; не более двух знаков после запятой. Значение носит рекомендательный характер и технически может быть изменено пользователем. Необязательный параметр, если в настройках счёта указан Check URL. Если параметр не задан, сумма будет запрошена в учётной системе магазина соответствующим проверочным запросом.
Необязательные параметры
- MNT_TRANSACTION_ID
- Внутренний идентификатор заказа в магазине (до 255 символов). Если магазин не укажет параметр, MONETA.Assistant сгенерирует 20-значный идентификатор, например
52972360059455248073.
Подсказка: В личном кабинете Moneta.RU этот параметр также может называться CTID, «Внешний ID» или «Внешний идентификатор».
- MNT_CURRENCY_CODE
- ISO-код валюты оплаты заказа. Должен соответствовать коду валюты счёта получателя (MNT_ID). Возможные значения:
RUB,USD,EUR. - MNT_TEST_MODE
- Указание тестового режима запроса:
0— рабочий режим;1— тестовый режим без реального списания и зачисления. Значение по умолчанию:0.
Примечание: Запросы также выполняются в тестовом режиме, если включён флаг «Тестовый режим» в настройках счёта.
- MNT_DESCRIPTION
- Описание оплаты (не более 500 символов).
- MNT_SUBSCRIBER_ID
- Внутренний идентификатор пользователя в учётной системе магазина.
- MNT_SIGNATURE
- Код идентификации отправителя и проверки целостности данных. Если параметр передан, MONETA.RU сформирует собственный код по параметрам запроса и сравнит его с
MNT_SIGNATURE; при несовпадении MONETA.Assistant завершится с ошибкой. Обязателен, если в настройках счёта включена «Подпись формы оплаты обязательна».
Примечание: Если в запросе на оплату не передаётся MNT_TRANSACTION_ID, параметр MNT_SIGNATURE передавать не следует — такие запросы будут неверны.
- MNT_CUSTOM1, MNT_CUSTOM2, MNT_CUSTOM3
- Произвольные поля; возвращаются магазину в параметрах отчёта о проведённой оплате.
- MNT_SUCCESS_URL
- URL страницы после успешных действий. Используется только при включённом флаге «Можно переопределять настройки в URL». Если флаг не выставлен или параметр не задан — берётся Success URL из настроек счёта. Если не передать
MNT_SUCCESS_URLи не задать поле в настройках, но флаг переопределения включён, по умолчанию используется https://www.moneta.ru/paymentSuccess.htm. К ссылке MONETA.Assistant добавляетMNT_TRANSACTION_ID. - MNT_INPROGRESS_URL
- URL после успешной авторизации средств до подтверждения списания (поддерживается не всеми методами оплаты). Логика переопределения такая же, как у
MNT_SUCCESS_URL; при отсутствии значений и включённом флаге используется настройка счёта. К ссылке добавляетсяMNT_TRANSACTION_ID. - MNT_FAIL_URL
- URL после отменённой или неуспешной оплаты; отчёт магазину не отсылается. Логика переопределения аналогична; если URL не задан при включённом флаге, по умолчанию используется https://www.moneta.ru/paymentFail.htm. К ссылке добавляется
MNT_TRANSACTION_ID. - MNT_RETURN_URL
- URL при добровольном отказе от оплаты; отчёт не отсылается. Переопределение — как у других URL. К ссылке добавляется
MNT_TRANSACTION_ID. - moneta.locale
- Язык интерфейса:
ru— русский,en— английский. - paymentSystem.unitId
- Предварительный выбор платежной системы (например, card — банковские карты, sbpc2b — СБП, sberpay — SberPay). Список на странице https://www.moneta.ru/viewPaymentMethods.htm.
- paymentSystem.limitIds
- Список идентификаторов платёжных систем через запятую, которые нужно показать пользователю (например,
card,sbpc2b,sberpay). - paymentDetails
- Состояние блока деталей платежа в интерфейсе MONETA.Assistant:
true— детали развёрнуты,false— свёрнуты. Если параметр не передан, считаетсяfalse. - showAdditionalPaymentMethods
- Внутри способов оплаты СБП, SberPay, T-Pay и аналогичных при значении
trueотображаются кнопки всех доступных методов оплаты. Если параметр не передан или передан какfalse, эти кнопки не показываются.
Формирование подписи в запросе на оплату
Конкатенация значений и кода проверки целостности данных, затем MD5 (RFC 1321) и представление байт как шестнадцатеричной строки:
MNT_SIGNATURE = MD5(
MNT_ID + MNT_TRANSACTION_ID + MNT_AMOUNT + MNT_CURRENCY_CODE
+ MNT_SUBSCRIBER_ID + ТЕСТОВЫЙ_РЕЖИМ + КОД_ПРОВЕРКИ_ЦЕЛОСТНОСТИ_ДАННЫХ)где ТЕСТОВЫЙ_РЕЖИМ — 1, если запрос в тестовом режиме, иначе 0.
MNT_AMOUNTв подписи — всегда с двумя десятичными знаками (1.23,123.00).- Если
MNT_SUBSCRIBER_IDотсутствует, в подписи используется пустая строка (неnull, не0, не пробел).
Примеры запросов на оплату
Пример 1
Минимальная форма (при корректных настройках счёта): заказ FF790ABCD, счёт 00000001, сумма 120.25 RUB.
<form method="post" action="https://www.payanyway.ru/assistant.htm">
<input type="hidden" name="MNT_ID" value="00000001">
<input type="hidden" name="MNT_TRANSACTION_ID" value="FF790ABCD">
<input type="hidden" name="MNT_CURRENCY_CODE" value="RUB">
<input type="hidden" name="MNT_AMOUNT" value="120.25">
<input type="submit" value="Pay order">
</form>Пример 2
С дополнительными параметрами и тестовым режимом:
<form method="post" action="https://www.payanyway.ru/assistant.htm">
<input type="hidden" name="MNT_ID" value="00000001">
<input type="hidden" name="MNT_TRANSACTION_ID" value="FF790ABCD">
<input type="hidden" name="MNT_CURRENCY_CODE" value="RUB">
<input type="hidden" name="MNT_AMOUNT" value="120.25">
<input type="hidden" name="MNT_TEST_MODE" value="1">
<input type="hidden" name="MNT_SUCCESS_URL" value="https://www.magazin.ru/success.htm">
<input type="hidden" name="MNT_FAIL_URL" value="https://www.magazin.ru/failure.htm">
<input type="hidden" name="MNT_RETURN_URL" value="https://www.magazin.ru/payment.htm">
<input type="hidden" name="MNT_INPROGRESS_URL" value="https://www.magazin.ru/processing.htm">
<input type="hidden" name="MNT_CUSTOM1" value="1234567890">
<input type="hidden" name="MNT_CUSTOM2" value="abcdefghij">
<input type="hidden" name="MNT_CUSTOM3" value="somebody@somewhere.com">
<input type="submit" value="Pay order">
</form>Пример 3
Интерфейс на английском, платёжная система по умолчанию — СБП:
<form method="post" action="https://www.payanyway.ru/assistant.htm">
<input type="hidden" name="MNT_ID" value="00000001">
<input type="hidden" name="MNT_TRANSACTION_ID" value="FF790ABCD">
<input type="hidden" name="MNT_CURRENCY_CODE" value="RUB">
<input type="hidden" name="MNT_AMOUNT" value="120.25">
<input type="hidden" name="moneta.locale" value="en">
<input type="hidden" name="paymentSystem.unitId" value="sbpc2b">
<input type="submit" value="Pay order">
</form>Пример 4
С подписью MNT_SIGNATURE (обычный режим), счёт 54600817:
<form method="post" action="https://www.payanyway.ru/assistant.htm">
<input type="hidden" name="MNT_ID" value="54600817">
<input type="hidden" name="MNT_TRANSACTION_ID" value="FF790ABCD">
<input type="hidden" name="MNT_CURRENCY_CODE" value="RUB">
<input type="hidden" name="MNT_AMOUNT" value="120.25">
<input type="hidden" name="MNT_SIGNATURE" value="c8222aef6362c7f1239ccdc729d1a200">
<input type="submit" value="Pay order">
</form>Подпись: строка для MD5 (значения подряд, без разделителей) — 54600817FF790ABCD120.25RUB0 + код проверки QWERTY:
54600817FF790ABCD120.25RUB0QWERTYДля тестового режима в подписи перед кодом проверки используется 1 вместо 0.
Минимальная ширина iframe — 320px, рекомендуемая — 488px. Полезная высота зависит от числа способов оплаты: чем их больше, тем выше должен быть iframe, чтобы не требовалась прокрутка. ↩︎