PHP Stripe: вы не можете передать `payment_intent_data` в режиме` подписки`

Я пытаюсь создать подписку для пользователей продавца, но сталкиваюсь с сообщением "Вы не можете пройти payment_intent_data в subscription mode "ошибка. С обычными платежами работает нормально, но подписки не работают.

Вот пример того, что я хочу сделать: у Джона есть магазин электронной коммерции, основанный на регулярном выставлении счетов. Мэтью является клиентом Джона и хочет приобрести у Джона подписку. Как я могу легко снимать комиссию и переводить деньги на счет подключения Джона при использовании "Stripe Checkout"?

  $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/',
  ]);

Спасибо!

1 ответ

Решение

В принципе, вы не можете использовать payment_intent_data на сеансе оформления заказа в режиме подписки, поскольку подписка создает счета вместо PaymentIntents.

Для этого вам нужно использовать subscription_dataхеш: https://stripe.com/docs/api/checkout/sessions/create?lang=php и укажите учетную запись продавца.

Пример вызова API с реквизитами продавца:

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

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

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

Также не забудьте передать в вызов все остальные необходимые переменные.

Ура:)

Другие вопросы по тегам