tomatophp / filament-subscriptions
在FilamentPHP中通过可定制的计划管理订阅和功能访问
1.0.7
2024-09-18 10:13 UTC
Requires
README
Filament Subscriptions
在FilamentPHP中通过可定制的计划管理订阅和功能访问
感谢Laravel Subscriptions,您在使用此包之前可以先查看它。
屏幕截图
特性
- 管理计划
- 管理功能
- 管理订阅
- 多租户支持
- 原生Filament订阅支持
- 订阅中间件
- 类似于Spark的订阅页面
- 订阅事件
- 订阅外观钩子
- 订阅Webhooks
- 订阅支付集成
安装
composer require tomatophp/filament-subscriptions
我们需要安装并迁移媒体库插件,您可以使用以下命令发布迁移
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"
现在您需要发布您的迁移
php artisan vendor:publish --provider="Laravelcm\Subscriptions\SubscriptionServiceProvider"
之后请运行此命令
php artisan filament-subscriptions:install
最后在/app/Providers/Filament/AdminPanelProvider.php
上注册插件
->plugin(\TomatoPHP\FilamentSubscriptions\FilamentSubscriptionsPlugin::make())
使用
现在在您的User.php模型或任何您喜欢的认证模型中,您需要添加此特性
namespace App\Models; use Laravelcm\Subscriptions\Traits\HasPlanSubscriptions; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasPlanSubscriptions; }
要为您的应用程序配置计费提供程序,请使用FilamentSubscriptionsProvider
use TomatoPHP\FilamentSubscriptions\FilamentSubscriptionsProvider; use TomatoPHP\FilamentSubscriptions\Filament\Pages\Billing; use Filament\Panel; public function panel(Panel $panel): Panel { return $panel // ... ->pages([ Billing::class ]) ->tenantBillingProvider(new FilamentSubscriptionsProvider()); }
此设置允许用户通过租户菜单中的链接管理其计费。
要求订阅
要强制对应用程序的任何部分执行订阅要求,请使用requiresTenantSubscription()
方法
use Filament\Panel; public function panel(Panel $panel): Panel { return $panel // ... ->requiresTenantSubscription(); }
没有活跃订阅的用户将被重定向到计费页面。
注册新的订阅者类型
您可以使用以下代码注册新的订阅者类型
use TomatoPHP\FilamentSubscriptions\Facades\FilamentSubscriptions; public function boot() { FilamentSubscriptions::register( \TomatoPHP\FilamentSubscriptions\Services\Contracts\Subscriber::make() ->name('User') ->model(\App\Models\User::class) ); }
使用事件
我们在订阅过程的每个地方都添加了事件,以下是事件的列表
TomatoPHP\FilamentSubscriptions\Events\CancelPlan
TomatoPHP\FilamentSubscriptions\Events\ChangePlan
TomatoPHP\FilamentSubscriptions\Events\RequestPlan
TomatoPHP\FilamentSubscriptions\Events\SubscribePlan
所有事件都具有相同的负载
return [ "old" => //Plan, "new" => //Plan, "subscription" => //Subscription, ]
使用外观钩子
您可以使用外观钩子向订阅过程添加自定义逻辑
use TomatoPHP\FilamentSubscriptions\Facades\FilamentSubscriptions; FilamentSubscriptions::afterSubscription(function (array $data){ // your logic here }); FilamentSubscriptions::afterRenew(function (array $data){ // your logic here }); FilamentSubscriptions::afterChange(function (array $data){ // your logic here }); FilamentSubscriptions::afterCanceling(function (array $data){ // your logic here });
发布资产
您可以使用此命令发布配置文件
php artisan vendor:publish --tag="filament-subscriptions-config"
您可以使用此命令发布视图文件
php artisan vendor:publish --tag="filament-subscriptions-views"
您可以使用此命令发布语言文件
php artisan vendor:publish --tag="filament-subscriptions-lang"
其他Filament包
查看我们的Awesome TomatoPHP