首页 > 解决方案 > PHP Stripe:您不能在“订阅”模式下传递“payment_intent_data”

问题描述

我正在尝试为商家的用户创建订阅,但面临“您无法通过payment_intent_data模式subscription”错误。通过定期付款,它运作良好,但订阅不起作用。

这是我想要做的一个例子:约翰有一个基于定期计费的电子商务商店。Matthew 是 John 的客户,他想从 John 购买订阅。使用“Stripe Checkout”时,如何轻松收取费用并将资金转入 John 的连接帐户?

  $session = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'],
    'line_items' => [[
      'price' => $priceIntent->id,
      'quantity' => 1,
      ]],
    'customer' => Auth::User() -> stripe_code,
    'mode' => 'subscription',
    'payment_intent_data' => [
      'application_fee_amount' => $total_fees,
      'transfer_data' => [
        'destination' => $merchantId,
      ],
    ],
    'success_url' => env('APP_URL') . '/order/success/{CHECKOUT_SESSION_ID}',
    'cancel_url' => env('APP_URL') . '/order/cancel/',
  ]);

谢谢!

标签: phpstripe-payments

解决方案


基本上,您不能payment_intent_data在订阅模式下的 Checkout Session 上使用,因为订阅会创建发票而不是 PaymentIntents。

为此,您需要使用subscription_data哈希:https ://stripe.com/docs/api/checkout/sessions/create?lang=php#create_checkout_session-subscription_data-application_fee_percent并指定商家帐户。

带有商家详细信息的 API 调用示例:

  $session = \Stripe\Checkout\Session::create([

    'subscription_data' => [
      'application_fee_percent' => $fees_percent,
    ],

  ],array("stripe_account" => "acct_xxxxxxxxx"));

另外,不要忘记在调用中传递所有其他必需的变量。

干杯:)


推荐阅读