Проверка платежной карты

Проверка действительности платежной карты нужна, чтобы узнать, может ли карта использоваться для проведения платежей. Это может быть актуально перед проведением выплаты пользователю или при регистрации подписки на товары и услуги без списания средств за первый (пробный) период. Подробнее о регистрации повторяемой оплаты см. Регистрация повторяемой оплаты.

В этом разделе рассказывается, как проверить действительность платежной карты с использованием Payment Page.

Чтобы инициировать проверку карты, в параметрах запроса на вызов платежной формы (пример запроса будет представлен далее) укажите режим работы card_verify. После этого пользователь должен подтвердить свое согласие на проверку. Далее ваша система направляет в платежную платформу запрос, для выполнения которого в платформе формируется операция account verification.

Есть два варианта проверки:

  • условный (нулевой) перевод денежных средств от пользователя на ваш счет;
  • реальная (ненулевая) блокировка средств пользователя с последующей отменой. Сумму блокировки вы можете согласовать со своим курирующим менеджером, а срок отмены блокировки может составлять до 45 дней.

В данном разделе мы рассмотрим вариант проверки карты с помощью нулевого платежа. Подробнее о блокировке средств см. Блокировка средств.

Ограничение: Информацию о возможности проверки карт в вашем проекте уточняйте у курирующего менеджера Rocketpay.

В процессе проверки карты Payment Page может потребовать от пользователя указать реквизиты карты, сохранить реквизиты карты для последующих платежей и/или подождать уведомления о результате проверки.

Шаги проверки карт

Для проверки действительности карты через Payment Page:

  1. Сформируйте и отправьте в платежную платформу запрос на открытие Payment Page.
  2. При необходимости выполните вспомогательные процедуры, инициируемые платежной платформой. Это может быть один из вариантов аутентификации пользователя или дополнение информации о платеже:
    • Аутентификация 3‑D Secure Такая аутентификация предназначена для обеспечения безопасности оплаты с использованием карт через интернет. Подробнее об этой процедуре см. Аутентификация по протоколу 3‑D Secure 2.
    • Дополнение информации о платеже Эта процедура используется, когда по запросу одной из сторон, участвующих в проведении платежа, требуется предоставить дополнительную информацию. Подробная информация о процедуре представлена в разделе Дополнение информации о платеже.
  3. Примите от платежной платформы оповещение (callback) о результате проверки.

Далее рассказывается о структуре запросов на проверку действительности платежных карт и о структуре оповещений с результатами проверки.

Запрос

В запросе на открытие Payment Page для проверки действительности карты укажите необходимые параметры:

Табл. 1. Базовые параметры запроса в Payment Page

strictly required — параметр обязательно должен присутствовать в начальном запросе.

Параметр Описание

mode
string, strictly required

Режим работы Payment Page. Для проверки карты укажите в этом параметре значение card_verify.

Пример: card_verify

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

customer_id
string
strictly required

Идентификатор пользователя, уникальный в рамках проекта.

Пример: customer_123

customer_first_name
string
strictly required

Имя пользователя.

Пример: John

customer_last_name
string
strictly required

Фамилия пользователя.

Пример: Doe

customer_email
string
strictly required

Адрес электронной почты пользователя.

Пример: johndoe@example.com

payment_currency
string
strictly required

Код валюты оплаты в формате ISO-4217 alpha-3.

Пример: USD

payment_amount
integer
strictly required

Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 100,00 USD передается как 10000

Ограничение: Для проверки карты сумма платежа должна быть равна нулю.

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Подписывание и проверка подписи.
Для проверки платежной карты по токену:

account_token
string, strictly required

Токен банковской карты пользователя. Токен представляет собой уникальную последовательность из 64 символов, связанную с банковской картой.

Пример: 42ab631449a78914502803aed8a0e5a728d558035d29a56f4dcc136c6bfc3021

Ограничение: Применяется в режимах Purchase и Card Verify.

Подробнее см. Создание токенов

Для регистрации повторяемой оплаты

recurring
string, strictly required

Строка, содержащая в закодированном виде параметры регистрации и проведения COF-платежа. Данные собираются в JSON-объект и кодируются в URL-encoded. Структура JSON-объекта приведена в спецификации API в схеме recurringinfo.

Подробнее см. Регистрация повторяемой оплаты

При необходимости добавьте в запрос необязательные параметры из числа доступных для работы с Payment Page. Подробнее о параметрах запросов в Payment Page см. Параметры открытия платежной страницы Payment Page.

Вот пример параметров из запроса на открытие Payment Page с использованием виджета EPayWidget:

EPayWidget.run(
    {
   "mode": "card_verify",
   "project_id": "123",
   "payment_id": "payment_47",
   "payment_currency": "USD",
   "payment_amount": "0",
   "signature": "TSzdE5rJpfXriFf82MxF..."

// При сохранении данных платежной карты:
    "customer_id": "customer_123"

// При проведении проверки по токену карты:
   "account_token": "42ab631449a78914502803aed8a0e5a728d558035d29a56f4dcc136c6bfc3021"

// При регистрации повторяемой оплаты:
   "recurring": {
        "register": "true",
        "type": "R",
        ...
      }
   }
)

Пример GET-запроса на открытие Payment Page:

https://paymentpage.rocketpay.kz/payment?language_code=ru&mode=card_verify&project_id=123&payment_amount=0&payment_currency=USD&payment_id=15538406111&signature=Z0QkrvLe%2Fl6Vdyxb4%2F0zwcPT8E...

