Разработка системы биллинга для Telegram-бота прошла несколько этапов. На начальном этапе была реализована возможность оплаты. Затем были введены ограничения для пользователей, которые не оплатили подписку, с приостановкой мониторинга и запретом добавления новых сайтов. На третьем этапе были введены ежедневные списания с баланса пользователей по установленному тарифу.
При списании средств учитывается баланс пользователя, а также количество дополнительных сайтов, которые он отслеживает. Списания происходят не мгновенно, а с некоторой задержкой, чтобы избежать списания в ночное время. Это сознательное решение, упрощающее систему биллинга.
Техническая реализация использует MySQL для расчёта списаний. Запрос учитывает время работы каждого сайта и баланс пользователя. Для каждого пользователя определяется самая ранняя дата, за которую нужно рассчитать списание. Запрос выполняется несколько раз за сутки, постепенно нагоняя упущенные дни. Клиенты без оплат в выборку не попадают — с них списать всё равно нечего.
Запрос для расчёта списаний учитывает множество факторов, включая дату начала платного тарифа, пополнения баланса и предыдущие списания. Списания сохраняются, даже если они нулевые, чтобы не обрабатывать их повторно. Это делает биллинг более эффективным и надежным.
Изображение носит иллюстративный характер
При списании средств учитывается баланс пользователя, а также количество дополнительных сайтов, которые он отслеживает. Списания происходят не мгновенно, а с некоторой задержкой, чтобы избежать списания в ночное время. Это сознательное решение, упрощающее систему биллинга.
Техническая реализация использует MySQL для расчёта списаний. Запрос учитывает время работы каждого сайта и баланс пользователя. Для каждого пользователя определяется самая ранняя дата, за которую нужно рассчитать списание. Запрос выполняется несколько раз за сутки, постепенно нагоняя упущенные дни. Клиенты без оплат в выборку не попадают — с них списать всё равно нечего.
Запрос для расчёта списаний учитывает множество факторов, включая дату начала платного тарифа, пополнения баланса и предыдущие списания. Списания сохраняются, даже если они нулевые, чтобы не обрабатывать их повторно. Это делает биллинг более эффективным и надежным.