Проведение оплаты с автоматическими списаниями
Общая информация
Повторяемая оплата с автоматическими списаниями — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется серия переводов денежных средств от пользователя к мерчанту с использованием сохранённых платёжных данных и без подтверждения подлинности платёжного инструмента пользователя (такого, как ввод кода проверки подлинности карты).
В рамках платёжной платформы оплаты со списаниями по запросу проводятся в соответствии с моделью проведения платежей (Повторяемая оплата с автоматическими списаниями).
Схема проведения
Для проведения повторяемой оплаты с автоматическими списаниями необходимо:
- Зарегистрировать повторяемую оплату.
- Передать запрос на проведение повторяемой оплаты с идентификатором записи о серии списаний (или пропустить этот шаг, если при регистрации оплаты был передан параметр
scheduled_payment_id
). - Принять от платёжной платформы оповещение о результате списания.
- Продолжать принимать оповещения о результате каждого списания в рамках платежа.
Для изменения условий повторяемой оплаты или её отмены, а также для возврата средств после одного или нескольких списаний необходимо передать соответствующие запросы в платёжную платформу (подробнее — в разделе Управление списаниями в рамках оплаты).
Рис.: Проведение регулярной оплаты с инициированием первого списания
- От веб-сервиса на заданный URL ecommpay передаётся запрос на инициирование списаний.
- Этот запрос поступает в платёжную платформу.
- В платёжной платформе выполняется обработка запроса.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
- От платёжной платформы к платёжной системе направляется запрос на оплату.
- В платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платёжной системе направляется уведомление о результате оплаты.
- От платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны платёжной платформы инициируются последующие списания и для каждого из них повторяются шаги 5—11.
Рис.: Проведение регулярной оплаты без инициирования первого списания
- В платёжной платформе выполняется обработка платежа.
- От платёжной платформы к платёжной системе направляется запрос на оплату.
- В платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платёжной системе направляется уведомление о результате оплаты.
- От платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны платёжной платформы инициируются последующие списания и для каждого из них повторяются шаги 1—8.
Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Организация взаимодействия.
Формат запроса
Формат запросов в этом разделе представлен для инициирования повторяемых оплат с автоматическими списаниями с использованием платёжных карт. При формировании запросов необходимо учитывать следующее:
- Должен использоваться POST-запрос к конечной точке /v2/payment/card/recurring.
- В запросе должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от ecommpay при интеграции;payment_id
— идентификатор платежа, уникальный в рамках проекта;signature
— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным);
customer
— объект, содержащий сведения о пользователе:ip_address
— используемый IP-адрес;id
— идентификатор пользователя в рамках проекта мерчанта;
payment
— объект, содержащий сведения о платеже:amount
— сумма платежа в минорных единицах валюты;currency
— валюта платежа в формате ISO-4217 alpha-3;
recurring
— объект, содержащий сведения повторяемой оплате:id
— идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации.
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму проведения платежа, а также идентификатор серии списаний.
В зависимости от особенностей провайдеров, участвующих в проведении платежа, набор обязательных параметров может варьироваться. Подробную информацию о требованиях провайдеров можно уточнить у курирующего менеджера ecommpay.
Рис.: Пример набора данных в запросе на проведение повторяемой оплаты
{ "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 } }
Формат оповещений
От платёжной платформы к веб-сервису передаётся оповещение с данными о регистрации повторяемой оплаты. Для этого оповещения используется стандартный формат, описание которого представлено в разделе Оповещения.
В данном случае оповещение свидетельствует о том, что в рамках проекта 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...==" }