Запрос на оплату через 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.


  1. Минимальная ширина iframe — 320px, рекомендуемая — 488px. Полезная высота зависит от числа способов оплаты: чем их больше, тем выше должен быть iframe, чтобы не требовалась прокрутка. ↩︎