使用 Laravel Cashier 简化 PHP 支付与订阅管理
在当今的互联网时代,线上支付和订阅服务已成为许多应用的标配。对于 PHP 开发者来说,Laravel 框架提供了一个强大的工具——Laravel Cashier,来简化支付与订阅的处理。本文将深入探讨如何利用 Laravel Cashier 来高效地管理支付和订阅服务。

初识 Laravel Cashier
Laravel Cashier 是一个封装了 Stripe 和 Paddle 等支付服务提供商的库,旨在为开发者提供一个简洁、直观的接口来处理复杂的支付逻辑。通过 Cashier,你可以轻松地实现用户订阅、发票管理、优惠券应用等功能。
安装与配置
首先,确保你的项目已经安装了 Laravel 框架。接下来,通过 Composer 安装 Cashier:
composer require laravel/cashier
安装完成后,需要配置 Cashier 以连接到你的支付服务提供商。以 Stripe 为例,在 .env 文件中添加以下配置:
STRIPE_KEY=your_stripe_key
STRIPE_SECRET=your_stripe_secret
并在 config/services.php 中添加对应的配置项:
'stripe' => [
'model' => App\Models\User::class,
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
'webhook' => [
'secret' => env('STRIPE_WEBHOOK_SECRET'),
'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),
],
],
创建订阅
Cashier 提供了简单的方法来创建和管理用户订阅。首先,确保你的用户模型使用了 Billable trait:
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
}
接下来,你可以通过以下代码为用户创建一个新的订阅:
$user = User::find(1);
$user->newSubscription('default', 'price_id')->create($paymentMethod);
在这里,'default' 是订阅的名称,'price_id' 是你在 Stripe 中创建的价格 ID,$paymentMethod 是用户的支付方式。
管理订阅
Cashier 提供了丰富的 API 来管理订阅。例如,你可以轻松地取消或更换订阅计划:
// 取消订阅
$user->subscription('default')->cancel();
// 更换订阅计划
$user->subscription('default')->swap('new_price_id');
处理发票与优惠券
Cashier 还支持发票和优惠券的管理。你可以轻松地生成发票,并应用优惠券:
// 生成发票
$invoice = $user->invoices()->create();
// 应用优惠券
$user->applyCoupon('coupon_code');
Webhook 处理
为了确保支付状态的同步,Cashier 支持处理来自支付服务提供商的 Webhook 通知。在你的路由文件中添加以下路由:
Route::post('/stripe/webhook', [StripeWebhookController::class, 'handleWebhook']);
并在 StripeWebhookController 中处理相应的 Webhook 事件:
use Laravel\Cashier\Http\Controllers\WebhookController;
class StripeWebhookController extends WebhookController
{
// 处理 Webhook 事件
}
总结
通过 Laravel Cashier,PHP 开发者可以极大地简化支付与订阅管理的复杂性。无论是创建订阅、管理发票,还是处理 Webhook 通知,Cashier 都提供了简洁而强大的接口。希望本文能帮助你快速上手 Laravel Cashier,为你的应用添加高效的支付与订阅功能。
在数字化转型的浪潮中,掌握这些工具无疑将为你的项目带来更多的可能性和竞争力。不妨一试,让 Laravel Cashier 成为你支付与订阅管理的得力助手!