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