oixan / cashier-connect
Laravel Cashier Connect 为 Laravel Cashier 增加了对 Stripe Connect 的支持。
Requires
- php: ^7.1.3
- ext-json: *
- dompdf/dompdf: ^0.8.0
- illuminate/contracts: ~5.8.0|^6.0|^7.0
- illuminate/database: ~5.8.0|^6.0|^7.0
- illuminate/http: ~5.8.0|^6.0|^7.0
- illuminate/log: ~5.8.0|^6.0|^7.0
- illuminate/notifications: ~5.8.0|^6.0|^7.0
- illuminate/routing: ~5.8.0|^6.0|^7.0
- illuminate/support: ~5.8.0|^6.0|^7.0
- illuminate/view: ~5.8.0|^6.0|^7.0
- moneyphp/money: ^3.2
- nesbot/carbon: ^2.0
- stripe/stripe-php: ^7.0
- symfony/http-kernel: ^4.3|^5.0
- symfony/intl: ^4.3|^5.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^3.8|^4.0|^5.0
- phpunit/phpunit: ^7.5|^8.0
README
Laravel Cashier Connect 为 Laravel Cashier 增加对 Stripe Connect 订阅的支持(基于 v10.7.1)。
文档
- 安装包
composer require "oixan/cashier-connect"
-
请遵循官方指南中 cashier 的说明。安装过程相同。
-
将 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 许可。