mailforge/laravel-chargebee-v2

一个Laravel包,提供了一种简单的方式来处理账单和订阅。感谢TijmenWierenga的贡献

v0.3.1 2017-08-17 11:37 UTC

This package is not auto-updated.

Last update: 2024-09-18 20:19:48 UTC


README

Latest Version on Packagist Software License Build Status Total Downloads

一个利用 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的托管页面创建订阅

检索托管页面URL

$url = $user->subscription($planId)->withAddon($addonId)->getCheckoutUrl($embed);

$embed 变量是一个布尔值,表示您是否想将托管页面嵌入为iframe。

现在,您可以选择将用户重定向到托管页面,或者将其发送到您可以在其中渲染它的视图。

重定向

return redirect($url);

将其作为变量返回到您的视图中

return view('subscribe')->with(compact($url));

然后,在视图中渲染它

<iframe src="{{ $url }}"></iframe>

您可以在Chargebee上完全自定义您的托管页面,以下是一个示例

Chargebee's Hosted Page example

默认情况下,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)。有关更多信息,请参阅许可证文件