rea*_*ebo 5 php stripe-payments
我们的用户可以输入一张卡来支付我们的服务。他/她可以选择保存或不保存卡以供重复使用。
当用户不保存卡时,我们正在创建一个 PaymentIntent 传递
[
'amount' => floatval($this->cart->total_gross) * 100,
'currency' => 'EUR',
'payment_method' => $this->pm,
'off_session' => true,
'capture_method' => 'manual',
'confirm' => true,
];
Run Code Online (Sandbox Code Playgroud)
这是因为这是对将在 2-3 天内捕获的付款的预授权。
使用这个配置我们得到以下错误
Stripe\Exception\MissingParameterException - 400 - 提供的 PaymentMethod 已附加到另一个对象。如果不先将 PaymentMethods 附加到 Customer 对象,就不能重用它们。
要清楚:
pm_...的金额和不保存卡的指令发送到服务器(因此我们不会创建条纹客户)\Stripe\PaymentIntent::create方法这个错误是什么意思?为什么它说 PM 已经附加到另一个对象?哪一个?哪一种?
我对我的代码进行了三次检查,这是我们在从前端收到 pm 后所做的唯一 api 调用。
之前,前端只需使用 setupIntent 使用官方 stripe.js 调用来授权卡。因此,从 stripe.js 返回的 pm 被发送到我们的服务器,而没有对其进行任何操作。而我们的服务器只是调用了 create 方法,每次都会出现这个错误。
寻求您的帮助以诊断和理解。
我们使用的是最新的官方 stripe-php 版本
提前致谢
我终于收到了关于这个问题的官方回复。
简单地说:我们不能保存一张用于off_session付款的卡,然后在稍后使用该付款方式来获取预授权金额
所以,我们修改了我们的流程
用户选择或保存卡,我们通知用户必须保存该卡才能重复使用以完成支付流程。