Метод 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. Обязательный параметр для такой аутентификации.

Тестовый платеж

Тестовый платеж позволяет проверить работу вашего приложения без совершения настоящих платежей. В тестовом режиме можно провести любой вид платежа, для этого к параметрам метода необходимо добавить отладочные параметры:

Параметр Тип Описание
test_payment string Признак тестового платежа — значение поля true
test_card string Необязательное поле. Признак наличия тестовой банковской карты — значение поля available
test_result string

Желаемый результат работы тестового платежа, возможные значения:

  • success — успешное выполнение;
  • код ошибки из таблицы — метод вернет указанный код ошибки;
  • иное значение - метод вернет ошибку authorization_reject.
Совет.

Сервер Яндекс.Денег проверяет все параметры метода (вне зависимости от значения параметра test_result) и может отвечать ошибкой, если эти параметры некорректны.

Возвращает

Метод возвращает следующие параметры:

Параметр Тип Описание
status string Код результата выполнения операции (см. таблицу).
error string Код ошибки при проведении платежа (пояснение к полю status). Присутствует только при ошибках.
payment_id string Идентификатор проведенного платежа. Присутствует только при успешном выполнении метода. Этот параметр соответствует параметру operation-id в методах operation-history и operation-details истории плательщика.
balance amount Баланс счета пользователя после проведения платежа. Присутствует только при выполнении следующих условий:
  • метод выполнен успешно;
  • токен авторизации обладает правом account-info.
invoice_id string Номер транзакции магазина в Яндекс.Деньгах. Присутствует при успешном выполнении платежа в магазин.
payer string Номер счета плательщика. Присутствует при успешном переводе средств на счет другого пользователя Яндекс.Денег.
payee string Номер счета получателя. Присутствует при успешном переводе средств на счет другого пользователя Яндекс.Денег.
credit_amount amount Сумма, поступившая на счет получателя. Присутствует при успешном переводе средств на счет другого пользователя Яндекс.Денег.
account_unblock_uri string Адрес, на который необходимо отправить пользователя для разблокировки счета. Поле присутствует в случае ошибки account_blocked.
hold_for_pickup_link string Ссылка на получение перевода до востребования при отправке его Яндекс.Почтой. Поле присутствует, если значение известно.
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). Поле присутствует при успешном платеже в магазины цифровых товаров.

Код результата выполнения операции:

Код Описание
success Успешное выполнение (платеж проведен). Это конечное состояние платежа.
refused Отказ в проведении платежа. Причина отказа возвращается в поле error. Это конечное состояние платежа.
in_progress Авторизация платежа не завершена. Приложению следует повторить запрос с теми же параметрами спустя некоторое время.
ext_auth_required Для завершения авторизации платежа с использованием банковской карты требуется аутентификация по технологии 3-D Secure.
все прочие значения Состояние платежа неизвестно. Приложению следует повторить запрос с теми же параметрами спустя некоторое время.
Совет.

В ответе метода могут приходить другие служебные поля, их обрабатывать не нужно.

В случае ошибки выполнения операции возвращается ее код:

Код Описание
contract_not_found Отсутствует созданный(но не подтвержденный) платеж с заданным request_id.
not_enough_funds Недостаточно средств на счете плательщика. Необходимо пополнить счет и провести новый платеж.
limit_exceeded Превышен один из лимитов на операции:
  • на сумму операции для выданного токена авторизации;
  • сумму операции за период времени для выданного токена авторизации;
  • ограничений Яндекс.Денег для различных видов операций.
money_source_not_available Запрошенный метод платежа (money_source) недоступен для данного платежа.
illegal_param_csc Отсутствует или указано недопустимое значение параметра csc.
payment_refused В платеже отказано. Возможные причины:
  • магазин отказал в приеме платежа(запрос checkOrder);
  • перевод пользователю Яндекс.Денег невозможен(например, превышен лимит остатка кошелька получателя).
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.
все прочие значения В авторизации платежа отказано. Приложению следует провести новый платеж спустя некоторое время.
Важно.

Время платежа с привязанной банковской карты (money_source=card) определяется временем обработки транзакции банком-эмитентом карты. Кроме того, Яндекс.Деньги могут связываться с сервером магазина, и время его ответа также влияет на время авторизации платежа.

