@lexstile

Как правильно спроектировать тарифные планы?

Ребята, подскажите разумное решение.
Вопрос: в какой момент отключать тариф? (active = 0)

1 решение (предлагает мой ментор):
Дату valid_till делать всегда на конец дня - 23:59:59 (today()->addDays(30)->endOfDay()).
В 00:00:00 - по крону проходимся по БД и отключаем просроченные тарифы.

2 решение (предлагаю я):
Дату valid_till брать текущее время в UTC (now()->addDays(30)).
Деактивируем тариф только при переходе на другой, либо при продлении текущего (т. е. только после действия пользователя).
6408d02eb9883130377262.png
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
Это зависит от правил тарификации, прописанных в договоре:

1. В случае с тарификацией с привязкой к календарю (действие тарифа до определенной даты) время окончания действия тарифа должно быть в таймзоне пользователя, чтобы у него не отключился тариф на 12 часов раньше из-за несовпадения его таймзоны с таймзоной сервера. Если в договоре указано «на 30 дней» или «на месяц», то юридически это «30 полных дней», а не «до 30 октября 13:54» и люди будут ожидать, что тариф будет действовать полный последний рабочий день. В такой ситуации корректным будет решение 1.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы