oixan / cashier-connect

Laravel Cashier Connect 为 Laravel Cashier 增加了对 Stripe Connect 的支持。

0.3.11 2020-04-10 18:49 UTC

This package is auto-updated.

Last update: 2024-09-29 05:28:17 UTC


README

Laravel Cashier Connect 为 Laravel Cashier 增加对 Stripe Connect 订阅的支持(基于 v10.7.1)。

文档

  1. 安装包
composer require "oixan/cashier-connect"
  1. 请遵循官方指南中 cashier 的说明。安装过程相同。

  2. 将 Trait 添加到 User 模型中 use Billable,来自 use Laravel\CashierConnect\Billable

创建您的 .env 文件

在运行 Cashier Connect 测试之前,您需要设置 Stripe 测试 密钥环境变量,以便使用 vendor/bin/phpunit 调用

STRIPE_SECRET=<your Stripe secret>

请注意,由于实际 API 请求针对 Stripe 进行,这些测试可能需要几分钟才能运行。

该包是如何工作的。

如果 CashierConnect 不直接支持,所有默认 cashier 方法保持不变。

此包假设您直接或通过 API 创建了您的 Stripe 账户,然后分配 Account id 到 user->stripe_account_id

每个用户都可以成为客户或 Stripe 账户。

添加到 User 模型的基本方法

$user = user from db or wathever;
$user->getStripeAccount(); // Check if every cashier call will go to Stripe Account
$user->setStripeAccount($userAccount); // Pass a User instance then every cashier call will go to Stripe Account
$user->unsetStripeAccount; // Remove the userAccount, cashier will work with default setting.
$user->pauseStripeAccount // Pause the userAccount, cashier will work with default setting.
$user->resumeStripeAccount  // Resume the previous userAccount, cashier call will go to Stripe Account

*** 重要 *** 在设置 Stripe 账户后,任何进一步的调用都将直接到 Stripe 账户。所以如果需要,请记得调用 unsetStripeAccount()。

支持的方法(版本 0.3.0)。

setStripeAccount($userAccount) 方法使后续的所有调用都从您的平台到传递参数的 Stripe 账户。如果您需要更改 userAccount 或暂停 StripeAccount 调用,请参阅上一节。

创建订阅

   $user->setStripeAccount($userAccount)->newSubscription('main', 'plan_id')->create("pm_card_visa");

添加用户详情

$user->newSubscription('main', 'monthly')->create($token, [
  'email' => $email,
]);

检查订阅状态

if ($user->subscribed('main')) {
   //
}

订阅计划

if ($user->subscribedToPlan('monthly', 'main')) {
  //
}

重复检查

if ($user->subscription('main')->recurring()) {
  //
}

已取消订阅状态

if ($user->subscription('main')->cancelled()) {
  //
}

if ($user->subscription('main')->onGracePeriod()) {
  //
}

if ($user->subscription('main')->ended()) {
  //
}

更改计划

$user->subscription('main')->swap('provider-plan-id');

订阅数量

$user->subscription('main')->incrementQuantity();

// Add five to the subscription's current quantity...
$user->subscription('main')->incrementQuantity(5);

$user->subscription('main')->decrementQuantity();

// Subtract five to the subscription's current quantity...
$user->subscription('main')->decrementQuantity(5);

订阅锚定日期

$user->newSubscription('main', 'premium')
     ->anchorBillingCycleOn( Carbon::parse('first day of next month'))
     ->create($token);

订阅试用

$user->newSubscription('main', 'monthly')
            ->trialDays(10)
            ->create($token);

$user->newSubscription('main', 'monthly')
        ->trialUntil(Carbon::now()->addDays(10))
        ->create($token);

$user->onTrial('main')

$user->subscription('main')->onTrial()

取消订阅

$user->subscription('main')->cancel();

if ($user->subscription('main')->onGracePeriod()) {
    //
}

$user->subscription('main')->cancelNow();

恢复订阅

$user->subscription('main')->resume();

未列入列表的所有 cashier 方法都未测试过是否与 Stripe 账户兼容

更多。

如果您想在用户模型中设置应用费,请设置

public function applicationFeePercent()
{
    return 40;
}

由于 Stripe Connect 的 Web hook 有不同的密钥,请设置

services.stripe.webhook.connect_secret

以允许 cashier connect 接受来自 Stripe Connect 的 webhook。

许可证

Laravel Cashier Connect 是开源软件,许可协议为 MIT 许可