Created
November 26, 2009 11:24
-
-
Save UserAd/243407 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. Налог должен вычислятся автоматически в зависимости от того, какого типа транзакция | |
2. Должна быть система подтранзакций. | |
3. Создание подтранзакций полностью автоматическое и срабатывает во время сохранения транзакции (after_create) | |
4. Guardian(Защита переключения состояния) работает только у основной транзакции и проверяет сумму у всех транзакций, чтоб небыло проблем с различными состояниями транзакций | |
5. Для любой транзакции верхнего уровня есть метод подсчета всей суммы с налогами и без налогов. | |
6. Реферральские определяются из источника (пользователя от которого уходит платеж) и приемника (пользователя которому уходит платеж) | |
7. В каждой транзакции на момент ее подготовки (забора средств со счета) запоминается баланс всех сторон (нужно для поиска багов) | |
а) Типы транзакций: | |
1. Перевод денег системой MONEY_TACTION | |
2. Перевод денег администратором ADMIN_TACTION | |
3. Плата за активацию [x] [*] ACTIVATION | |
4. Плата за месячный платеж [x] [*] MONTH_PAYMENT | |
5. Плата за переадресацию PSTN_PAYMENT | |
6. Налог * TAX | |
7. Реферральские ** REFFERAL | |
* [x] - обозначение облагаемых налогом транзакций | |
** [*] - передача части средств от продажи, покупки номера рефоводу (налог2) | |
b) Система подтранзакций | |
Каждая транзакция может представлять из себя дерево, например | |
[Активация] | |
[Налог] | |
[Реферральские1] | |
[Реферральские2] | |
Логика работы транзакций | |
Все транзакции имеют ряд состояний с возможными переходами: | |
1. Создана (если не будет никакой обработки, то недействительна) | |
2. Зарезервирована (забраны деньги, если возможно) | |
3. Проведена (деньги отправлены получчателю) | |
4. Отменена (деньги вернули отправителю) | |
Т.е возможны следующие цепочки: 1->2->3 и 1->2->4 | |
При заборе средств если у пользователя недостаточно денег, то состояние транзакции не изменяется. | |
TODO: провести дополнительный нагрузочный тест |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment