Организация помесячной абоненской платы

Alexos

Новичок
всем привет.
100 лет не занимался программированием, нужда заставила вернуться у тему.
мне нужно организовать сабж на сайте.
агрегатор платёжных систем я без проблем прикручу на сайт.
чтобы не изобретать велосипед, интересует литература по внутренней архитектуре подобной шняги.
организация таблиц в бд, алгоритм подсчета, нужен ли крон и всё такое прочее.
просветите как правильно всё это реализовать.
заранее спасибо.
 

VVWind

Новичок
Нужен ли крон? Ну подумайте, если у вас помесячная абонентская, вы будете сами сидеть запускать скрипт каждый месяц?
Литература по внутренней архитектуре "подобной шняги"? Достаточно лишь немного подумать и я считаю у вас все и так получится.
Скрипт что что-то делает если не оплачено и тот который прибавляет деньги после оплаты. Вроде все, нет?
Ну а таблицы в бд тут уж по вашим нуждам.
 

Alexos

Новичок
Есть таблица платежей с датами оплаты, связанная по айди с таблицей пользователей.
Допустим абонентка 100 руб./мес.
Баланс может быть пополнен и наперёд, на несколько месяцев сразу.
Я не совсем понимаю как автоматически высчитать, предоставлять услугу или нет?

Точнее мысли мои такие, но я не уверен в их правильности:
Запускаем следующий скрипт по крону раз в сутки -
Складываем платежи каждого пользователя и делим на количество месяцев с момента первого платежа.
Далее, если результат действия 100 руб., то ставим в заранее отведённом поле отметку 1, что означает, что услугу предоставлять.
Если нет, то соответственно 0.

Это всё мысли вслух. Я правильным путём иду или нет?

Блин... Вот начинаю письменно рассуждать и вижу первый косяк в такой системе:
Если пользователь не будет платить несколько месяцев, а потом вернётся, то такая система работать не будет.
Не говоря уже про нагрузку на сервак.
Как тут быть?

Вручную считать каждого клиента при поступлении каждого платежа и вручную ставить пометку в базу предоставлять услугу или нет?
Хорошо, тогда как автоматически высчитать приостановку услуги? Не будешь же каждый день вручную смотреть у кого сколько на балансе..

Извините, что немного сумбурно, размышляю вслух. Поправьте где нужно.
 

fixxxer

К.О.
Партнер клуба
Есть список услуг (общий для системы). У услуги есть стоимость и период оплаты.
У пользователя есть:
1) приходы и расходы
2) баланс (который всегда можно вычислить из приходов и расходов, но для производительности лучше денормализовать)
3) список используемых услуг: id услуги, статус активности, до какого числа оплачено, опционально флаг автопродления

Запускаем раз в сутки кроном скрипт, который проходит для всех активных пользователей по (3) - продолжать или понятно?

UPD 1: Если стоимость не фиксированная, а зависит от скидок и прочего, в (3) можно при активации услуги копировать условия предоставления услуги данному конкретному пользователю, и использовать локальные данные, а не общие для системы.
UPD 2: В зависимости от архитектуры биллинга, имеет смысл в п.3 еще ввести понятие инвойса, чтобы делать списания пачкой на пакет услуг в некоторый установленный день оплаты. Если хочется делать рекурринги с банковской карты, это даже необходимо.
 

Alexos

Новичок
fixxxer
Спасибо большое, много стало понятно.
С понедельника приступлю, вопросы по ходу буду задавать сюда.
Хотя они уже возникают по мере осмысления написанного.

Что касается "до какого числа оплачено", при списании месячной абонентки админом (бухгалтером) тупо зашить в скрипт админки +30 дней?
Кстати, тут же вытекает следующий вопрос корректно ли продлевать услугу на 30 дней? - ведь в каком то месяце дней 31.
Стоп, не так.. Надо списывать тупо этой же датой минус один день, только следующего месяца -
т.е. например если списание абонентки происходит сегодня, то получается, что услуга действует с 21 марта по 20 апреля включительно.
И тогда эта проблема отпадает. Правильно?

Насчёт необходимости ставить скрипт на крон, надо подумать. Ведь зачисление средств будет происходить вручную - тупо перенос платежа бухгалтером из Клиент-банка. Туда же тогда можно и зашить продление услуги.
Или есть банки, которые каким то образом дают доступ к логам моих банковских операций?
Тот банк, в котором у меня открыт счёт на моё юр.лицо, такой услуги не предоставляет.
А было бы замечательно! Тогда можно было полностью автоматизировать процесс.
Может есть какие то подобные сервисы? Не поделитесь, кто в теме?
Спасибо.
 

fixxxer

К.О.
Партнер клуба
например
1) ввести понятие инвойса
2) зачислять оплату именно инвойса
3) вместо ежесуточного крон-скрипта сделать постоянно запущенный скрипт, разгребающий очередь операций

касаемо банк-клиентов - некоторые банки предоставляют api, но немногие к сожалению.
 
Сверху