PHP Stripe:在“订阅”模式下无法传递“ payment_intent_data”

Adr*_*nis 9 php stripe-payments

我正在尝试为商家的用户创建订阅,但面临“您无法传入payment_intent_data模式subscription”错误。如果定期付款,效果很好,但订阅则不起作用。

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

  $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/',
  ]);
Run Code Online (Sandbox Code Playgroud)

谢谢!

Adr*_*nis 7

基本上,您不能payment_intent_data在订阅模式下的结帐会话中使用,因为订阅创建发票而不是 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"));
Run Code Online (Sandbox Code Playgroud)

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

干杯:)