Проведение оплаты с автоматическими списаниями
Общая информация
Повторяемая оплата с автоматическими списаниями — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется серия переводов денежных средств от пользователя к мерчанту с использованием сохраненных платежных данных и без подтверждения подлинности платежного инструмента пользователя (такого, как ввод кода проверки подлинности карты).
В рамках платежной платформы оплаты со списаниями по запросу проводятся, как описано в разделе Схема и статусы повторяемой оплаты с автоматическими списаниями.
Схема оплаты
Чтобы выполнить повторяемую оплату с автоматическим списанием:
- Зарегистрируйте повторяемую оплату.
- Передайте запрос на повторяемую оплату с идентификатором записи о серии списаний.
Этот шаг пропускается, если при регистрации оплаты был передан параметр
scheduled_payment_idс идентификатором уже существующей повторяемой оплаты. - Примите от платежной платформы оповещение о результате списания.
- Продолжайте принимать оповещения о результате каждого списания в рамках платежа.
Для изменения условий повторяемой оплаты или ее отмены, а также для возврата средств после одного или нескольких списаний необходимо передать соответствующие запросы в платежную платформу (подробнее — в разделе Управление списаниями в рамках оплаты).
Рис.: Проведение регулярной оплаты с инициированием первого списания
- От веб-сервиса на заданный URL Rocketpay передается запрос на инициирование списаний.
- Этот запрос поступает в платежную платформу.
- В платежной платформе выполняется обработка запроса.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и его корректности.
- От платежной платформы к платежной системе направляется запрос на оплату.
- В платежной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платежной системе направляется уведомление о результате оплаты.
- От платежной системы к платежной платформе направляется уведомление о результате оплаты.
- Платежная платформа направляет в веб-сервис оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны платежной платформы инициируются последующие списания и для каждого из них повторяются пп. 5–11.
Рис.: Проведение регулярной оплаты без инициирования первого списания
- В платежной платформе выполняется обработка платежа.
- От платежной платформы к платежной системе направляется запрос на оплату.
- В платежной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платежной системе направляется уведомление о результате оплаты.
- От платежной системы к платежной платформе направляется уведомление о результате оплаты.
- Платежная платформа направляет в веб-сервис оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны платежной платформы инициируются последующие списания и для каждого из них повторяются пп. 1–8.
Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Общий порядок интеграции.
Формат запроса
При формировании запросов необходимо учитывать следующее:
- Должен использоваться POST-запрос к конечной точке /v2/payment/card/recurring.
- В запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от Rocketpay при интеграции;payment_id— идентификатор платежа, уникальный в рамках проекта;signature— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Подписывание и проверка подписи);
customer— объект, содержащий сведения о пользователе:ip_address— используемый IP-адрес;id— идентификатор пользователя в рамках проекта мерчанта;
payment— объект, содержащий сведения о платеже:amount— сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;currency— валюта платежа в формате ISO-4217 alpha-3;
recurring— объект, содержащий сведения повторяемой оплате:id— идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации.
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму проведения платежа, а также идентификатор серии списаний.
Рис.: Пример набора данных в запросе на проведение повторяемой оплаты
{
"general":{
"project_id":42,
"payment_id":"456789",
"signature":"K5D/aZAMdeR+YyilUwS=="
},
"customer":{
"ip_address":"202.144.196.0",
"id":"customer_12"
},
"payment":{
"amount":400,
"currency":"USD"
},
"recurring":{
"id":1079
}
}
Формат оповещений
Платежная платформа передает в веб-сервис оповещение с данными о регистрации повторяемой оплаты. Для этого оповещения используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В данном случае оповещение свидетельствует о том, что в рамках проекта 42 для пользователя customer_12 было выполнено списание в размере 4,00 USD с платежной карты № 424242******4243 и ожидаются последующие списания.
Рис.: Пример данных из оповещения о результате списания
{
"customer":{
"id":"customer_12"
},
"account":{
"number":"424242******4243",
"type":"visa",
"card_holder":"JOHN SMITH",
"id":45678,
"expiry_month":"08",
"expiry_year":"2025"
},
"payment":{
"sum":{
"amount":400,
"currency":"USD"
},
"method":"card",
"date":"2019-06-07T06:18:02+0000",
"status":"scheduled recurring processing", // Статус платежа
"type":"recurring", // Тип платежа
"id":"456789",
"description":""
},
"project_id":42,
"recurring":{
"valid_thru":"2019-07-31T00:00:00+0000",
"currency":"USD",
"id":1079 // Идентификатор серии списаний
},
"operation":{
"id":39690002636,
"type":"recurring", // Тип операции
"status":"success", // Статус операции
"date":"2019-06-07T06:18:02+0000",
"created_date":"2019-06-07T06:18:02+0000",
"request_id":"5cfa0199c33071",
"sum_initial":{
"amount":400,
"currency":"USD"
},
"sum_converted":{
"amount":400,
"currency":"USD"
},
"provider":{
"id":6,
"payment_id":"1192",
"date":"2018-02-07T08:34:24+0000",
"auth_code":"5253",
"endpoint_id":6
},
"code":"0",
"message":"Success"
},
"signature":"v7KNMpfZZ5D/aZMdeR+YyilUwSm...=="
}