adamgoose / saasframe
基于Laravel编写的订阅式SaaS的Bootstrap
Requires
- php: >=5.3.0
- cartalyst/sentry: 2.0.*@dev
- illuminate/support: 4.0.x
- stripe/stripe-php: dev-master
This package is auto-updated.
Last update: 2024-08-29 04:16:40 UTC
README
注意: 此软件包已停止更新... 相反,请查看Laravel的Cashier软件包:https://github.com/laravel/cashier
Saas Frame
Saas Frame(saasframe)是一个基于Bootstrap的SaaS,用于管理您的应用程序与Stripe支付网关之间的交互。
安装
由于Saas Frame已在Packagist上提供,因此开始使用它非常简单。要安装Saas Frame,请将以下行包含在您的composer.json
文件中。
"adamgoose/saasframe": "dev-master"
然后,在您的工作目录中运行composer update
。
接下来,我们将配置一些依赖项。Saas Frame与强大的用户身份验证/权限系统Sentry集成。Sentry已为您安装,但您需要运行其迁移。一旦您使用数据库凭证配置了/app/config/database.php
,请在您的工作目录中运行以下命令。
php artisan migrate --package=cartalyst/sentry
接下来,我们将对Sentry的迁移进行一些修改。
php artisan migrate --package=adamgoose/saasframe
您还需要查看Sentry和Saas Frame提供的配置选项。
php artisan config:publish --package=cartalyst/sentry
php artisan config:publish --package=adamgoose/saasframe
完成此操作后,请查看/app/config/packages/cartalyst/sentry/config.php
和/app/config/packages/adamgoose/saasframe/config.php
以设置Saas Frame。我们将在下一分钟讨论这些配置选项。
您还需要将一些信息添加到您的/app/config/app.php
文件中。只需将以下行添加到您的providers
数组中。
'Adamgoose\Saasframe\SaasframeServiceProvider',
'Cartalyst\Sentry\SentryServiceProvider',
您还希望能够通过Laravel的类别名功能访问Sentry的类。将以下行添加到aliases
数组中。
'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry',
现在,我们只需确保一切配置正确。
配置
您可以按照自己的意愿配置Sentry。有关更多信息,请参阅Sentry文档。在此,我们只需讨论您可以在Saas Frame中配置的内容。
route
选项允许您决定希望Saas Frame自动化的位置。这是您将指向Stripe webhook的地方。例如,如果route
配置设置为'saasframe',则应将您的Stripe webhook指向'http://yourdomain.com/saasframe'。
请注意,Stripe需要https://协议用于生产webhook。但是,http://对于开发来说已经足够。
您还需要为Saas Frame提供您的Stripe API密钥。如果您不知道在哪里获取这些密钥,请参阅Stripe文档以获取更多信息。
《plans
》数组是发生魔法的地方。通过正确配置这个数组,您的SaaS自动化可以真正蓬勃发展。在这里,您将建立您的(Stripe计划)[https://stripe.com/docs/subscriptions] 与应用程序中各个级别的访问之间的关联。当您将Stripe计划与Sentry权限组相关联时,订阅特定计划的用户将自动添加到该Sentry组。这使您能够立即授予通过Stripe订阅计划的用户访问您应用程序付费功能的权限。您所需要做的就是告诉Stripe让特定客户订阅计划以开始计费流程。
猜猜看!我们已经为您加载了Stripe API,并且设置了您的Stripe API密钥。您只需要调用任何Stripe API方法来访问和管理您的Stripe账户。更多关于Stripe API的信息。请记住,您不需要调用
require_once('./lib/Stripe.php')
或Stripe::setApiKey()
。
最后,您可以控制SaaS Frame的电子邮件行为。在用户的订阅试用即将结束时,Stripe将自动发送一个webhook到SaaS Frame。SaaS Frame将自动处理此webhook,并发送电子邮件给您的用户。
就这样!您已经准备好了!现在让我们看看SaaS Frame如何帮助您构建您的软件即服务。
用法
SaaS Frame非常适合管理应用程序中的各种订阅级别。您只需要更新/app/config/packages/adamgoose/saasframe/config.php
中的plans
数组,然后您就可以启动并运行。
为了利用此功能,您必须在应用程序周围构建您的应用,以利用Sentry的权限管理。您可以查阅Sentry文档,了解如何在应用程序中授予和测试各种权限。
SaaS Frame为您自动化了基于用户的支付计划的权限的授予/撤销。当您使用Stripe API为用户创建支付订阅时,Stripe会自动将webhook发送到SaaS Frame。然后SaaS Frame介入处理该请求,并在您的应用程序中为用户授予或撤销各种权限。
例如,如果您使用Stripe API为用户订阅了一个计划,那么该用户的计费周期就开始了。SaaS Frame将自动将此用户添加到该计划对应的Sentry组。从理论上讲,这将立即让您的用户获得该特定计划提供的扩展功能。
同样,当用户取消订阅时,用户将自动从该权限组中移除。
在您的
/app/config/packages/adamgoose/saasframe/config.php
文件中正确管理Stripe计划ID(在Stripe中手动定义)和Sentry组ID之间的关系非常重要。
扩展SaaS Frame
如果您想向SaaS Frame添加功能,您可以扩展Adamgoose\Saasframe\Controllers\WebhookController
,并添加处理SaaS Frame尚未为您处理的其它webhook的方法。
SaaS Frame足够智能,可以在定义了WebhookController
的方法时自动为您处理这些请求。由于Stripe API在每次触发事件时发送预定义的webhook,您可以遵循此语法来扩展WebhookController
。
如果您想添加对customer.discount.updated
webhook的处理,例如,您只需将方法添加到WebhookController
的扩展中,如下所示
private function customerDiscountCreated()
{
// handle webhook...
}
在WebhookController
初始化时,为您定义了以下变量
$this->body
- 发送到控制器的原始HTTP正文请求$this->event
- webhook引用的特定对象$this->type
- webhook类型的名称
如果您需要以任何原因渲染处理特定webhook的方法名称,只需运行以下方法
$this->parseMethodName($webhookName);
但是,请注意,当调用WebhookController
时,这会为您处理。
贡献
由于SaaS Frame正在积极开发中,如果您想为SaaS Frame仓库做出贡献,那将非常棒。您可以今天就将其分叉,完成后提交拉取请求。请尽量遵守psr-2标准。
待办事项
- 校对此README.md。哈哈
- 同步本地用户电子邮件和Stripe客户的电子邮件
- 错误日志记录
- 用于管理用户和订阅的辅助类
- 还有其他什么吗? 提交问题。