adamgoose/saasframe

基于Laravel编写的订阅式SaaS的Bootstrap

dev-master 2014-04-25 02:27 UTC

This package is auto-updated.

Last update: 2024-08-29 04:16:40 UTC


README

注意: 此软件包已停止更新... 相反,请查看Laravel的Cashier软件包:https://github.com/laravel/cashier

Saas Frame

Build Status

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客户的电子邮件
  • 错误日志记录
  • 用于管理用户和订阅的辅助类
  • 还有其他什么吗? 提交问题