Я перехожу с Система выставления счетов на основе кредитов на Система выставления счетов на основе подписки .До сих пор я проверял количество кредитов, которые имел пользователь, и основываясь на этом;Я использовал для электронной почты пользователя, было ли продление сделано или нет.В случае первой покупки я использовал активированный план, который выбрал пользователь.
Сейчас я перехожу на систему выставления счетов на основе подписки, в которой я буду хранить подписки с validity
и хочуустранить часть кредитов из корня.Вот схема базы данных для моей новой биллинговой системы. Проблема с этой схемой заключается в том, что я не могу обработать событие первой покупки, поскольку нет точного способа узнать, совершает ли пользователь покупку в первый раз и заплатил ли пользователь полную сумму или нет.Я запутываюсь на каждом этапе изменений.
Позвольте мне объяснить, с какой проблемой я сталкиваюсь.Во время обработки транзакции флаг is_active
в subscriptions
остается null
, что означает, что пользователь не может выполнять никаких действий с моим программным обеспечением.Но когда транзакция будет обработана, пользователь вернется на мой веб-сайт, и мой веб-сайт пометит транзакцию paid
, что означает, что пользователь заплатил, но, поскольку нет никакой связи между транзакциями и подписками, как узнать, когда помечать подписку как оплаченную,В TransactionController транзакции будут обрабатываться, а в SubscriptionController , подписка будет обрабатываться.
Я не создал связь между подпиской и транзакцией, поскольку в этом случаеМне придется разрешить nullable foreign keys
в транзакции, потому что транзакции могут быть и для дополнительных услуг!
Я все больше путаюсь, думая об этом больше.Я не знаю, в чем здесь проблема, но я знаю, что есть некоторые проблемы с дизайном базы данных.Любая помощь приветствуется!