gpt4 book ai didi

php - 更改 Stripe 中具有多个订阅项的订阅的订阅间隔

转载 作者:行者123 更新时间:2023-12-04 16:06:30 25 4
gpt4 key购买 nike

我正在使用 Stripe(PHP 客户端,Laravel)来处理我们的订阅。我们都有 Stripe 似乎不原生支持的订阅和插件 - 但是我找到了解决方法,但我遇到了问题。

设置
我们为用户提供了一些不同的订阅。

每月:

  • 1 个实体($10/月)
  • 5 个实体($40/月)
  • 10 个实体($80/月)

每年:

  • 1 个实体($100/年)
  • 5 个实体($400/年)
  • 10 个实体($800/年)

插件:

  • 1 个实体($10/月)
  • 1 个实体($100/年)

假设用户订阅了每月 5 个实体的计划($40/月)和每月 2 个额外的附加组件($20/月)。总计 60 美元/月。

使用 Stripe 的 PHP 客户端库将插件添加为 SubscriptionItem。

我如何将用户升级到这样的年度订阅:

  • 1x 5 个实体(400 美元/年)订阅
  • 2x 1 个实体($200/年)插件

如您所见,唯一的区别是计费间隔和价格,但对我们系统的访问相同。

我尝试只升级订阅计划(而不是插件),但由于不同的计费间隔,我收到了一个看起来合乎逻辑的错误。

我是否必须删除所有订阅插件 (SubscriptionItems),然后进行升级,以及何时使用新的计费间隔再次添加订阅插件?我不喜欢这种方法,因为我将不得不删除初始订阅,然后在收费失败的情况下无法返回用户...

另一种方法是创建一个全新的订阅,其中的插件与初始订阅分开。然后我可以将新订阅分配给客户并删除旧订阅。

所有这些看起来都有些奇怪,因为 Stripe 是如此简单和灵活。我可能会遗漏什么?我是吗?

当我在订阅中有其他订阅项目时,在月度和年度计划之间切换的最佳方式是什么?

希望您理解我的问题。谢谢!

最佳答案

Subscription 对象下的所有Subscription Items 必须使用相同的计费间隔。

如果您想将用户从按月订阅改为按年订阅,您需要同时将所有 项目更新为按年订阅。从 Stripe 的角度来看,你会做类似的事情:

// create a customer
$customer = \Stripe\Customer::create([
"source" => "tok_visa",
"description" => "change my subscription customer"
]);

// create a sub with two monthly items
$sub = \Stripe\Subscription::create([
"customer" => $customer->id,
"items" => [
[
"plan" => "gold-monthly"
],
[
"plan" => "silver-monthly"
],
]
]);

// let's pretend we later retrieved that subscription
$subscription = \Stripe\Subscription::retrieve($sub->id);

// grab the items attached, change both to annual
echo \Stripe\Subscription::update($subscription->id, [
'items' => [
[
'id' => $subscription->items->data[0]->id,
'plan' => 'gold-annual',
],
[
'id' => $subscription->items->data[1]->id,
'plan' => 'silver-annual',
],
],
]);

关于php - 更改 Stripe 中具有多个订阅项的订阅的订阅间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48529773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com