tomatophp/filament-subscriptions

在FilamentPHP中通过可定制的计划管理订阅和功能访问

1.0.7 2024-09-18 10:13 UTC

This package is auto-updated.

Last update: 2024-09-18 10:13:59 UTC


README

Screenshot

Filament Subscriptions

Latest Stable Version License Downloads

在FilamentPHP中通过可定制的计划管理订阅和功能访问

感谢Laravel Subscriptions,您在使用此包之前可以先查看它。

屏幕截图

Tenant Menu User Menu Billing Page Change Subscription Modal Plans Edit Plan Create Feature Features Subscriptions Create Subscription Cancel Modal

特性

  • 管理计划
  • 管理功能
  • 管理订阅
  • 多租户支持
  • 原生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