Оповещение (callback)

Результат проверки платежной карты платежная платформа возвращает в оповещении. Подробнее о структуре оповещений см. Оповещения (callbacks) в Payment Page.

Вот пример тела оповещения с информацией о том, что платежная карта 112233******7788 пользователя customer_123 действительна и зарегистрирована для повторяемой оплаты.

Рис.: Пример тела оповещения о том, что карта успешно прошла проверку

{
  "project_id":123,
  "payment":{
    "id":"payment_47",
    "type":"account_verification",
    "status":"success",
    "date":"2020-06-10T13:45:59+0000",
    "method":"card",
    "sum":{
      "amount":0,
      "currency":"USD"
    },
    "description":"Добавить карту"
  },
  "account":{
    "number":"112233******7788",
    "token":"844f84f3bdfaf2ddf006c96ffaddc09394c5d0e158f",
    "type":"visa",
    "card_holder":"JOHN DOE",
    "id":8861226,
    "expiry_month":"08",
    "expiry_year":"2025"
  },
  "customer":{
    "id":"customer_123"
  },
  "recurring":{
    "register":"true",
    "type":"R"
  },
  "operation":{
    "id":42209000002431,
    "type":"account verification",
    "status":"success",
    "date":"2020-06-10T13:45:59+0000",
    "created_date":"2020-06-10T13:45:57+0000",
    "request_id":"5cb898347e62b2c1-52dac6c8c",
    "sum_initial":{
      "amount":0,
      "currency":"USD"
    },
    "sum_converted":{
      "amount":0,
      "currency":"USD"
    },
    "provider":{
      "id":120,
      "payment_id":"306449667",
      "date":"2020-06-10T13:45:59+0000",
      "auth_code":"188591",
      "endpoint_id":120
    },
    "code":"0",
    "message":"Success"
  },
  "signature":"P9g0U+eF2QWs2A..."
}

Если карта не прошла проверку, платежная платформа отправит вам оповещение с информацией о том, что проведение платежа было отклонено.

Рис.: Пример тела оповещения о том, что карта не прошла проверку

{
  "project_id":123,
  "payment":{
    "id":"payment_47",
    "type":"account_verification",
    "status":"decline",
    "date":"2020-06-16T06:06:53+0000",
    "method":"card",
    "sum":{
      "amount":0,
      "currency":"USD"
    },
    "description":"Добавить карту"
  },
  "account":{
    "number":"112233******7788",
    "type":"visa",
    "card_holder":"JOHN DOE",
    "expiry_month":"08",
    "expiry_year":"2025"
  },
  "customer":{
    "id":"customer_123"
  },
  "operation":{
    "id":40975000002863,
    "type":"account verification",
    "status":"decline",
    "date":"2020-06-16T06:06:53+0000",
    "created_date":"2020-06-16T06:06:47+0000",
    "request_id":"9120271eb02-83e0e70fc0a0a3c1b4d",
    "sum_initial":{
      "amount":0,
      "currency":"USD"
    },
    "sum_converted":{
      "amount":0,
      "currency":"USD"
    },
    "provider":{
      "id":120,
      "payment_id":"308822001",
      "date":"2020-06-16T06:06:49+0000",
      "auth_code":"",
      "endpoint_id":120
    },
    "code":"10100",
    "message":"Declined by external provider"
  },
  "signature":"P9g0U+eaZ9EeNiWiaQWs2A..."
}

Статусы платежа

В данном разделе представлена информация о возможных статусах платежа и связанных с ним операций.

Рис.: Диаграмма состояний платежа

В процессе проверки карты платежу могут присваиваться следующие статусы.

Статус платежа Описание
error При проверке принятого в платежной платформе запроса возникла ошибка, и проведение платежа не было инициировано.

Конечное состояние. Допускается повторное инициирование этого платежа

processing Платеж проводится.

Промежуточное состояние

awaiting 3ds result Проведение платежа приостановлено. Платежная платформа ожидает от вас запрос с информацией о результате аутентификации 3‑D Secure. Если такой запрос не поступит от вас в платежную платформу в течение 30 минут, платеж будет переведен в статус decline.

Промежуточное состояние

awaiting clarification Проведение платежа приостановлено. Платежная платформа ожидает от вас запрос с недостающей информацией. Если такой запрос не поступит от вас в платежную платформу в течение 30 минут, платеж будет переведен в статус decline.

Промежуточное состояние

decline Платеж отклонен.

Конечное состояние

success Платеж проведен.

Конечное состояние

Статусы операции Account verification

Следующие статусы могут быть назначены операции account verification.

Статус Значение статуса
processing Операция выполняется.

Промежуточное состояние

awaiting 3ds result Выполнение операции приостановлено. Платежная платформа ожидает от вас запрос с информацией о результате аутентификации 3‑D Secure. Если такой запрос не поступит от вас в платежную платформу в течение 30 минут, операция будет переведена в статус decline.

Промежуточное состояние

awaiting clarification Выполнение операции приостановлено. Платежная платформа ожидает от вас запрос с недостающей информацией. Если такой запрос не поступит от вас в платежную платформу в течение 30 минут, операция будет переведена в статус decline.

Промежуточное состояние

decline Операция отклонена.

Конечное состояние

success Операция выполнена.

Конечное состояние

Ссылки по теме