Если авторизация платежа продолжается более 1 минуты, метод process-payment возвращает код результата операции in_progress. Приложению следует повторять вызов метода process-payment с теми же параметрами раз в 1 минуту до получения окончательного ответа (status должен иметь значение success или refused).

Осторожно. Если приложение не получило ответ, нельзя однозначно определить состояние платежа. Платеж равновероятно может быть как успешным, так и не успешным. Для разрешения состояния платежа следует повторить вызов process-payment с теми же параметрами.
Совет.
Необходимые условия выполнения платежа с привязанной банковской карты:
  • к счету пользователя в Яндекс.Деньгах привязана банковская карта;
  • пользователь разрешил приложению использование банковской карты для платежей;
  • платеж осуществляется в магазин;
  • магазин может принимать платежи с банковских карт.

Аутентификация платежа привязанной банковской картой по технологии 3-D Secure

Если платеж осуществляется с банковской карты, то может быть затребована дополнительная проверка покупателя по технологии 3-D Secure.

Сценарий платежа с аутентификацией по 3-D Secure:

  • вызывается метод request-payment с параметрами платежа;
  • вызывается метод process-payment с указанием money-source=card, csc кода, ext_auth_success_uri, ext_auth_fail_uri;
  • метод process-payment возвращает status=ext_auth_required, acs_uri, acs_params;
  • приложению следует открыть браузер, выполнить POST-запрос по адресу acs_uri с параметрами acs_params как application/x-www-form-urlencoded (аналог HTML form submit);
  • клиент проходит аутентификацию по сценарию банка-эмитента и перенаправляется по HTTP 302 Redirect на один из адресов, в зависимости от результата: ext_auth_success_uri или ext_auth_fail_uri;
  • приложению следует повторно вызвать метод process-payment, указав только один параметр — request_id;
  • метод process-payment возвращает status=success или refused.

Данные о цифровых товарах

При успешном платеже в магазин цифровых товаров в ответе присутствует поле digital_goods, которое содержит список товаров и список бонусов.

Данные о цифровом товаре или бонусе:

Параметр Тип Описание
merchantArticleId string Идентификатор товара в системе продавца. Присутствует только для товаров.
serial string Серийный номер товара (открытая часть пин-кода, кода активации или логин).
secret string Секрет цифрового товара (закрытая часть пин-кода, кода активации, пароль или ссылка на скачивание).

Пример цифровых товаров:


"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"
    }
  ]
}
    

Примеры

Пример запроса, оплата со счета пользователя:

POST /api/process-payment HTTP/1.1
Host: money.yandex.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: money.yandex.ru
Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 
Content-Type: application/x-www-form-urlencoded
Content-Length: 44 

request_id=1234567&money_source=card&csc=123

Пример ответа в случае незавершенной авторизации платежа:

{ 
"status": "in_progress" 
} 

Пример запроса при оплате с банковской карты приложением, поддерживающим 3- D Secure:

POST /api/process-payment HTTP/1.1
Host: money.yandex.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-D Secure:

POST /api/process-payment HTTP/1.1
Host: money.yandex.ru
Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123
Content-Type: application/x-www-form-urlencoded
Content-Length: 18

request_id=1234567

Пример ответа при успешной авторизации платежа:

{
  "status": "success",
  "payment_id": "2ABCDE123456789",
  "balance": 1000.00
}

Пример ответа при отказе:

{
  "status": "refused",
  "error": "not_enough_funds"
}

Пример ответа в случае незавершенной авторизации платежа:

{"status": "in_progress"}

Пример ответа при требовании аутентификации по 3-D Secure

{
  "status": "ext_auth_required",
  "acs_uri": "https://acs.alfabank.ru/acs/PAReq",
  "acs_params": {
    "MD": "723613-7431F11492F4F2D0",
    "PaReq": "eJxVUl1T2zAQ/CsZv8f6tCR7LmLSGiidJjAldMpTR7XVxAN2gmynSX59JeNAebu9O93u7QkuDvXzZG9dW22bWURiHE1sU2zLqlnPoofV1VRFFxpWG2dtfm+L3lkNC9u2Zm0nVTmLVvn9r7v5d/uS/UkYt4b8tjibUiGVxazICMeSSkmtwBmlhYw="
  }
}