@KirbySattler

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

Хочу реализовать месячную подписку для пользователей, суть такова: пользователь оплачивает месяц подписки и ровно через 28 дней она пропадает и у пользователя выключаются определенные привилегии, как лучше всего рассчитывать этот период в базе данных и как отключать по расписанию их привилегии?
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 4
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Оплатил: к текущей дате прибавили 29 (28+сегодня, т.е. полных - всегда 28 даём) и установили timestamp.
При действиях пользователя - проверяем: текущая дата меньше или равна timestamp, если "ДА" - то привилегия работает, "НЕТ" - период привилегии закончился и ставим флаг "EXPIRED" в БД.
PS: А почему месячная подписка - это 28 дней, а не больше?
Ответ написан
Sanes
@Sanes
Записать дату окончания подписки. Или дату оплаты. Как ещё?
Ответ написан
Комментировать
Gomonov
@Gomonov
Делаем таблицу подписок, в ней дата начала, дата окончания, пользователь.
Никаких расписаний не надо. Тем более можно напороться на случай, когда вы будете менять привелегии у пользователя с подписан на не подписан по расписанию, и в этот момент пользователь будет продлевать подписку. Проверку что пользователь подписан нужно делать каждый раз при запросе привилегий пользователя, путём запроса к таблице описанной выше. Условие = пользователь, плюс текущее время находится между двумя датами. Если запись найдена - есть привилегии.
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
Если не использовать календарный месяц, то есть подписка на, например, октябрь 2019 года, то подписывать на период (месяц должен быть месяцем, а не 28 дней). Оплата: код пользователя, дата оплаты, дата начала подписки, дата окончания. Дату начала подписки либо вычислять по последней подписке пользователя, либо запрашивать. Дату окончания — вычислять по тарифу, который действует на указанный период. Возможно потребуется отдельная таблица Тариф: дата введения, число дней, цена.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы