php - 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/',
]);
谢谢!
解决方案
基本上,您不能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"));
另外,不要忘记在调用中传递所有其他必需的变量。
干杯:)
推荐阅读
- visual-studio - 添加 fontawesome svgs 后,Visual Studio 构建速度变慢
- python - 将具有任意行数的输入文件写入制表符分隔的输出
- javascript - 当我在 axios 的拦截器中时如何忽略回调?
- c++ - 如何将转换应用于条件运算符中的位域类型?
- azure-active-directory - OWIN 在 Azure 中停止运行
- linux - 将带有转义字符的文本从 Jenkins 传递到 Groovy 脚本
- c# - 错误 #CS0029“无法在 Visual Studio 中将类型 'void' 隐式转换为 'string'
- selenium - 使用 ChromeDriver 启动 Google Chrome 时,如何隐藏 URL 栏中显示的初步“数据:”?
- javascript - 如何在 javascript 数组中搜索关键字?
- javascript - 选择下拉菜单中的所有元素