Как проверить статус транзакции
С помощью API платёжной системы(далее — API системы) вы можете уточнить статус транзакции при проведении платежей и возвратов. Для этого:
- 1.Отправьте запрос к API системы: сформируйте тело запроса, подпишите его и отправьте
POST-запрос по URL:https://api.money.mail.ru/money/2-03/transaction/status. - 2.Получите ответ платёжной системы: проверьте его подпись и обработайте данные.
- 3.Получите платёжное уведомление с результатами проведения транзакциии и ответьте на него: сформируйте тело ответа с данными об успехе или неуспехе обработки уведомления, подпишите ответ и отправьте его платёжной системе.
Шаг 1. Отправьте запрос о статусе транзакции
- 1.Сформируйте тело запроса с идентификатором транзакции в параметре
transaction_id. - 2.Подпишите запрос. При конкатенации на шаге 3 используйте относительный URL запроса:
/money/2-03/transaction/status. - 3.Отправьте API системы
POST-запрос по URL:https://api.money.mail.ru/money/2-03/transaction/status.
Параметры запроса
Параметр | Тип | Описание |
|---|---|---|
transaction_id
обязательный | string | Идентификатор транзакции (платежа или возврата).
Формат: UUID по RFC 4122. |
Пример body для запроса статуса транзакции
{
"transaction_id": "668F9F5C-FB00-11E8-B50F-025A0E4FD3B8"
}
Пример запроса
$ curl -X POST -d 'signature=2501667f7589a9d0991c1453de88a9c75e381239&data=eyJib2R5Ijp7InRyYW5zYWN0aW9uX2lkIjoiNjY4RjlGNUMtRkIwMC0xMUU4LUI1MEYtMDI1QTBFNEZEM0I4In0sImhlYWRlciI6eyJjbGllbnRfaWQiOjY5MTQ0NywidHMiOjE1Njg3OTc3MzF9fQ%3D%3D&version=2-03' https://api.money.mail.ru/money/2-03/transaction/statusШаг 2. Получите ответ платёжной системы на запрос о статусе транзакции
Проверьте подпись ответа и обработайте данные.
При успешной обработке запроса платёжная система вернёт тело ответа.
При ошибке обработки запроса платёжная система вернет заголовок в формате JSON с описанием и кодом ошибки.
Пример body ответа на запрос о статусе транзакции
{
"transaction_id": "668F9F5C-FB00-11E8-B50F-025A0E4FD3B8",
"action": "stop",
"action_param": {
"status": "success"
}
}
Поля объекта body ответа на запрос о статусе транзакции
Поле | Тип | Описание |
|---|---|---|
transaction_id | string | Идентификатор транзакции на стороне платёжной системы. Формат: UUID по RFC 4122. |
action | string | Сценарий дальнейших действий по оплате. Доступные значения:
• redirect — пользователя нужно перенаправить по URL–ссылке для оплаты.
• wait — система ожидает завершения транзакции. Запрашивайте статус транзакции с разумным интервалом методом POST /transaction/status, пока статус не изменится.
• offline — система ожидает офлайн-платежа. Запрашивайте статус транзакции с разумным интервалом методом POST /transaction/status, пока статус не изменится.
• stop — статус транзакции окончательный, значение статуса содержится в status.action_param.
• need_data — система ожидает, когда пользователь введёт данные. |
action_param | object | Набор полей для action. В зависимости от сценария может возвращаться пустым. |
pay_method | string | Платёжный метод. |
Поля объекта action_param
Набор полей для action. В зависимости от сценария может возвращаться пустым.
Поле | Тип | Описание |
|---|---|---|
order_id | string | Идентификатор заказа при офлайн-оплате. Возвращается для сценария action = offline. |
url | string | URL для перехода во внешнюю платежную систему либо на следующий шаг на стороне платёжной системы VK Pay. Передаётся при action = redirect. |
status | string | Дополнительное уточнение статуса для action = stop. Возможные значения:
• success — транзакция успешна
• fail — транзакция неуспешна |
user_choice | object | |
decline_reason | string | Причина отмены транзакции. |
is_reverse | boolean | Признак того, что по этой транзакции прошёл возврат. Возможные значения:
• true — по транзакции прошёл возврат.
• fail — возврата не было. |
externalPaymentUrl | string | URL при оплате через сервис ЮMoney и мобильное приложение СберБанк Онлайн (СБОЛ). |
externalTransactionNumber | string | Идентификатор транзакции от сервиса ЮMoney при оплате через сервис ЮMoney и мобильное приложение СберБанк Онлайн (СБОЛ). |
Поля объекта user_choice
Поля для ввода данных пользователем. Возвращаются внутри объекта action_param.
Поле | Тип | Описание |
|---|---|---|
input | array | Набор полей для ввода данных пользователем. Возвращается для сценария action = need_data. Подробнее — в описании объекта input. |
update_key | string | Константа для передачи введенных пользователем данных в POST-запросе /transaction/update. Обязательное поле для сценария action = need_data. |
extra | string | Дополнительное поля. |
Поля объекта input
Поля для ввода данных пользователем. Возвращаются внутри объекта user_choice.action_param.
Поле | Тип | Описание |
|---|---|---|
name | array | Набор полей для ввода данных пользователем. Возвращается для сценария action = need_data. |
validator | string | Регулярное выражение для проверки значений, которые ввёл пользователь. |
hint | string | Подсказка для пользователя. |
required | boolean | Возможные значения:
• true – пользователь должен ввести данные.
• false – ввод данных необязателен. |
Шаг 3. Ответьте на платёжное уведомление
После проведения транзакции платёжная система вернёт платёжное уведомление с результатом. Проверьте подпись уведомления с помощью публичного ключа платёжной системы, который вы получили при подключении. Расшифруйте данные уведомления, обработайте и отправьте API системы ответ об успешной обработке или об ошибке.
Ошибки при запросе статуса транзакции
Ошибка | Описание |
|---|---|
ERR_NOT_FOUND | Транзакция с таким идентификатором не найдена. Проверьте переданное в запросе значение transaction_id и попробуйте ещё раз. |
ERR_PAY_METHOD_NOT_FOUND | Платёжный метод, который был указан при проведении транзакции, не найден. |
ERR_PAY_METHOD_DISABLED | Платёжный метод, который был указан при проведении транзакции, отключён или недоступен. Обратитесь в техническую поддержку по адресу [email protected]. |