Как мы разрабатывали подписочную модель для агромаркета
Привет, я Михаил Шрайбман, основатель веб-интегратора «Осьминожка». Мы занимаемся разработкой для среднего и крупного бизнеса, а также одними из первых начали внедрять ИИ в бизнес-процессы наших клиентов.
Однажды перед нами встала задача реализовать систему подписок для маркетплейса по продаже и покупке зерна. Мы понимали, что у этой задачи существует множество нюансов: от тарифной сетки до взаимодействия с системой оплаты. Итак, как же мы справились?
Выбор платёжного шлюза
Первым делом мы начали искать подходящую платёжную систему. С учётом специфики бизнеса клиента и текущих реалий, самым оптимальным решением оказалась ЮKassa.
Эта система предлагает достаточно простой процесс интеграции. Сразу после подписания договора можно получить доступ ко всей документации. Правда, здесь была небольшая трудность — не было стандартного модуля для 1С-Битрикс, поэтому нам пришлось писать его самостоятельно.
Его основной функционал:
- Проведение оплаты
- Оформление возвратов
- Автоматическое продление подписки
Кстати, ЮKassa не сохраняет банковские карты пользователей, зато есть уникальные идентификаторы. Это значительно упростило нам процесс работы с платёжными данными.
Архитектура системы подписки
После интеграции платёжного шлюза мы перешли к разработке тарифных планов. Тарифы различались по количеству размещаемых объявлений в месяц и по уровню предоставляемых возможностей. Ключевыми задачами было хранение информации о подписках пользователей:
- Дата начала
- Дата завершения
- Уникальный идентификатор
- Тариф
- Привязанный пользователь
Для хранения этих данных мы использовали Highload-блоки. Сам компонент подписок мы реализовали через стандартные классы PHP.
Система уведомлений и продления подписок
Чтобы минимизировать отток пользователей, мы внедрили систему уведомлений:
- За 7 дней до окончания подписки отправляется первое напоминание
- В день автоматического продления пользователю приходит уведомление о списании средств
Также мы сделали трёхдневный буфер на продление. Если в день автоматического списания на счёте недостаточно средств, система делает повторные попытки:
- Первая попытка списания
- Повторная попытка через день, при этом подписка остается активной
- Третья попытка — если и она неудачна, подписка аннулируется, а пользователь получает соответствующее уведомление.