Как мы разрабатывали подписочную модель для агромаркета

Привет, я Михаил Шрайбман, основатель веб-интегратора «Осьминожка». Мы занимаемся разработкой для среднего и крупного бизнеса, а также одними из первых начали внедрять ИИ в бизнес-процессы наших клиентов.

Однажды перед нами встала задача реализовать систему подписок для маркетплейса по продаже и покупке зерна. Мы понимали, что у этой задачи существует множество нюансов: от тарифной сетки до взаимодействия с системой оплаты. Итак, как же мы справились?

Выбор платёжного шлюза

Первым делом мы начали искать подходящую платёжную систему. С учётом специфики бизнеса клиента и текущих реалий, самым оптимальным решением оказалась ЮKassa.

Эта система предлагает достаточно простой процесс интеграции. Сразу после подписания договора можно получить доступ ко всей документации. Правда, здесь была небольшая трудность — не было стандартного модуля для 1С-Битрикс, поэтому нам пришлось писать его самостоятельно.

Его основной функционал:

  • Проведение оплаты
  • Оформление возвратов
  • Автоматическое продление подписки

Кстати, ЮKassa не сохраняет банковские карты пользователей, зато есть уникальные идентификаторы. Это значительно упростило нам процесс работы с платёжными данными.

Архитектура системы подписки

После интеграции платёжного шлюза мы перешли к разработке тарифных планов. Тарифы различались по количеству размещаемых объявлений в месяц и по уровню предоставляемых возможностей. Ключевыми задачами было хранение информации о подписках пользователей:

  • Дата начала
  • Дата завершения
  • Уникальный идентификатор
  • Тариф
  • Привязанный пользователь

Для хранения этих данных мы использовали Highload-блоки. Сам компонент подписок мы реализовали через стандартные классы PHP.

Система уведомлений и продления подписок

Чтобы минимизировать отток пользователей, мы внедрили систему уведомлений:

  • За 7 дней до окончания подписки отправляется первое напоминание
  • В день автоматического продления пользователю приходит уведомление о списании средств

Также мы сделали трёхдневный буфер на продление. Если в день автоматического списания на счёте недостаточно средств, система делает повторные попытки:

  • Первая попытка списания
  • Повторная попытка через день, при этом подписка остается активной
  • Третья попытка — если и она неудачна, подписка аннулируется, а пользователь получает соответствующее уведомление.
Начать дискуссию