Проект, в котором будет возможность оплаты доступа к сервису на различный периоды времени (месяц, три месяца, 6 месяцев, год). Как рассчитывать дату, до которой будет действительна подписка? Считать месяц за 30 дней и исходить из этого числа, или отталкиваться от числа месяца? Может быть есть какие-то стандарты, которых все придерживаются?
Может быть есть какие-то стандарты, которых все придерживаются?
Стандартов не существует, по тому во всяких тарифах и соглашениях следует писать, как расчитывается оплата.
А по какой схеме считать - отталкивайтесь от стоимости производства и ожиданий ваших клиентов (эта схема не должна быть контр-интуитивной или явно невыгодной для одной из сторон)
Мы используем свою платёжную систему, которая позволяет принимать BTC ровно так, как мы захотим, поэтому варианта положиться на стороннюю систему на данный момент нет. У нас получается не автоматическое ежемесячное списание, а ручная оплата, которая добавляет выбранный период времени, и хочется понять, как правильнее настроить расчёт добавляемого времени. В любом случае, учту ваш ответ, спасибо.
Делают и так, и так. Если вы заявляете подписку "на X месяцев", то нужно считать календарные месяцы. То есть, то же самое число месяца через X месяцев.
А если вы заявляете подписку на "X дней", то и считать нужно по календарным дням.
В том языке программирования, на котором делается проект, найдите функцию изменяющую дату/время на указанный промежуток: ИЗМЕНДАТА(месяц, +1, ДатаНачалаПериода), например.
В принципе, на данный момент так расчёт и реализован, однако хотелось бы понять наиболее правильную и общепринятую практику среди сервисов, требующих ежемесячную оплату. К слову, бэк написан полностью на PHP, в котором с использованием класса DateTime можно сделать удобный расчёт дат.