Привет, Хабрахабр!

Относительно недавно мы запустили услугу рекуррентных платежей и хотим поделиться с вами их внутренним устройством. По сути, рекурренты — это серия повторяющихся платежей. Принцип их работы прост: при проведении первого (родительского) платежа, в базе данных регистрируется шаблон рекуррента, которому присваивается уникальный идентификатор. Все повторные списания происходят с использованием этого шаблона — мерчант дает команду своему сервис-провайдеру, с указанием идентификатора рекуррента и суммы платежа, а сервис-провайдер инициирует списание средств с карты пользователя.

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

В целом, весь процесс можно разделить на два этапа — регистрация шаблона рекуррентного платежа и повторное списание регулярного платежа. Покажем на примере использования 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

Заходите к нам на Фейсбук

Комментарии (7)


  1. RomanPyr
    29.04.2015 15:55
    +3

    Наверное, к сабжу стоило бы добавить «Как работают рекурренты в Payler Gate API».


    1. Polonium84 Автор
      30.04.2015 16:41

      Логично, что Payler рассказывает о рекуррентах на своем же примере. :)


  1. achekalin
    29.04.2015 18:19

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


    1. devotus
      30.04.2015 12:43

      Ну не всегда. Подтверждение, конечно, хорошо, но это либо «отправьте „Да“ на номер, чтобы подтвердить» и лишние телодвижения (и часто это не будет безопасно), либо вообще к банкомату идти или в личный кабинет. Да и часто совсем не хочется подтверждать, лишь бы уведомление приходило с суммой списания и на что. А лучше вообще о блокировании средств на карте, и если согласен, то игноришь в течение какого-то времени, а если нет, то тогда отзываешь блокировку средств…


      1. Polonium84 Автор
        30.04.2015 16:44

        Согласны насчет лишних телодвижений — все делается для того, чтобы от них избавиться. Но блокировать средства при рекуррентах нельзя, такие платежи всегда одностадийные — мы еще напишем об этом подробнее.


        1. devotus
          30.04.2015 17:06

          Ну я немного в курсе, со стороны оператора знаю процесс — писал платежный шлюз с поддержкой рекуррентных платежей. Особых сложностей не возникало. Только вот долго думали, когда предупреждать клиента о списании, перед или во время списания. И бывает что клиенты звонят и просят вернуть деньги, хотя они соглашались на оферту.


  1. Polonium84 Автор
    30.04.2015 17:13

    А что решили в итоге — когда предупреждать клиента?