Проведение оплаты со списаниями по запросу
Общая информация
Повторяемая оплата со списаниями по запросу — это тип платежа, в котором на основании одного исходного запроса выполняется один (повторяемый) перевод денежных средств от пользователя мерчанту с использованием сохраненных платежных данных и без процедуры подтверждения подлинности платежного инструмента пользователя (например, без ввода кода проверки подлинности карты).
В платежной платформе оплата со списаниями по запросу проводится, как описано в разделе Схема и статусы повторяемой оплаты со списаниями по запросу.
Схема оплаты
Для проведения повторяемой оплаты со списаниями по запросу необходимо:
- Зарегистрировать повторяемую оплату.
- Передать запрос на проведение повторяемой оплаты с идентификатором записи о серии списаний.
- Принять от платежной платформы оповещение о результате списания.
Для каждого последующего списания необходимо повторно передавать запросы на проведение повторяемой оплаты и принимать оповещения о результате.
Рис.: Проведение экспресс-оплаты
- Пользователь на стороне веб-сервиса инициирует списание.
- От веб-сервиса на заданный URL Rocketpay передается запрос на списание.
- Этот запрос поступает в платежную платформу.
- В платежной платформе выполняется обработка запроса.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и его корректности.
- От платежной платформы к платежной системе направляется запрос на оплату.
- В платежной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платежной системе направляется уведомление о результате оплаты.
- От платежной системы к платежной платформе направляется уведомление о результате оплаты.
- Платежная платформа направляет в веб-сервис оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны пользователя инициируются последующие списания и для каждого из них повторяются пп. 1–12.
Рис.: Проведение автооплаты
- От веб-сервиса на заданный URL Rocketpay передается запрос на списание.
- Этот запрос поступает в платежную платформу.
- В платежной платформе выполняется обработка запроса.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и его корректности.
- От платежной платформы к платежной системе направляется запрос на оплату.
- В платежной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платежной системе направляется уведомление о результате оплаты.
- От платежной системы к платежной платформе направляется уведомление о результате оплаты.
- Платежная платформа направляет в веб-сервис оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны веб-сервиса инициируются последующие списания и для каждого из них повторяются пп. 1–11.
Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Общий порядок интеграции.
Формат запроса
При формировании запросов необходимо учитывать следующее:
- Должен использоваться POST-запрос к конечной точке /v2/payment/card/recurring или к конечной точке /v2/payment/card/sale. Во втором случае платежные данные пользователя должны храниться на стороне веб-сервиса и категория оплаты должна соответствовать автооплате или регулярной оплате.
- В запросе должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от Rocketpay при интеграции;payment_id
— идентификатор платежа, уникальный в рамках проекта;signature
— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Подписывание и проверка подписи).
customer
— объект, содержащий сведения о пользователе:ip_address
— используемый IP-адрес;id
— идентификатор пользователя в рамках проекта мерчанта;
payment
— объект, содержащий сведения о платеже:amount
— сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;currency
— валюта платежа в формате ISO-4217 alpha-3.
- В зависимости от конечной точки, к которой направляется запрос, в запросе также должны использоваться следующие объекты и параметры:
- В запросах к конечной точке /v2/payment/card/recurring — идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации, в параметре
id
объектаrecurring
. - В запросах к конечной точке /v2/payment/card/sale — объект
card
со следующими параметрами:pan
— номер карты;year
— год окончания срока действия карты;month
— месяц окончания срока действия карты;card_holder
— имя держателя карты (в соответствии с указанным на карте);stored_card_type
— указатель категории, к которой относится повторяемая оплата (4
для автооплаты и6
для регулярной оплаты).
- В запросах к конечной точке /v2/payment/card/recurring — идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации, в параметре
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму проведения платежа, а также идентификатор записи о серии списаний или данные платежной карты и указатель категории повторяемой оплаты.
Рис.: Пример набора данных в запросе к конечной точке /v2/payment/card/recurring
{ "general":{ "project_id":42, "payment_id":"456789", "signature":"v7KNMp5D/aZAeb0VMdeR+CqGSm...==" }, "customer":{ "ip_address":"202.144.196.0", "id":"customer_12" }, "payment":{ "amount":400, "currency":"USD" }, "recurring":{ "id":1079 // Идентификатор записи о серии списаний } }
Рис.: Пример набора данных в запросе к конечной точке /v2/payment/card/sale
{ "general":{ "project_id":42, "payment_id":"456789", "signature":"v7KftZ5D/aZAdeR+qGrNxY...==" }, "customer":{ "ip_address":"202.144.196.0", "id":"customer_12" }, "payment":{ "amount":400, "currency":"USD" }, "card": { "pan": "4242424242424243", "year": 2025, "month": 8, "card_holder": "JOHN SMITH", "stored_card_type": 4 // Проведение автооплаты } }
Формат оповещений
Платежная платформа передает в веб-сервис оповещение с данными о регистрации повторяемой оплаты. Для этого оповещения используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В данном случае оповещение свидетельствует о том, что в рамках проекта 42
было выполнено списание в размере 4,00 USD
с платежной карты № 424242******4243
.
Рис.: Пример данных из оповещения о результате оплаты
{ "project_id":42, "payment":{ "id":"456789", "type":"recurring", "status":"success", "date":"2019-09-04T12:57:57+0000", "method":"card", "sum":{ "amount":400, "currency":"USD" }, "description":"" }, "account":{ "number":"424242******4243", "type":"visa", "card_holder":"JUDY DOE", "id":45678, "expiry_month":"08", "expiry_year":"2025" }, "recurring":{ "id":1079, "currency":"USD", "valid_thru":"2022-10-31T00:00:00+0000" }, "operation":{ "id":39690002636, "type":"recurring", "status":"success", "date":"2019-09-04T12:57:57+0000", "created_date":"2019-09-04T12:57:53+0000", "request_id":"0b9f9e57a50-61da119c", "sum_initial":{ "amount":400, "currency":"USD" }, "sum_converted":{ "amount":400, "currency":"USD" }, "provider":{ "id":414, "payment_id":"0020000000072964", "date":"2019-09-04T12:58:03+0000", "auth_code":"634R", "endpoint_id":414 }, "code":"0", "message":"Success" }, "signature":"MpfogAxZ5D/b0VMdeR+xYyilUwSm...==" }