celtyvsk/cashier-connect

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

0.3.12 2021-04-03 02:49 UTC

This package is not auto-updated.

Last update: 2024-09-29 17:08:19 UTC


README

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

文档

  1. 安装包
composer require "oixan/cashier-connect"
  1. 按照官方指南中 cashier 的说明进行操作,安装过程相同。

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

创建您的 .env 文件

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

STRIPE_SECRET=<your Stripe secret>

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

这个包是如何工作的。

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

此包假设您直接或通过 API 创建了自己的 Stripe 账户,然后将账户 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 的 Webhook 有不同的密钥。设置

services.stripe.webhook.connect_secret

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

许可证

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