Yandex Pay
Введение
Платежный шлюз поддерживает прием платежей через Yandex Pay. У клиента есть возможность оплатить покупку, нажав на соответствующую кнопку.
Если используется платежная страница на стороне Платежного шлюза, дополнительных действий по подключению этого способа оплаты не требуется.
Если вы используете свою платежную страницу, необходимы следующие предварительные действия:
- Получите идентификатор продавца YandexPay Id (https://pay.yandex.ru/business).
- Установите полученный идентификатор в личном кабинете. Для этого перейдите в раздел Сертификаты > Yandex Pay > Создать пару ключей > введите логин продавца и полученный идентификатор.
- Зарегистрируйте полученную пару ключей в Yandex (обратитесь в команду поддержки).
Схема интеграции
ответ на запрос alt Требуется аутентификация на ACS M-->>C: Перенаправление на ACS C->>ACS: Проверка подлинности ACS-->>C: Перенаправление клиента на страницу магазина M->>G: Запрос finish3dsVer2Payment.do G->>M: Ответ на запрос end end M-->>C: Результат оплаты
- Клиент формирует заказ на сайте Мерчанта и выбирает оплату Yandex Pay.
- Платежная форма на стороне Мерчанта формирует запрос к Yandex на формирование платежного токена.
- Yandex отображает информацию о покупке, позволяя Клиенту выбрать средство оплаты Yandex Pay.
- Клиент вводит необходимые данные и подтверждает оплату.
- Yandex формирует зашифрованные платежные данные.
- Yandex возвращает зашифрованные данные на платежную страницу на стороне Мерчанта.
- Мерчант отправляет в Платежный шлюз запрос на оплату YandexPay /yandex/instantPayment.do, передавая зашифрованные данные в параметре
paymentToken
. - Платежный шлюз регистрирует заказ.
- Платежный шлюз расшифровывает значение, полученное в параметре
paymentToken
. - Платежный шлюз осуществляет оплату и фискализацию (если она предусмотрена).
- В случае двухстадийного платежа Платежный шлюз отправляет нотификацию о блокировке средств в момент блокировки. После проведения оплаты Платежный шлюз отправляет нотификацию об оплате Yandex Pay.
- Yandex Pay подтверждает получение результата оплаты.
- Платежный шлюз возвращает результат оплаты Мерчанту. При этом, если требуется 3DS2 аутентификация, в ответе, в том числе, возвращаются параметры, относящиеся к 3DSv2 (
threeDSServerTransId
,threeDSMethodURLServer
,threeDSMethodURL
,threeDSMethodDataPacked
). -
Если 3DS2 аутентификация не требуется, выполняется переход на шаг 23.
Если требуется (ответ содержит
threeDSMethodURLServer
) – Мерчант в отдельном "iframe" методом POST вызываетthreeDSMethodURLServer
. Если в ответе присутствуют параметры
threeDSMethodURL
иthreeDSMethodDataPacked
, Мерчант в отдельном "iframe" методом POST вызываетthreeDSMethodURL
(адрес ACS).(Продолжение оплаты) Мерчант отправляет повторный запрос /yandex/instantPayment.do. При этом необходимо передать параметр
threeDSServerTransId
– идентификатор транзакции, который был создан сервером 3DS и возвращён на шаге 13. Кроме того, для переадресации клиента на страницу магазина после проведения оплаты заказа можно передать ссылку переадресации в параметреthreeDSVer2FinishUrl
.Платежный шлюз взаимодействует с сервером 3DS и ACS, чтобы выяснить, требуется ли клиенту проходить аутентификацию на ACS, и отправляет ответ на запрос оплаты. Если клиенту требуется проходить аутентификацию на ACS, в ответе возвращается
acsUrl
– URL для перенаправления на ACS, а такжеpackedCReq
– упакованные данные для challenge request. Если не требуется (frictionless аутентификация) – возвращается ответ об успешном завершении оплаты.-
Если аутентификация на ACS не требуется, выполняется переход на шаг 23.
Если требуется – продавец перенаправляет клиента на ACS. Читайте, как это сделать, здесь.
Клиент проходит проверку подлинности.
ACS перенаправляет клиента на страницу магазина.
Если в запросе на оплату был передан параметр
threeDSVer2FinishUrl
, для завершения транзакции Мерчант отправляет в платежный шлюз запрос finish3dsVer2Payment.do. В этом запросе нужно передать параметрthreeDSServerTransId
- идентификатор транзакции, который был создан сервером 3DS и возвращён на шаге 13.Платежный шлюз возвращает результат оплаты Мерчанту.
Платежная страница на стороне Мерчанта отображает результат оплаты Клиенту.
API-запрос регистрации и оплаты Yandex Pay
Мгновенная оплата Yandex Pay
Запрос, используемый для регистрации заказа и одновременной оплаты за него – https://vtb.rbsuat.com/payment/yandex/instantPayment.do
.
При выполнении запроса необходимо использовать заголовок:
Content-Type: application/json
Параметры запроса
Обязательность | Название | Тип | Описание |
---|---|---|---|
Условие | username |
String [1..100] | Логин учетной записи API продавца. Обязательно, если авторизация осуществляется через username и password . |
Условие | password |
String [1..200] | Пароль учетной записи API продавца. Обязательно, если авторизация осуществляется через username и password . |
Условие | merchant |
String | Логин продавца в системе платежного шлюза. Обязательно, если авторизация осуществляется через merchant . |
Обязательно | amount |
Integer [0..12] | Сумма платежа в минимальных единицах валюты (например, в копейках). |
Обязательно | orderNumber |
String [1..32] | Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа. |
Необязательно | currencyCode |
String [3] | Цифровой код валюты платежа ISO 4217. Если не указан, считается равным 643 (российский рубль). |
Обязательно | paymentToken |
String [1..8192] | Токен, полученный от Yandex Pay и закодированный в Base64. |
Обязательно | returnUrl |
String [1..512] | Адрес, на который требуется перенаправить пользователя в случае успешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com ). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://vtb.rbsuat.com/payment/<merchant_address> . |
Необязательно | failUrl |
String [1..512] | Адрес, на который требуется перенаправить пользователя в случае неуспешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://mybestmerchantreturnurl.com вместо mybestmerchantreturnurl.com ). В противном случае пользователь будет перенаправлен по адресу следующего вида: https://vtb.rbsuat.com/payment/<merchant_address> . |
Необязательно | dynamicCallbackUrl |
String [1..512] | Параметр для передачи динамического адреса для получения "платежных" callback-уведомлений по заказу, активированных для мерчанта (успешная авторизация, успешное списание, возврат, отмена, отклонение платежа по таймауту, отклонение card present платежа). "Не платежные" callback-уведомления (включение/выключение связки, создание связки), будут отправляться на статический callback адрес. |
Необязательно | description |
String [1..598] | Описание заказа в любом формате. Чтобы включить отправку этого поля в процессинговую систему, обратитесь в службу технической поддержки. В этом поле недопустимо передавать персональные данные или платежные данные (номера карт т.п.). Данное требование связано с тем, что описание заказа нигде не маскируется. |
Необязательно | additionalParameters |
Object | Дополнительные параметры заказа, которые хранятся в личном кабинете продавца для последующего просмотра. Каждая новая пара имени параметра и его значения должна быть разделена запятой. Ниже приведен пример использования.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
|
Необязательно | preAuth |
Boolean | Параметр, определяющий необходимость предварительной авторизации (блокирования средств на счете клиента до их списания). Доступны следующие значения:
|
Необязательно | merchantLogin |
String [1..255] | Чтобы зарегистрировать заказ от имени другого мерчанта, укажите его логин (для API-аккаунта) в этом параметре. Можно использовать, только если у вас есть разрешение на просмотр транзакций других продавцов или если указанный продавец является вашим дочерним продавцом. |
Необязательно | ip |
String [1..39] | IP адрес плательщика. IPv6 поддерживается во всех запросах (до 39 символов). |
Условие | phone |
String | Номер телефона. Обязателен, если у интернет-магазина настроена фискализация и не указан адрес электронной почты. Всегда нужно указывать код страны, при этом можно или указывать, или не указывать знак +. Таким образом, допустимы следующие варианты:
|
Условие | email |
String | Адрес электронной почты. Обязателен, если у интернет-магазина настроена фискализация и не указан номер телефона. |
Необязательно | postAddress |
String [1..255] | Адрес доставки. |
Необязательно | billingPayerData |
Object | Блок с регистрационными данными клиента (адрес, почтовый индекс), необходимый для прохождения проверки адреса в рамках сервисов AVS/AVV. Обязательно, если функция включена для продавца на стороне Платежного шлюза. См вложенные параметры. |
Необязательно | orderBundle |
Object | Объект, содержащий корзину товаров. Описание вложенных элементов приведено ниже. |
Необязательно | additionalOfdParams |
Object | Блок параметров для фискализации. См ниже. |
Условие (обязательно с 3DS2 SDK) | threeDSServerTransId |
String | Идентификатор транзакции, созданный на сервере 3DS. |
Условие (обязательно с 3DS2 SDK) | threeDSVer2FinishUrl |
String | URL-адрес, по которому клиент должен быть перенаправлен после аутентификации на сервере ACS. |
Условие (обязательно с 3DS2 SDK) | threeDSMethodNotificationUrl |
String | URL-адрес для отправки уведомления о прохождении проверки на ACS. |
Условие (обязательно с 3DS2 SDK) | threeDSSDK |
Boolean | Возможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS SDK. |
Условие | threeDSSDKEncData |
String | Зашифрованные данные об устройстве. Параметр является обязательным для SDK. |
Условие | threeDSSDKEphemPubKey |
String | Публичная часть эфемерного ключа. Требуется для установки сеанса с ACS. Параметр является обязательным для SDK. |
Условие | threeDSSDKAppId |
String | Уникальный идентификатор SDK. Параметр является обязательным для SDK. |
Условие | threeDSSDKTransId |
String | Уникальный идентификатор транзакции в SDK. Параметр является обязательным для SDK. |
Условие (обязательно с 3DS2 SDK) | threeDSVer2MdOrder |
String | Номер заказа, который был зарегистрирован в первой части запроса в рамках 3DS 2.0 операции. Если данный параметр присутствует в запросе, то используется mdOrder , который передается в настоящем параметре. В таком случае регистрация заказа не происходит, а происходит сразу оплата заказа.Этот параметр передается только при использовании методов мгновенной оплаты, т.е., когда заказ регистрируется и оплачивается в рамках одного запроса. |
Ниже приведены параметры блока billingPayerData
(данные об адресе регистрации клиента).
Обязательность | Название | Тип | Описание |
---|---|---|---|
Необязательно | billingCity |
String [0..50] | Город, зарегистрированный по конкретной карте у Банка Эмитента. |
Необязательно | billingCountry |
String [0..50] | Страна, зарегистрированная по конкретной карте банка-эмитента (ISO 3166-1, числовой). |
Необязательно | billingAddressLine1 |
String [0..50] | Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 1. Обязательно к передаче для AVS-проверки. |
Необязательно | billingAddressLine2 |
String [0..50] | Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 2. |
Необязательно | billingAddressLine3 |
String [0..50] | Адрес, зарегистрированный по конкретной карте у Банка Эмитента. Строка 3. |
Необязательно | billingPostalCode |
String [0..9] | Почтовый индекс, зарегистрированный по конкретной карте у Банка Эмитента. Обязательно к передаче для AVS-проверки. |
Необязательно | billingState |
String [0..50] | Штат, зарегистрированный по конкретной карте у Банка Эмитента. |
Описание параметров в объекте orderBundle
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Необязательно | orderCreationDate |
String | Дата создания заказа в формате YYYY-MM-DDTHH:MM:SS . |
Необязательно | customerDetails |
Object | Блок, содержащий атрибуты клиента. Описание атрибутов тега приведено ниже. |
Обязательно | cartItems |
Object | Объект, содержащий атрибуты товаров в корзине. Описание вложенных элементов приведено ниже. |
Описание параметров в объекте customerDetails
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Условие | email |
String | Электронный адрес клиента. Можно указать несколько адресов электронной почты через запятую и без пробелов. Обязательно следует передать один из двух параметров: email или phone . |
Условие | phone |
String | Номер телефона владельца карты. Предпочтительно передавать номер телефона в параметре orderPayerData.mobilePhone (но если вы передадите его в этом блоке, к нему применятся те же правила). |
Необязательно | contact |
String [0..40] | Предпочитаемый клиентом способ связи. |
Необязательно | fullName |
String [1..100] | ФИО плательщика. |
Необязательно | passport |
Integer | Серия и номер паспорта плательщика в следующем формате: 2222888888
|
Необязательно | deliveryInfo |
Object | Объект, содержащий атрибуты адреса доставки. Описание вложенных элементов приведено ниже. |
Необязательно | inn |
Integer [10..12] | Индивидуальный номер налогоплательщика. 10 или 12 символов. |
Описание параметров в объекте deliveryInfo
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Необязательно | deliveryType |
String [1..20] | Способ доставки. |
Обязательно | country |
String | Двухбуквенный код страны доставки. |
Обязательно | city |
String [0..40] | Город назначения. |
Обязательно | postAddress |
String [1..255] | Адрес доставки. |
Описание параметров в объекте cartItems
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | items |
Object | Элемент массива с атрибутами товарной позиции. Описание вложенных элементов приведено ниже. |
Описание параметров в объекте items
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | positionId |
Integer [1..12] | Уникальный идентификатор товарной позиции в корзине. |
Обязательно | name |
String [1..255] | Наименование или описание товарной позиции в свободной форме. |
Необязательно | itemDetails |
Object | Объект с параметрами описания товарной позиции. Описание вложенных элементов приведено ниже. |
Обязательно | quantity |
Object | Элемент, описывающий передается общее количество товарных позиций одного positionId и его единицы измерения. Описание вложенных элементов приведено ниже. |
Необязательно | itemAmount |
Integer [1..12] | Сумма стоимости всех товарных позиций одного positionId в минимальных единицах валюты. itemAmount обязателен к передаче, только если не был передан параметр itemPrice . В противном случае передача itemAmount не требуется. Если же в запросе передаются оба параметра: itemPrice и itemAmount , то itemAmount должен равняться itemPrice * quantity , в противном случае запрос завершится с ошибкой. |
Необязательно | itemPrice |
Integer [1..18] | Сумма стоимости товарной позиции одного positionId в деньгах в минимальных единицах валюты. Обязательно для мерчантов, использующих фискализацию. |
Необязательно | itemCurrency |
Integer | Код валюты ISO 4217. Если не указан, считается равным валюте заказа. |
Обязательно | itemCode |
String [1..100] | Номер (идентификатор) товарной позиции в системе магазина. |
Необязательно
| tax
| Object | Объект, содержащий атрибуты налога. Ниже приведено описание содержащихся атрибутов. |
Описание параметров в объекте quantity
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | value |
String | Количество товарных позиций данного positionId . Для указания дробных чисел используйте десятичную точку. При ФФД 1.2+ значение value всегда 1 . |
Обязательно | measure |
String [1..20] | Единица измерения количества по позиции. Для ФФД 1.2+, если переданы параметры nomenclature и markQuantity , measure всегда равно 0 . Для других ФФД возможны иные значения. |
Возможные значения параметра measure
.
Значение | Описание |
---|---|
0 | Применяется к позициям, которые могут быть реализованы индивидуально или отдельными единицами, а также если объект платежа является предметом, подлежащим обязательной идентификационной маркировке. |
10 | Грамм |
11 | Килограмм |
12 | Тонна |
20 | Сантиметр |
21 | Дециметр |
22 | Метр |
30 | Квадратный сантиметр |
31 | Квадратный дециметр |
32 | Квадратный метр |
40 | Миллилитр |
41 | Литр |
42 | Кубический метр |
50 | Киловатт час |
51 | Гигакалория |
70 | День |
71 | Час |
72 | Минута |
73 | Секунда |
80 | Килобайт |
81 | Мегабайт |
82 | Гигабайт |
83 | Терабайт |
255 | Применяется к другим единицам измерения |
Описание параметров в объекте itemDetails
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Необязательно | itemDetailsParams |
Object | Параметр, описывающий дополнительную информацию по товарной позиции. Описание вложенных элементов приведено ниже. |
Описание параметров в объекте itemDetailsParams
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | value |
String | Дополнительная информация по товарной позиции. |
Обязательно | name |
String [1..255] | Наименование параметра описания детализации товарной позиции |
Описание параметров объекта tax
.
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | taxType |
Integer | Ставка НДС, доступны следующие значения:
|
Обязательно | taxSum |
Integer [1..18] | Сумма налога рассчитанная продавцом. Значение указывается в минимальных единицах валюты. |
Описание параметров в объекте itemAttributes
:
Параметр itemAttributes
должен содержать массив attributes
, а уже в этом массиве расположены атрибуты товарной позиции (см. пример и таблицу ниже).
"itemAttributes":{"attributes":[{"name":"paymentMethod","value":"1"},{"name":"paymentObject","value":"1"}]}
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | paymentMethod |
Integer | Тип платежа, доступные значения:
|
Обязательно | paymentObject |
Integer | Объект платежа, доступные значения:
Указанные выше значения доступны для ФФД 1.05. Для ФФД 1.2 список доступных значений пополняется также следующими значениями:
Приоритезация передачи значения происходит по следующему принципу (указано в убывающем порядке приоритета): 1) корзина заказа из API-запроса; 2) настройки фискализации в личном кабинете; 3) значения по умолчанию |
Условие | nomenclature |
String | Код товарной номенклатуры в шестнадцатеричном представлении с пробелами. Максимальная длина – 32 байта. Обязательно, если передано markQuantity . |
Необязательно | markQuantity |
Object | Дробное количество маркируемого товара. См. вложенные параметры. |
Необязательно | userData |
String [1..64] | Значение реквизита пользователя. Можно передавать только после согласования с ФНС. |
Необязательно | agent_info |
Object | Объект с данными о платежном агенте для товарной позиции. |
Условие* | agent_info.type |
Integer | Тип агента, доступные значения:
|
Необязательно | agent_info.paying |
Object | Объект с данными о платежном агенте. |
Необязательно | agent_info.paying.operation |
String [1..24] | Название транзакции платежного агента. |
Необязательно | agent_info.paying.phones |
Array of strings | Массив телефонных номеров платежного агента в формате +N. |
Необязательно | agent_info.paymentsOperator |
Object | Объект с информацией об операторе по приему платежей. |
Необязательно | agent_info.paymentsOperator.phones |
Array of strings | Массив телефонных номеров платежного агента в формате +N. |
Необязательно | agent_info.MTOperator |
Object | Объект с данными об Операторе перевода. |
Необязательно | agent_info.MTOperator.phones |
Array of strings | Массив телефонных номеров оператора перевода в формате +N. |
Необязательно | agent_info.MTOperator.name |
String [1..256] | Наименование оператора перевода. |
Необязательно | agent_info.MTOperator.address |
String [1..256] | Адрес оператора перевода. |
Необязательно | agent_info.MTOperator.inn |
String [10..12] | ИНН оператора перевода. |
Необязательно | supplier_info |
Object | Объект с данными о поставщике для товарной позиции. |
Необязательно | supplier_info.phones |
Array of strings | Массив телефонных номеров поставщика в формате +N. |
Необязательно | supplier_info.name |
String | Наименование поставщика. |
Необязательно | supplier_info.inn |
String | ИНН поставщика |
* Обязателен, если передается agent_info
.
Описание параметров объекта markQuantity
.
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | numerator |
String | Числитель дробной части объекта платежа. |
Обязательно | denominator |
String | Знаменатель дробной части объекта платежа. |
Описание параметров в объекте additionalOfdParams
:
Обязательность | Название | Тип | Описание |
---|---|---|---|
Необязательно | agent_info.type |
Integer | Тип агента, доступные значения:
|
Необязательно | agent_info.paying.operation |
String [1..24] | Название транзакции платежного агента. |
Необязательно | agent_info.paying.phones |
Array of strings | Массив телефонных номеров платежного агента в формате +N. |
Необязательно | agent_info.paymentsOperator.phones |
Array of strings | Массив телефонных номеров платежного агента в формате +N. |
Необязательно | agent_info.MTOperator.address |
String [1..256] | Адрес оператора перевода. |
Необязательно | agent_info.MTOperator.inn |
String [10..12] | ИНН оператора перевода. |
Необязательно | agent_info.MTOperator.name |
String [1..256] | Наименование оператора перевода. |
Необязательно | agent_info.MTOperator.phones |
Array of strings | Массив телефонных номеров оператора перевода в формате +N. |
Необязательно | supplier_info.phones |
Array of strings | Массив телефонных номеров поставщика в формате +N. |
Необязательно | cashier |
String [1..256] | Имя кассира. |
Необязательно | additional_check_props |
String [1..16] | Дополнительные свойства чека. |
Необязательно | additional_user_props.name |
String [1..24] | Название дополнительного свойства пользователя |
Необязательно | additional_user_props.value |
String [1..24] | Значение дополнительного свойства пользователя |
Необязательно | cashier_inn |
String [10..12] | ИНН кассира. |
Необязательно | client.address |
String [1..256] | Адрес клиента. |
Необязательно | client.birth_date |
String [10] | Дата рождения клиента в формате дд.мм.гггг. |
Необязательно | client.citizenship |
String [3] | Цифровой код страны, гражданином которой является покупатель (клиент). |
Необязательно | client.document_code |
String [2] | Цифровой код вида документа, удостоверяющего личность (например, 21 - паспорт гражданина РФ). |
Необязательно | client.passport_number |
String [11] | Серия и номер паспорта плательщика. |
Необязательно | client.email |
String [1..64] | Электронная почта плательщика. Обязательно заполнение строго одного из полей: электронная почта или телефон. |
Необязательно | client.phone |
String [19] | Телефон покупателя. Вместе с кодом страны без пробелов и дополнительных символов, кроме символа «+» (номер «+371 2 1234567» следует передавать как «+37121234567»). Обязательно заполнение строго одного из полей: электронная почта или телефон. |
Необязательно | client.inn |
String [12] | ИНН клиента. |
Необязательно | client.name |
String [1..256] | Имя клиента. |
Необязательно | operatingcheckprops.name |
String | Идентификатор транзакции. Принимает значения "0" до тех пор, пока не будет определено значение реквизита ФНС России. |
Необязательно | operatingcheckprops.timestamp |
String [1..19] | Дата и время операции в формате: дд.мм.гггг ЧЧ:ММ:СС. |
Необязательно | operatingcheckprops.value |
String [1..64] | Данные транзакции. |
Необязательно | sectoralcheckprops.date |
String [10] | Дата принятия нормативного акта федерального органа исполнительной власти, регулирующего порядок заполнения "значения отраслевого реквизита", в формате: дд.мм.гггг. |
Необязательно | sectoralcheckprops.federalid |
String | Идентификатор федерального органа исполнительной власти. Должен принимать одно из значений из справочника федеральных органов исполнительной власти. |
Необязательно | sectoralcheckprops.number |
String [32] | Номер нормативного акта федерального органа исполнительной власти, регламентирующего порядок заполнения реквизита «значение отраслевого реквизита» |
Необязательно | sectoralcheckprops.value |
String [1..256] | Состав значений, определенных нормативным актом федерального органа исполнительной власти |
Условие | company.automat_number |
String | Номер автомата. Условия обязательной передачи параметров:
|
Условие | company.location |
String | Адрес для выставления счета. Условия обязательной передачи параметров:
|
Условие | company.payment_address |
String | Адрес для получения счетов. Условия обязательной передачи параметров:
|
Параметры ответа
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | success |
Boolean | Основной параметр, который указывает на то, что запрос прошел успешно. Доступны следующие значения:
Обратите внимание, что значение true означает, что запрос был обработан, а не что заказ был оплачен.Более подробная информация о том, как узнать, был ли платеж успешным или нет, доступна здесь. |
Условие | data |
Object | Этот параметр возвращается только в случае успешной обработки платежа. См. описание ниже. |
Условие | error |
Object | Этот параметр возвращается только в случае ошибки платежа. См. описание ниже. |
Блок data
содержит следующие элементы.
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | orderNumber |
String [1..32] | Номер заказа (ID) в системе мерчанта; должен быть уникальным для каждого заказа. |
Необязательно | redirectUrl |
String [1..512] | Адрес для перенаправления клиента. |
Условие | acsUrl |
String [1..512] | При успешном ответе в случае оплаты 3D-Secure. URL-адрес для редиректа на ACS. Обязательный, если нужен редирект на ACS. Подробнее см. Редирект на ACS. |
Условие | paReq |
String [1..255] | При успешном ответе в случае оплаты 3D-Secure. PAReq (Payment Authentication Request) — сообщение, которое необходимо отправить в ACS вместе с редиректом. Это сообщение содержит данные в кодировке Base64, необходимые для аутентификации держателя карты. Подробнее см. Редирект на ACS. |
Условие | termUrl |
String [1..512] | При успешном ответе в случае оплаты 3D-Secure. Это URL-адрес, на который ACS перенаправляет владельца карты после аутентификации. Подробнее см. Редирект на ACS. |
Необязательно | is3DSVer2 |
Boolean | Возможные значения: true или false Флаг, показывающий, что платеж поступает из 3DS 2.0. |
Необязательно | packedCReq |
String | Запакованные данные challenge request. Обязательный, если нужен редирект на ACS. Это значение следует использовать как значение параметра creq ссылки на ACS (acsUrl ), для перенаправления клиента на ACS. |
Необязательно | threeDSMethodDataPacked |
String | Данные CReq (Challenge Response) в кодировке Base-64 для отправки на сервер ACS. |
Необязательно | threeDSMethodUrl |
String | URL-адрес сервера ACS для сбора данных браузера. |
Необязательно | threeDSMethodUrlServer |
String | URL-адрес сервера 3DS для сбора данных браузера, которые будут включены в AReq (Authentication Request) с сервера 3DS на сервер ACS. |
Необязательно | threeDSServerTransId |
String | Идентификатор транзакции, созданный на сервере 3DS. |
Необязательно | threeDSSDKKey |
String | Ключ шифрования данных устройства. Параметр является обязательным для SDK. |
Необязательно | threeDSAcsRefNumber |
String | Справочный номер на ACS. |
Необязательно | threeDSAcsSignedContent |
String | Подписанный контент для SDK, контент включает URL-адрес ACS. Параметр является обязательным для SDK. |
Необязательно | threeDSAcsTransactionId |
String | Идентификатор транзакции 3DS в ACS. Параметр является обязательным для SDK. |
Необязательно | threeDSDsTransID |
String | Уникальный идентификатор транзакции внутри МПС. Параметр является обязательным для SDK. |
Необязательно | transactionId |
String [1..512] | Идентификатор операции в платежном шлюзе. |
Блок error
содержит следующие элементы.
Обязательность | Название | Тип | Описание |
---|---|---|---|
Обязательно | code |
Integer [1..3] | Код как информационный параметр, сообщающий об ошибке. |
Обязательно | description |
String [1..598] | Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю. |
Обязательно | message |
String [1..512] | Информационный параметр, являющийся описанием ошибки для отображения пользователю. Параметр может варьироваться, поэтому не следует явным образом ссылаться на его значения в коде. |
Примеры
Пример запроса
curl --location 'https://vtb.rbsuat.com/payment/yandex/instantPayment.do' \
--header 'Content-Type: application/json' \
--data '{
"merchant": "OurBestMerchantLogin",
"amount":1000000,
"orderNumber":"1255555555555",
"currencyCode" : 643,
"failUrl" : "https://mybestmerchantfailurl.com",
"returnUrl" : "https://mybestmerchantreturnurl.com",
"description" : "Test description",
"paymentToken": "eyJzaWdu...yVDA0WjY2ST1cIn0ifQ==",
"sessionTimeoutSecs":"1000000",
"ip" : "127.0.0.1",
"jsonParams":
{"notGenerateOfdReceipt":"true"},
"orderBundle":
{"cartItems":
{
"items":
[
{"positionId":"1","name":"TEST","quantity":{"value":1.0,"measure":"psc"},"itemAmount":500000,"itemCode":"code1","itemPrice":"500000","tax":{"taxType":2},"itemAttributes":{"attributes":[{"name":"paymentMethod","value":"2"},{"name":"paymentObject","value":"2"}]}},
{"positionId":"2","name":"TEST2","quantity":{"value":1.0,"measure":"psc"},"itemAmount":500000,"itemCode":"code2","itemPrice":"500000","tax":{"taxType":2},"itemAttributes":{"attributes":[{"name":"paymentMethod","value":"2"},{"name":"paymentObject","value":"2"}]}}
]
}
}
}
}'
Пример повторного запроса (для 3DS2)
curl --location 'https://vtb.rbsuat.com/payment/yandex/instantPayment.do' \
--header 'Content-Type: application/json' \
--data '{
"username": "test-user",
"password": "test-password",
"paymentToken": "eyJzaWdu...yVDA0WjY2ST1cIn0ifQ==",
"amount": 1000000,
"returnUrl": "https://mybestmerchantreturnurl.com",
"threeDSVer2FinishUrl": "http://finish.com",
"threeDSVer2MdOrder": "20118da6-be2d-75ba-be89-273b085e076d",
"threeDSServerTransId": "e06d137a-b68a-41d5-8998-af3e13ab8195"
}'
Пример ответа
{
"success": true,
"data": {
"orderNumber": "4e77a01b-5a75-7f92-9560-434e01228ae9",
"redirectUrl": "https://do13.do.rbstest.ru/payment/merchants/rbs/finish.html?orderId=4e77a01b-5a75-7f92-9560-434e01228ae9&lang=ru",
"transactionId": "ddc687bf-c82c-48ec-be81-0b8fea42cd28"
}
}
Пример ответа на первый запрос для 3DS2
{
"success": true,
"data": {
"orderNumber": "12312312123",
"is3DSVer2": true,
"threeDSServerTransId": "5802746e-3393-40c3-929a-dc966ebf08c6",
"threeDSMethodURL": "https://example.com/acs2/acs/3dsMethod",
"threeDSMethodURLServer": "example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6",
"threeDSMethodDataPacked": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9hY3F1aXJlci5jb20vM2Rzc2VydmVyL2FwaS92MS9hY3Mvbm90aWZpY2F0aW9uP3RocmVlRFNTZXJ2ZXJUcmFuc0lEPTNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiM2FmYzE2OGEtOTRiNC00ZWIzLThlMmUtODBmNmMxODY2NjlkIn0="
}
}
Пример ответа на повторный запрос для 3DS2
{
"success": true,
"data": {
"orderNumber": "44f379fd-4f70-782a-b742-36b501228ae9",
"acsUrl": "https://web.rbsuat.com/acs/auth/start.do",
"paReq": "eJxVkVtTwjAQhf8K0/eSS0tbmCUOiox9aBXEcXwM6SpF2kJoFfvrTbgIvu232TlncxZu9sW684V
6l1fl0GFd6nSwVFWWlx9D52U+cSPnRsB8qRHHz6gajQIS3O3kB3bybOjQMIveFx51Q8o91+8H0o0iFbm+CjHsq57C0HcE
PI1muBVwMhLGp8uBnNEoarWUZS1Aqu1tnAqfhwGlQE4IBep4LBj3/F4QRkCODKUsUDwvC/lZfQE5EKiqKWv9IwLfA3IGa
PRaLOt6MyDkR3Z1A8R2gFycnxpb7YzCPs9EskradDzap6t7nqxinrQJe5zH32n7NgRiJyCTNQpOOaMB5R3GBp43YOZXhz
7IwloLRg/fOAJsrMfo+uW6AyZebdI/734mwP2mKtFMGPW/Gshl47sHm5yqTSZtO5mUK674/Uv6UM+m62j6uk18XPjb2OZ
5GLKKuYml32dHSQtArAw5nYqcrmyqf9f/BX9Qtv8=",
"termUrl": "https://do13.do.rbstest.ru/payment/rest/finish3ds.do"
}
}