Метод process-payment
Подтверждение платежа, ранее созданного методом request-payment. Указание метода проведения платежа.
Запрос
Параметр | Тип | Описание |
---|---|---|
request_id | string | Идентификатор запроса, полученный из ответа метода request-payment. |
money_source | string | Запрашиваемый метод проведения платежа:
По умолчанию: wallet |
csc | string | Card Security Code, CVV2/CVC2-код привязанной банковской карты пользователя. Параметр следует указывать только при платеже с привязанной банковской карты. |
ext_auth_success_uri | string | Адрес страницы возврата при успехе аутентификации платежа банковской картой по 3‑D Secure. Указывается, если приложение поддерживает аутентификацию по 3‑D Secure. Обязательный параметр для такой аутентификации. |
ext_auth_fail_uri | string | Адрес страницы возврата при отказе в аутентификации платежа банковской картой по 3‑D Secure. Указывается, если приложение поддерживает аутентификацию по 3‑D Secure. Обязательный параметр для такой аутентификации. |
Пример запроса, оплата со счета пользователя
POST /api/process-payment HTTP/1.1 Host: yoomoney.ru Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 Content-Type: application/x-www-form-urlencoded Content-Length: 18 request_id=1234567
Пример запроса, оплата с привязанной банковской карты пользователя
POST /api/process-payment HTTP/1.1 Host: yoomoney.ru Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 Content-Type: application/x-www-form-urlencoded Content-Length: 44 request_id=1234567&money_source=card&csc=123
Ответ
Метод возвращает следующие параметры:
Параметр | Тип | Описание |
---|---|---|
status | string | Код результата выполнения операции. Возможные значения:
|
error | string | Код ошибки при проведении платежа (пояснение к полю status ). Присутствует только при ошибках. |
payment_id | string | Идентификатор проведенного платежа. Присутствует только при успешном выполнении метода. Этот параметр соответствует параметру operation_id в методах operation-history и operation-details истории плательщика. |
balance | amount | Баланс счета пользователя после проведения платежа. Присутствует только при выполнении следующих условий:
|
invoice_id | string | Номер транзакции магазина в ЮMoney. Присутствует при успешном выполнении платежа в магазин. |
payer | string | Номер счета плательщика. Присутствует при успешном переводе средств на счет другого пользователя ЮMoney. |
payee | string | Номер счета получателя. Присутствует при успешном переводе средств на счет другого пользователя ЮMoney. |
credit_amount | amount | Сумма, поступившая на счет получателя. Присутствует при успешном переводе средств на счет другого пользователя ЮMoney. |
account_unblock_uri | string | Адрес, на который необходимо отправить пользователя для разблокировки счета. Поле присутствует в случае ошибки account_blocked . |
acs_uri | string | Адрес страницы аутентификации банковской карты по 3‑D Secure на стороне банка-эмитента. Поле присутствует, если для завершения транзакции с использованием банковской карты требуется аутентификация по 3‑D Secure. |
acs_params | object | Параметры аутентификации карты по 3‑D Secure в формате коллекции «имя-значение». Поле присутствует, если для завершения транзакции с использованием банковской карты требуется аутентификация по 3‑D Secure. |
next_retry | long | Рекомендуемое время, спустя которое следует повторить запрос, в миллисекундах. Поле присутствует при status=in_progress . |
digital_goods | object | Данные о цифровом товаре (пин-коды и бонусы игр, iTunes, Xbox etc). Поле присутствует при успешном платеже в магазины цифровых товаров. |
В ответе метода могут приходить другие служебные поля, их обрабатывать не нужно.
Пример ответа при успешной авторизации платежа
JSON
{ "status": "success", "payment_id": "2ABCDE123456789", "balance": 1000.00 }
Коды ошибок
В случае ошибки выполнения операции возвращается ее код:
Код | Описание |
---|---|
contract_not_found | Отсутствует созданный (но не подтвержденный) платеж с заданным request_id . |
not_enough_funds | Недостаточно средств на счете плательщика. Необходимо пополнить счет и провести новый платеж. |
limit_exceeded | Превышен один из лимитов на операции:
|
money_source_not_available | Запрошенный метод платежа (money_source ) недоступен для данного платежа. |
illegal_param_csc | Отсутствует или указано недопустимое значение параметра csc . |
payment_refused | В платеже отказано. Возможные причины:
|
authorization_reject | В авторизации платежа отказано. Возможные причины:
|
account_blocked | Счет пользователя заблокирован. Для разблокировки счета необходимо отправить пользователя по адресу, указанному в поле account_unblock_uri . |
illegal_param_ext_auth_success_uri | Отсутствует или указано недопустимое значение параметра ext_auth_success_uri . |
illegal_param_ext_auth_fail_uri | Отсутствует или указано недопустимое значение параметра ext_auth_fail_uri . |
все прочие значения | В авторизации платежа отказано. Приложению следует провести новый платеж спустя некоторое время. |
Пример ответа при отказе
JSON
{ "status": "refused", "error": "not_enough_funds" }
Платеж привязанной банковской картой
Необходимые условия выполнения платежа с привязанной банковской карты:
- к счету пользователя в ЮMoney привязана банковская карта;
- пользователь разрешил приложению использование банковской карты для платежей;
- платеж осуществляется в магазин;
- магазин может принимать платежи с банковских карт.
Время платежа с привязанной банковской карты (
money_source=card
) определяется временем обработки транзакции банком-эмитентом карты. Кроме того, ЮMoney могут связываться с сервером магазина, и время его ответа также влияет на время авторизации платежа.Если авторизация платежа продолжается более 1 минуты, метод
process-payment
возвращает код результата операции in_progress
. Приложению следует повторять вызов метода process-payment
с теми же параметрами раз в 1 минуту до получения окончательного ответа (status
должен иметь значение success
или refused
).Пример ответа в случае незавершенной авторизации платежа
JSON
{ "status": "in_progress" }
Если приложение не получило ответ, нельзя однозначно определить состояние платежа. Платеж равновероятно может быть как успешным, так и не успешным. Для разрешения состояния платежа следует повторить вызов
process-payment
с теми же параметрами.Если платеж осуществляется с банковской карты, то может быть затребована дополнительная проверка покупателя по технологии 3‑D Secure.
Сценарий платежа с аутентификацией по 3‑D Secure
Шаг 1. Вызывается метод
request-payment
с параметрами платежа.Шаг 2. Вызывается метод
process-payment
с указанием money-source=card
, csc
кода, ext_auth_success_uri
, ext_auth_fail_uri
.Пример запроса при оплате с банковской карты приложением, поддерживающим 3‑D Secure
POST /api/process-payment HTTP/1.1 Host: yoomoney.ru Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 Content-Type: application/x-www-form-urlencoded Content-Length: 164 request_id=1234567&money-source=card&csc=123&ext_auth_success_uri=http%3A%2F%2Fclient.example.com%2Fsuccess&ext_auth_fail_uri=http%3A%2F%2Fclient.example.com%2Ffail
Шаг 3. Метод
process-payment
возвращает status=ext_auth_required
, acs_uri
, acs_params
.Пример ответа при требовании аутентификации по 3‑D Secure
JSON
{ "status": "ext_auth_required", "acs_uri": "https://acs.alfabank.ru/acs/PAReq", "acs_params": { "MD": "723613-7431F11492F4F2D0", "PaReq": "eJxVUl1T2zAQ/CsZv8f6tCR7LmLSGiidJjAldMpTR7XVxAN2gmynSX59JeNAebu9O93u7QkuDvXzZG9dW22bWURiHE1sU2zLqlnPoofV1VRFFxpWG2dtfm+L3lkNC9u2Zm0nVTmLVvn9r7v5d/uS/UkYt4b8tjibUiGVxazICMeSSkmtwBmlhYw=" } }
Шаг 4. Приложению следует открыть браузер, выполнить POST-запрос по адресу
acs_uri
с параметрами acs_params
как application/x-www-form-urlencoded (аналог HTML form submit).Шаг 5. Клиент проходит аутентификацию по сценарию банка-эмитента и перенаправляется по HTTP 302 Redirect на один из адресов, в зависимости от результата:
ext_auth_success_uri
или ext_auth_fail_uri
.Шаг 6. Приложению следует повторно вызвать метод
process-payment
, указав только один параметр — request_id
.Пример повторного запроса при оплате с банковской карты приложением после прохождения аутентификации по 3‑D Secure
POST /api/process-payment HTTP/1.1 Host: yoomoney.ru Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 Content-Type: application/x-www-form-urlencoded Content-Length: 18 request_id=1234567
Шаг 7. Метод
process-payment
возвращает status=success
или refused
.Данные о цифровых товарах
При успешном платеже в магазин цифровых товаров в ответе присутствует поле
digital_goods
, которое содержит список товаров и список бонусов.Данные о цифровом товаре или бонусе:
Параметр | Тип | Описание |
---|---|---|
merchantArticleId | string | Идентификатор товара в системе продавца. Присутствует только для товаров. |
serial | string | Серийный номер товара (открытая часть пин-кода, кода активации или логин). |
secret | string | Секрет цифрового товара (закрытая часть пин-кода, кода активации, пароль или ссылка на скачивание). |
Пример цифровых товаров
JSON
"digital_goods": { "article": [ { "merchantArticleId": "1234567", "serial": "EAV-0087182017", "secret": "87actmdbsv" }, { "merchantArticleId": "1234567", "serial": "2000012", "secret": "gjhkgjsuurtrghxchfhjkrwetuertrehtthh" }, { "merchantArticleId": "1234567", "serial": "2000013", "secret": "77788sfs7fd89g89dfg77778dfgdjkert789" } ], "bonus": [ { "serial": "XXXX-XX-XX", "secret": "0000-1111-2222-3333-4444" } ] }
Что почитать еще