lacodix/laravel-plans

一个用于管理计划、功能和订阅以及跟踪Laravel SAAS计费的Laravel包。

支持包维护!
lacodix

安装次数: 16

依赖者: 0

建议者: 0

安全: 0

星级: 1

关注者: 1

分支: 0

开放问题: 0

类型:laravel-package

v1.0.0 2024-09-15 12:48 UTC

This package is auto-updated.

Last update: 2024-09-15 20:13:03 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

文档

您可以在我们的文档网站上找到此包的完整文档,包括详细的解释和多个用例。

它做什么

  • 管理您SaaS中的所有可订阅的计划附加功能
  • 通过不同的计费周期订阅一个或多个计划。
  • 管理可选的功能。如果您需要,您也可以仅检查已订阅的计划。
  • 提供可计数的和不可计数的功能。使用不可计数的功能来启用/禁用功能。使用可计数的功能,例如令牌、信用等。将不同计划的不同功能值附加到不同的计划中,包括“无限”。在给定的时间间隔后自动重置值。
  • 只要可用余额,就可以使用功能。分割不同计划的使用情况,具体取决于计划的顺序。
  • 翻译您的计划和功能。在您的应用程序中通过slug标识它们,但通过spatie/laravel-translatable为用户提供本地化版本。
  • 排序您的计划、功能(用于向用户可视化)和订阅(以保持对使用顺序的控制)。
  • 在计划和订阅中允许元数据。元数据的使用取决于您。在某些用例中,我们使用元数据来保存货币或额外的价格信息。这些信息可以被后续的计费系统使用。

它不做什么

  • 计费。我们不创建发票或跟踪账单。使用您选择的发票服务,无论哪种都行。Stripe、PayPal、您自己的软件或其他任何服务。您只需从这个包中获得事件,当订阅创建或续订时,这可以用来触发发票。您也可以在创建订阅或相反操作之前等待付款。
  • 定价。是的,计划模型中有价格列,可以用于可视化。您也可以使用元数据来提供额外的价格信息,就像我们在某些示例中所做的那样。但您不需要这样做。您可以将价格保存在您的计费系统中,或者将其与计划分开保存。但确实,如果您使用价格列,您也可以获得部分订阅间隔的计算价格。

安装

composer require lacodix/laravel-plans

快速入门

为了熟悉所有设置和可能性,请参阅更详细的示例。这只是一个关于包如何工作的快速概述。

订阅者

将我们的HasSubscription特性添加到任何模型中。

use Lacodix\LaravelPlans\Models\Traits\HasSubscriptions;

class User extends Authenticatable {
    use HasSubscriptions;
    
    ...
}

计划和功能

创建包含功能的计划(后者是可选的,如果您不需要功能功能)。

use Lacodix\LaravelPlans\Enums\Interval;
use Lacodix\LaravelPlans\Models\Feature;
use Lacodix\LaravelPlans\Models\Plan;

$myPlan = Plan::create([
    'slug' => 'my-plan',
    'name' => 'My Plan', // can also be locale-array - see Feature below
    'price' => 50.0,
    'active' => true,
    'billing_interval' => Interval::MONTH,
    'billing_period' => 1,
    'meta' => [
        'price_per_token' => 0.05,
    ],
]);

$myFeature = Feature::create([
    'slug' => 'tokens',
    'name' => [
        'de' => 'Zusätzliche Tokens',
        'en' => 'Additional Tokens',
    ],
]);

$myPlan->features()->attach($myFeature, [
    'value' => 1000,
    'resettable_period' => 1,
    'resettable_interval' => Interval::MONTH,
]);

订阅和续订

// Subscribe to multiple plans
$user->subscribe($myPlan1, 'main');
$user->subscribe($myPlan2, 'addon');

// Change Subscription
$user->subscribe($myPlan3, 'main'); // will replace myPlan1 subscription

// Renew
$user->subscriptions()->first()->renew();

// Cancel
$user->subscriptions()->first()->cancel();

测试

composer test

贡献

在提交前,请运行以下命令并解决潜在的问题,并考虑为新的功能添加测试。

composer rector:test
composer insights
composer csfixer:test
composer phpstan:test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

鸣谢

此软件包受由Laravel Cameroon创建的Laravel Subscriptions的启发,最初是从它分叉出来的。经过几次决定在订阅计算方面走不同的路线后,它被从头开始重写,但仍包含一些原始的简单方法和代码部分。因此,如果此软件包不符合您的需求,请尝试查看Laravel Cameroons的订阅软件包。

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅许可文件