Laravel Cashier 3D Secure/SCA问题 Stripe

4
在使用 Laravel Cashier 集成 Stripe 系统后,我们在网站上进行了测试,使用了几张测试卡片,有些成功了,有些失败了。我尝试适应 3D 安全/SCA。问题是,4000003800000446、4000002500003155 和 4000000000003055 成功了,而 4000000000003220 和 4000002760003184 失败了,返回未完成的状态。我的系统用于杂志的年度订阅。当我确认身份验证时,会出现弹出窗口,如图所示:确认弹出窗口截图,然后重定向到我的代码以创建订阅。


    $payement_intent = $request->get('intent');
                $plan_key = 'plan_*******';
                try{
                    $payement_info = $subscriber->newSubscription('yearly', $plan_key)->create($payement_intent, [
                        'email'=>$subscriber->email
                    ]);                
                }catch(IncompletePayment $e){
                    dd($e);
                    Session::flash('message', 'Payment is incomplete. Extra verification is needed. You will receive an email with further payment confirmation instructions.');
                    return redirect()->to(route('acc_success')); 
                }

自从我放弃了未完成的付款后,异常截图在这里输入图片描述。 我很困惑,因为我已经在弹出窗口上点击了完成身份验证,难道它不应该验证3D身份验证并使支付成功吗?还是我在收银台方面漏掉了什么,因为Stripe文档中说:“只有当尝试第一次扣款失败或需要SCA时,订阅才会进入未完成状态。”

1个回答

3
你使用的是需要进行认证的3DS2卡,用于交易。如果状态为incomplete,则需要要求客户完成3DS流程以授权该交易。您可以按照此处的步骤操作。
基本上,如果订阅状态为incomplete,则需要检查subscription.latest_invoice.payment_intent状态。对于这些卡,特别是为测试这些情况而设计的这两张测试卡,它将处于require_action状态,需要进行身份验证。在这种情况下,您只需将subscription.latest_invoice.payment_intent.client_secret传递给前端,并调用handleCardPayment来显示一个3DS模态框,让您的客户完成授权即可。

在服务器端进行充值支付且不将其发送到前端是否可行?大多数客户都会处于非活动状态。我在考虑商户发起的交易。 - hemant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接