You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP集成Stripe创建多订阅遇支付未完成问题求助

Stripe订阅集成问题排查

我用PHP给网站集成Stripe,设置了两个订阅方案:

  • 方案1:75美元/年
  • 方案2:6美元/月(附加方案,含更多功能)

逻辑规则:

  • 用户选方案1时,仅创建对应年付订阅(已启用3DS/SCA,运行正常)
  • 用户选方案2时,需一次性支付75美元+6美元,同时订阅两个方案

现在遇到的问题:选方案2时,用户成功订阅第二个方案,但第一个订阅的支付状态始终未完成。

我的代码如下:

$subscription_data = \Stripe\Subscription::create([
    'customer' => $customer->id,
    "items" => [
        [
            "plan" => $plan->id,
        ]
    ],
    'payment_behavior' => 'default_incomplete', 
    'payment_settings' => ['save_default_payment_method' => 'on_subscription'],
    'expand' => ['latest_invoice.payment_intent', 'pending_setup_intent'],
]);

问题根源与修正方法

你遗漏了将两个计划合并到同一个订阅中的关键步骤,当前代码仅创建了单个计划的订阅,而不是包含两个计划的订阅。

核心问题

如果用户选方案2时,你是创建了两个独立的订阅(一个年付、一个月付),那么每个订阅都会生成独立的发票和Payment Intent。若只处理了其中一个的支付流程,另一个订阅就会停留在未完成状态。正确的做法是创建一个订阅,同时包含两个计划条目,这样Stripe会自动生成合计81美元的发票,一次支付完成后两个计划都会生效。

修正后的代码

假设年付计划ID为plan_yearly_75,月付附加计划ID为plan_monthly_6,修改items数组同时包含两个计划:

$subscription_data = \Stripe\Subscription::create([
    'customer' => $customer->id,
    "items" => [
        ["plan" => "plan_yearly_75"], // 年付方案
        ["plan" => "plan_monthly_6"]  // 月付附加方案
    ],
    'payment_behavior' => 'default_incomplete', 
    'payment_settings' => ['save_default_payment_method' => 'on_subscription'],
    'expand' => ['latest_invoice.payment_intent', 'pending_setup_intent'],
]);

额外注意事项

  • 确保前端正确处理这个订阅对应的latest_invoice.payment_intent,完成3DS/SCA验证流程,支付完成后订阅会自动变为活跃状态,两个计划都会生效。
  • 若你之前是创建两个独立订阅,需调整逻辑为单订阅多计划模式,避免拆分支付导致的状态不一致问题。

内容的提问来源于stack exchange,提问作者Pratik Ranpara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:33:25