Оплата по сохраненной карте
Пример реализации у нас:
Для возможности оплаты по сохраненной карте необходимо в метод Авторизация платежа передать параметры 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 | Да | Уникальный идентификатор страницы оплаты получателя |
ipSource | String | Да | IP адрес плательщика |
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",
"ipSource" : "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 и Завершение оплаты.
Более подробно процесс оплаты описана в Оплата по карте.