Как правильно организовать биллинг на сайте?

Доброго дня.
Есть сайт, предоставляющий серивис который использовался локально. Сайт написан на yii.

Сейчас хотим оказывать услуги с помощью этого сайта на платной основе (грубо говоря - открутка рекламы, баннеров и т.д.) и встает вопрос о том как "правильно" сделать биллинг.

Собственно сам процесс за что и как снимать - понятен. Не понятна теория биллинга, например:
- Как хранить сумму денег на счете ? Отдельным числом или каждый раз пересчитывать доходы и расходы ?
- Как хранить дохоы, расходы клиента ?
- Как часто "актуализировать" сумму биллинга ? Будут огромное количество мелких транзакций, условно 1000 штук в секунду по 0.0000000001$.

Прошу чисто теорию. И огромная просбьа не тыкать в готовые решения типа openX.
  • Вопрос задан
  • 4915 просмотров
Решения вопроса 1
Я храню историю и версии всего.
То есть:
- Как хранить сумму денег на счете ? Отдельным числом или каждый раз пересчитывать доходы и расходы ?

clients:
id | name | surname | email | 
&etc(различные другие поля) | 
plan_id(или planPrice) | 
budget(до последней оплаты) | totalBudget(за все время)


payment: история платежей
id | client_id| date | 
&etc(различные другие поля) | 
revision(если в процессе стоимость или условия услуги поменялись) | 
price | 
pay (оплачено или нет, 0 или дата платежа)

- Как хранить дохоы, расходы клиента ?


также и с ними
sale: история взносов
id | client_id| date | 
&etc(различные другие поля) | 
summ (какая сумма)| 
refund (внесено или нет, 0 или дата платежа) |
type (метод оплаты, Paypal, наличность, банк &etc)


- Как часто "актуализировать" сумму биллинга ? Будут огромное количество мелких транзакций, условно 1000 штук в секунду по 0.0000000001$.


С этим сложнее, но в высоконагрузочных проектах, надо базу сбрасывать, иначе зарастешь

К примеру собирать транзакции и раз в сутки, в час, 5минут (нужное подчеркнуть) сбрасывать в архив или удалять создавая запись о полученных(неоплаченных средствах)

transaction: история транзакций
id | client_id| date | date_start | date_end |  archive_date_or_id | 
&etc(различные другие поля) | 
summ | count |
pay (выплачено или нет, 0 или дата платежа)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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