Пример реализации у нас:
Для возможности оплаты по сохраненной карте необходимо в метод Авторизация платежа передать параметры SaveCard = true
и ExternalId = null
.
В ответе метода Авторизация платежа прийдет поле ExternalId
со значением. Значение из поля ExternalId
необходимо сохранить в вашей системе.
Если ExternalId
был получен ранее, то в метод Авторизация платежа передать ранее полученный ExternalId
для данного платящего.
Если сохранять карту не нужно, то в метод Авторизация платежа передать параметры SaveCard = false
и ExternalId = null
.
Для оплате по сохраненной карте необходимо в запрос GET payment/cards
передать значение ExternalId
. Если для ExternalId
у нас есть данные, то мы вернем следующие данные:
{ "data": [ { "cardId": "9BBEF19476623CA56C17DA75FD57734DBF82530686043A6E491C6D71BEFE8F6E", "firstSix": "411111", "lastFour": "1111", "cardMask": "4111 11****** 1111", "cardType": "Visa" } ], "succeed": true, "statusCode": 0, "errors": [ "string" ], "validationErrors": { "additionalProp1": [ "string" ] }
Далее показываем платящему, что он может оплатить ранее сохраненной картой.
После выбора карты необходимо запросить у платящего ввод cvv кода
и сгенерировать используя метод Создание криптограммы.
Для создания криптограммы требуется передать publicId
из метода Получение publicId, а также cvv
введенный платящим:
var checkout = new cp.Checkout( "publicId", document.getElementById("paymentForm"), mode: "cvv" );
После того, как криптограмма успешно сформирована, мы передаем ее в метод POST /payment/partner/auth/saved-card
Запрос:
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
cardholderName | String | Да | Уникальный идентификатор страницы оплаты получателя |
amount | Integer | Да | Сумма платежа |
feeFromPayer | Boolean | Да | Комиссия с платящего, значения true и false |
currency | String | Да | Валюта платежа, константа RUB |
name | String | Нет | Имя платящего |
comment | String | Нет | Комментарий платящего |
layoutId | String | Да | Уникальный идентификатор страницы оплаты получателя |
invoiceId | String | Нет | Внешний идентификатор партнера, например внутренний номер заказа |
payerEmail | String | Нет | email платящего |
receiverSubscriptionSettingId | String | Нет | Не используется |
payerPhoneNumber | String | Нет | Телефон платящего |
payerCity | String | Нет | Город платящего |
rating |
| Нет | Компоненты рейтинга |
score | Integer | Нет | Оценка, значение от 0 до 5 |
selectedComponents | Array of string | Нет | Выбранные компоненты полученные при запросе данных Страницы оплаты, передается список id выбранных компонентов |
externalId | String | Да | Уникальный идентификатор платящего |
CvvCryptogramPacket | String | Да | Cvv криптограммы |
cardId | String | Да | Уникальный идентификатор карты |
Пример запроса:
{ "cardholderName": "string", "amount": 0, "feeFromPayer": true, "currency": "string", "name": "string", "comment": "string", "layoutId": "string", "invoiceId": "string", "payerEmail": "user@example.com", "receiverSubscriptionSettingId": "string", "payerPhoneNumber": "string", "payerCity": "string", "rating": { "score": 0, "selectedComponents": [ "string" ] }, "externalId": "string", "cardId": "string", "cvvCryptogramPacket": "string" }
Ответ:
Наименование | Тип | Обязательность | Описание |
---|---|---|---|
transactionId | String | Да | Уникальный идентификатор оплаты |
md | String | Да |
|
paReq | String | Да |
|
acsUrl | String | Да | URL банка для прохождения 3DS |
message | String | Да | Текстовый статус платежа |
statusCode | String | Да | Статус код платежа |
cardToken | String | Да | Токен карты платящего |
partnerRedirectUrl | String | Да | URL редиректа на страницу партнера |
cardIssuerBankCountry | String | Да | Страна банка эмитента карты |
cardLastFour | String | Да | Последние 4 цифры карты |
cardExpDate | String | Да | Дата окончания действия карты |
issuerCode | String | Да | Код эмитента |
succeed | Boolean | Да | Стату запроса, значение true и false |
errors | Array of string | Да | Возвращатеся список ошибок, относящихся целиком к запросу |
validationErrors | Array of string | Да | Поле представлено в формате ключ-значение и содержит ошибки, которые отнести к конкретному полю запроса |
Пример ответа:
{ "data": { "transactionId": 0, "md": "string", "paReq": "string", "acsUrl": "string", "message": "string", "statusCode": "string", "cardToken": "string", "partnerRedirectUrl": "string", "cardIssuerBankCountry": "string", "cardLastFour": "string", "cardExpDate": "string", "issuerCode": "string" }, "succeed": true, "statusCode": 0, "errors": [ "string" ], "validationErrors": { "additionalProp1": [ "string" ], "additionalProp2": [ "string" ], "additionalProp3": [ "string" ] } }
Далее необходимо вызвать методы Обработка 3-D Secure и Завершение оплаты.
Более подробно процесс оплаты описана в Оплата по карте.