Subscriptionify - це Laravel-пакет від Rasel Islam Rafi для моделювання планів підписки та функцій, які вони розблоковують. Якщо Laravel Cashier обгортає API біллінгу платіжного провайдера, то Subscriptionify залишається агностичним до шлюзів: він відстежує плани, квоти функцій та використання у вашій власній базі даних, залишаючи питання платежів вам. Це робить його придатним для додатків, що виставляють рахунки через провайдерів, які Cashier не покриває, стягують плату з передплаченого балансу або надають доступ безкоштовно.
Чотири типи функцій для різних моделей квот
Основна ідея полягає в тому, що не всі функції поводяться однаково. Пакет моделює це як чотири окремі типи функцій, кожен зі своїми правилами споживання: Toggle (простий перемикач увімкнено/вимкнено), Consumable (вичерпна квота, що скидається за розкладом, наприклад, місячний ліміт API-викликів), Limit (жорсткий ліміт на поточну суму, що може бути звільнений знову, наприклад, активні проекти) та Metered (відстежує споживання з оплатою за використання без обмежень).
Будь-яка модель може стати платною, реалізувавши контракт Subscribable та додавши трейт InteractsWithSubscriptions. Методи відстеження використання живуть безпосередньо на моделі: hasFeature(), canConsume(), consume(), remainingUsage(). Для функцій типу Limit метод release() повертає одиниці назад, звільняючи слот.
Прямі гранти та опціональний біллінг
Метод grantFeature() призначає функцію безпосередньо підписнику поверх того, що надає план - це покриває разові поповнення та промоакції без створення окремого плану. Біллінг є опціональним: реалізуйте контракт HasFunds поряд із Subscribable, і пакет почне стягувати плату з балансу, який ви контролюєте. Пакет також надає middleware для захисту маршрутів, Blade-директиви для контенту у в'юхах та команду subscriptionify:expire-overdue для автоматичного закінчення підписок.