bailfacile / laravelchargebee
一个提供简单处理账单和订阅方式的 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: 2020-06-25 20:52:45 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 特性添加到您的 模型
use TijmenWierenga\LaravelChargebee\Billable;
use TijmenWierenga\LaravelChargebee\HandlesWebhooks;
class User extends Eloquent {
use Billable, HandlesWebhooks;
}
如果您想使用包的路由来处理 webhook,请确保将服务提供者放在 Route Service Prodiver (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)。请参阅许可证文件以获取更多信息。