Laravel 的收费系统 Cashier
简介
Laravel Cashier 提供了直 观、流畅的接口来接入 Stripe's 和 Braintree's 订阅付费服务。它可以处理几乎所有你写起来非常头疼付费订阅代码。除了提供基本的订阅管理之外,Cashier 还可以帮你处理优惠券,更改订阅计划, 按量计费订阅, 已取消订阅宽限期管理, 甚至生成发票的 PDF 文件。
备注
如果你只是需要提供一次性的收费服务,建议直接使用 Stripe 和 Braintree 的 SDK,而无需使用 Cashier。
配置
Stripe
Composer
首先,将 Cashier Stripe 扩展包添加到 composer.json
文件,然后运行 composer update
命令:
"laravel/cashier": "~7.0"
Service 服务提供者
接下来,需要注册 Laravel\Cashier\CashierServiceProvider
服务提供者 到你的 config/app.php
配置文件。
数据库迁移
在使用 Cashier 之前,我们需要 准备一下数据库。需要在 users
表中新增几列,以及创建一个新的 subscriptions
表来存储客户的订阅信息:
Schema::table('users', function ($table) {
$table->string('stripe_id')->nullable();
$table->string('card_brand')->nullable();
$table->string('card_last_four')->nullable();
$table->timestamp('trial_ends_at')->nullable();
});
Schema::create('subscriptions', function ($table) {
$table->increments('id');
$table->integer('user_id');
$table->string('name');
$table->string('stripe_id');
$table->string('stripe_plan');
$table->integer('quantity');
$table->timestamp('trial_ends_at')->nullable();
$table->timestamp('ends_at')->nullable();
$table->timestamps();
});
创建好数据库迁移文件之后,需要运行一下 migrate
Artisan 命令。
Billable 模型
现在,需要添加 Billable
trait 到你的模型定义。Billable
trait 提供了丰富的方法去允许你完成常见的支付任务,比如创建订阅,使用优惠券以及更新信用卡信息。
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
}