
Привет, Хабрахабр!
Относительно недавно мы запустили услугу рекуррентных платежей и хотим поделиться с вами их внутренним устройством. По сути, рекурренты — это серия повторяющихся платежей. Принцип их работы прост: при проведении первого (родительского) платежа, в базе данных регистрируется шаблон рекуррента, которому присваивается уникальный идентификатор. Все повторные списания происходят с использованием этого шаблона — мерчант дает команду своему сервис-провайдеру, с указанием идентификатора рекуррента и суммы платежа, а сервис-провайдер инициирует списание средств с карты пользователя.
Самому пользователю достаточно один раз принять оферту, где указано, за что и с какой периодичностью будут списываться средства.
В целом, весь процесс можно разделить на два этапа — регистрация шаблона рекуррентного платежа и повторное списание регулярного платежа. Покажем на примере использования Payler Gate API:
1. Регистрация шаблона
В запросе инициализации платежа StartSession требуется задать значение необязательного параметра recurrent равным true:

В ответ на успешное выполнение транзакции придет идентификатор созданного шаблона рекуррентных платежей recurrent_template_id. Также его можно получить, выполнив запрос GetStatus, указав параметры key (идентификатор мерчанта) и order_id. Пример ответа за успешный запрос:

2. Повторное списание
После успешной регистрации шаблона можно выполнять повторные списания без участия владельца карты. Для этого нужно выполнить запрос RepeatPay, указав следующие параметры:
key — идентификатор мерчанта
order_id — идентификатор заказа в системе мерчанта
amount — сумма платежа в копейках (может отличаться от суммы первого платежа)
recurrent_template_id — идентификатор шаблона рекуррентного платежа
Пример ответа на успешный запрос:

Шаблонов можно регистрировать несколько, а информацию по каждому из них можно получить через запрос GetTemplate (обязательно с указанием идентификатора шаблона, в противном случае в ответ придет информация обо всех шаблонах, существующих у мерчанта). При успешном выполнении запроса, мерчант получит ответ, содержащий следующие параметры:
recurrent_template_id — неизменная строка
created — дата и время регистрации шаблона
card_holder — имя держателя карты, к которой привязан шабло
card_number — маскированный номер карты
expiry — срок действия карты (по умолчанию создается на весь срок действия карты)
active — активность шаблона (со значениями true или false)
И пример ответа на успешный запрос:

Кстати, активировать или деактивировать шаблон поможет запрос ActivateTemplate, в котором нужно указать всего три параметра — key, recurrent_template_id и active, со значением true если шаблон требуется активировать, или false — если деактивировать.
Как вы видите, все устроено предельно просто. Чуть позже мы продолжим раскрывать тему автоплатежей и напишем еще один пост.
Хотим отметить, что услуга рекуррентов бесплатна для наших мерчантов. На данном этапе услугу нам предоставляют Банк Русский Стандарт и Альфа Банк, но совсем скоро к им присоединятся Промсвязьбанк и Сургутнефтьгазбанк.
Будем рады вашим вопросам и комментариям!
С пожеланием отличных выходных,
Ваш Payler
Заходите к нам на Фейсбук