Подписки и рекуррентные платежи в PayLink

В PayLink появились подписки. Внешне это одна кнопка в конструкторе форм, за которой стоит довольно много механики: расписание списаний, повторные попытки при отказе банка, уведомления, изменение суммы и отмена по инициативе плательщика.
Отказы — главная часть работы
Самая недооценённая часть рекуррентных платежей — то, что происходит при неуспешном списании. На карте кончились деньги, банк отклонил операцию, карта перевыпущена. Если просто повторять запрос, банк начнёт воспринимать это как подозрительную активность, а клиент — как назойливость.
Мы сделали расписание повторов с растущими интервалами и разной логикой в зависимости от кода отказа: «недостаточно средств» и «карта заблокирована» — это разные истории, и обрабатывать их одинаково бессмысленно. Плательщик получает уведомление до списания и ссылку на обновление карты, если проблема в ней.
Отмена, которую видно
У каждой подписки есть личный кабинет плательщика: там видно сумму, дату следующего списания и кнопку отмены. Мы сознательно не стали прятать её за формой обратной связи. Подписка, от которой трудно отказаться, приносит несколько лишних списаний и потом возврат с претензией — арифметика не в пользу тёмных паттернов.
Функция доступна всем клиентам PayLink. Для тех, кто уже вёл подписки вручную через повторные счета, есть перенос: существующие плательщики переезжают без повторного согласия, если условия не менялись.