Получение данных от поставщика
Для поставщиков, предоставляющих при оплате расширенную информацию в интерактивном режиме, возможна отправка дополнительных проверочных запросов после каждого шага по вводу параметров.
Проверочные запросы служат для того, чтобы:
- Получить от поставщика данные, которые зависят от уже введённых данных (например, по лицевому счёту вернуть адрес и показания счётчиков).
- Указать сумму заказа, если сумма зависит от введённых параметров.
Основные принципы взаимодействия
Запросы на получение данных MONETA.Assistant отсылает на указанный в настройках «Check URL» адрес методом GET или POST. Ответ должен быть в формате XML. Во время оплаты одного заказа MONETA.Assistant может несколько раз отсылать такие запросы.
Параметры запроса
- MNT_COMMAND
- Для запросов на получение данных —
STEP. - MNT_ID
- Идентификатор поставщика в системе MONETA.RU (номер счёта).
- MNT_AMOUNT
- Фактическая сумма без учёта комиссии MONETA.RU. Если сумма не была передана в HTML-форме, параметра может не быть. Необязательное поле.
- MNT_CURRENCY_CODE
- ISO-код валюты. Необязательное поле.
- MNT_TEST_MODE
1— тестовый режим,0— реальный. Необязательное поле.- MNT_SIGNATURE
- Подпись запроса (см. ниже).
- STEP
- Наименование текущего шага ввода параметров (например,
PRE). - Параметры с именами, начинающимися с
CUSTOMFIELD: - Данные, переданные в запросе на получение дополнительных данных.
Формирование подписи запроса
MNT_SIGNATURE = MD5(
MNT_COMMAND + MNT_ID + MNT_AMOUNT + MNT_CURRENCY_CODE + MNT_TEST_MODE
+ КОД_ПРОВЕРКИ_ЦЕЛОСТНОСТИ_ДАННЫХ)MNT_AMOUNTв подписи — с двумя десятичными знаками.- Если
MNT_AMOUNTв запросе отсутствует, при вычислении подписи это поле пропускается (пустая строка). - В тестовом режиме в подписи используется
1, иначе0.
Примечание: Если суммы нет в запросе:
MNT_SIGNATURE = MD5(
MNT_COMMAND + MNT_ID + MNT_CURRENCY_CODE + MNT_TEST_MODE
+ КОД_ПРОВЕРКИ_ЦЕЛОСТНОСТИ_ДАННЫХ)Поставщик должен сформировать строку по своим данным и полям запроса, вычислить MD5 и сравнить с MNT_SIGNATURE в запросе.
Формат ответа на запрос
<?xml version="1.0" encoding="UTF-8"?>
<MNT_RESPONSE>
<MNT_ID></MNT_ID>
<MNT_RESULT_CODE></MNT_RESULT_CODE>
<MNT_DESCRIPTION></MNT_DESCRIPTION>
<MNT_AMOUNT></MNT_AMOUNT>
<MNT_SIGNATURE></MNT_SIGNATURE>
<MNT_ATTRIBUTES>
<ATTRIBUTE>
<KEY></KEY>
<VALUE></VALUE>
</ATTRIBUTE>
</MNT_ATTRIBUTES>
</MNT_RESPONSE>Параметры ответа:
- MNT_ID
- Идентификатор поставщика в системе MONETA.RU.
- MNT_RESULT_CODE
- Код ответа (см. ниже и коды проверочного запроса).
- MNT_DESCRIPTION
- Описание состояния заказа в произвольной форме.
- MNT_AMOUNT
- Сумма оплаты.
- MNT_SIGNATURE
- Подпись ответа.
- MNT_ATTRIBUTES
- Параметры для использования на следующем шаге ввода.
- KEY / VALUE
- Имя параметра (до 32 символов) и значение.
При получении ответа в системе MONETA.RU анализируются поля. Запрос считается не отправленным, обработка заказа прерывается, если:
- Не удалось получить ответ от обработчика.
- Неверный формат ответа.
MNT_IDилиMNT_TRANSACTION_IDне соответствуют параметрам запроса.MNT_RESULT_CODEне из допустимого списка.MNT_SIGNATUREне совпадает с подписью MONETA.RU.
Формирование подписи в ответе на запрос
MNT_SIGNATURE = MD5(
MNT_RESULT_CODE + MNT_ID + КОД_ПРОВЕРКИ_ЦЕЛОСТНОСТИ_ДАННЫХ)MONETA.Assistant формирует подпись по той же формуле и сравнивает с полем MNT_SIGNATURE в ответе.
Дополнительные коды ответа на проверочный запрос
| Код | Описание |
|---|---|
| 206 | Переданные данные успешно обработаны, сформирован ответ. |
Другие коды ответа соответствуют кодам обычного проверочного запроса (Check URL): см. раздел Проверочные запросы.
Пример запроса
checkUrl?MNT_COMMAND=STEP&MNT_ID=9003&MNT_AMOUNT=123.45&STEP=PRE&MNT_CURRENCY_CODE=RUB&MNT_TEST_MODE=0&MNT_SIGNATURE=bc2125c3cddfcf7380cc5f0f9c480927&CUSTOMFIELD%3A101=120000Пример корректного ответа
<?xml version="1.0" encoding="UTF-8"?>
<MNT_RESPONSE>
<MNT_ID>9003</MNT_ID>
<MNT_RESULT_CODE>206</MNT_RESULT_CODE>
<MNT_AMOUNT>123.45</MNT_AMOUNT>
<MNT_SIGNATURE>bc1f70d760203ff5039896ded453449e</MNT_SIGNATURE>
<MNT_ATTRIBUTES>
<ATTRIBUTE><KEY>102</KEY><VALUE>Moscow</VALUE></ATTRIBUTE>
</MNT_ATTRIBUTES>
</MNT_RESPONSE>