tijmen-wierenga / laravel-chargebee
一个提供简单处理计费和订阅的Laravel包。
Requires
- php: ~5.5|~7.0
- chargebee/chargebee-php: ^1.6
- illuminate/console: ~5.1
- illuminate/database: ~5.1
- illuminate/support: ~5.1
- stripe/stripe-php: ^3.14
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is auto-updated.
Last update: 2022-02-01 12:55:28 UTC
README
这是一个利用Chargebee订阅软件,通过Laravel提供的简单方式来处理计费和订阅的包。
简介
LaravelChargebee (LC) 是一个会员管理工具,可以以最小的努力处理您的计费和周期性订阅。这个易于安装的包将覆盖成功订阅系统最重要的功能。
- 以非常灵活的方式创建周期性订阅
- 添加附加组件、优惠券或一次性收费
- 更改现有订阅
- 取消订阅
- 所有这些都可以通过流畅的API或使用Chargebee的安全托管页面来完成。
安装
如果您还没有在Chargebee上创建账户,可以在这里创建:这里。
然后使用Composer将包引入您的项目中
$ composer require tijmen-wierenga/laravel-chargebee
接下来,在config/app.php
中注册服务提供者
['providers'] => [ TijmenWierenga\LaravelChargebee\ChargebeeServiceProvider::class ]
将LaravelChargebee特征添加到您的model
中
use TijmenWierenga\LaravelChargebee\Billable; use TijmenWierenga\LaravelChargebee\HandlesWebhooks; class User extends Eloquent { use Billable, HandlesWebhooks; }
如果您想使用包的Webhook路由,请确保在App\Providers\RouteServiceProvider::class
之前放置服务提供者。
接下来,在您的终端中运行以下命令
php artisan chargebee:install
这将复制并运行包运行所需的迁移。它还将配置文件复制到您的配置路径。
还需要在.env
文件中添加一些环境变量
CHARGEBEE_SITE=your-chargebee-site
CHARGEBEE_KEY=your-chargebee-token
如果您想使用不同的支付网关,请在.env
文件中定义您的支付网关详情
CHARGEBEE_GATEWAY=stripe
使用
创建新的订阅
您可以通过多种方式创建订阅
- 通过Chargebee的托管页面
- 通过Stripe/Braintree的JavaScript库
使用Chargebee的托管页面创建订阅
检索托管页面URL
$url = $user->subscription($planId)->withAddon($addonId)->getCheckoutUrl($embed);
$embed
变量是一个布尔值,表示您是否想将托管页面嵌入为i-frame。
您现在可以选择将用户重定向到托管页面,或将其发送到您可以渲染视图的地方
重定向
return redirect($url);
将其作为变量返回到您的视图中
return view('subscribe')->with(compact($url));
接下来,在视图中渲染它
<iframe src="{{ $url }}"></iframe>
您可以在Chargebee上完全自定义您的托管页面,以下是一个示例:
成功时,Chargebee 默认将重定向到自己的成功页面,但为了在我们的应用程序中注册订阅,我们需要重定向回我们的应用程序。为了定义这个重定向,设置一个回调路由。
// Define your callback URI's here 'redirect' => [ 'success' => 'http://chargebee.app/success', 'cancelled' => null, ],
添加路由并从控制器调用 registerFromHostedPage
方法。
$user->subscription()->registerFromHostedPage($request->id);
现在订阅已经在 Chargebee 和您的应用程序中注册。再简单不过了!
示例
订阅控制器
<?php namespace App\Http\Controllers; use App\User; use App\Http\Requests; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class SubscriptionController extends Controller { public function create() { // Authenticate a user or create one. Note that this is a dummy login. Not to be used in production. $user = User::first(); Auth::login($user); // Create the embedded checkout form and return it to the view. $url = $user->subscription('cbdemo_hustle')->withAddon('cbdemo_conciergesupport')->getCheckoutUrl(true); return view('subscribe')->with(compact(['url', 'user'])); } public function handleCallback(Request $request) { // Get the authenticated user. Again, this is dummy code just for demonstration. $user = User::first(); // Attach the subscription to the user from the hosted page identifier. $user->subscription()->registerFromHostedPage($request->id); // Return the user to a success page. return view('subscribe')->with(compact(['user'])); } }
与 Stripe/Braintree 的订阅
为了使用 Stripe 和 Braintree 创建订阅,您需要使用它们的 JavaScript 库。有关使用 Stripe 和 Braintree 订阅的更多信息,请见下文。
要创建 Braintree 或 Stripe 的订阅,您必须添加信用卡令牌。
$user->subscription($plan)->create($creditcardToken);
您还可以向订阅中添加附加产品。
$user->subscription($plan) ->withAddon($addon) ->create($creditcardToken)
或者兑换优惠券。
$user->subscription($plan) ->coupon($coupon) ->create($creditcardToken)
更改计划
// Get the subscription you want to change plans from $subscription = $user->subscriptions->first(); // Change the current plan $subscription->swap($planId);
取消订阅
$subscription->cancel();
测试
如果您想为此包运行单元测试,您需要从 Stripe 获取测试令牌。为了能够获取测试令牌,请在基本目录中创建一个 .env
文件并添加您的 Stripe 秘密令牌。
STRIPE_SECRET=your-stripe-secret-key
CHARGEBEE_SITE=your-chargebee-site
CHARGEBEE_KEY=your-chargebee-token
CHARGEBEE_GATEWAY=stripe
要从基本目录运行 PHPUnit 测试,请运行以下 composer 命令:
$ composer run test
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送到 tijmen@floown.com 而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。