提问人:Squiggs. 提问时间:11/20/2019 最后编辑:gguneySquiggs. 更新时间:2/18/2023 访问量:3305
Laravel 收银员 3DS 验证/SCA 的不完整异常处理
Laravel Cashier Incomplete Exception Handling for 3D Secure / SCA
问:
我目前正在尝试使用 Laravel Cashier 在 React 应用程序中处理计费。当使用需要 3D 防抖(直接从 Stripes 文档中提取)(4000000000003220)的测试卡时,我被扔了。IncompletePayment exception
这显然是正常的,如文档中所述:https://laravel.com/docs/6.x/billing#payments-requiring-additional-confirmation
try {
$subscription = $user->newSubscription('default', $planId)
->create($paymentMethod);
} catch (IncompletePayment $exception) {
return redirect()->route(
'cashier.payment',
[$exception->payment->id, 'redirect' => route('home')]
);
}
现在,Laravel建议我在这种情况下转发到他们的“确认”页面。然而,这就是我的困惑所在。首先,我已经在我的 React 应用程序中通过 Stripe Elements 向客户索要了他们的信用卡,因此转发到从 Laravel 生成的服务器端页面可能很难。我想在我的 React 应用程序中优雅地处理这一切。
在向服务器发送任何内容之前,我也已经通过上述弹出窗口确认该卡对 3D 安全有效(Stripe Elements javascript 已经为我处理过),因此文档指出:
在付款确认页面上,系统将提示客户再次输入其信用卡信息,并执行 Stripe 要求的任何其他操作,例如“3DS 验证”。
似乎无论如何,这都是重复的。谁能指导我在这种情况下需要做什么?在我的 React 应用程序中,我大致完成了以下操作:
生成了服务器端意图,并将其触发以做出反应: 在计费过程中:
stripe.confirmCardSetup(
billingStatus.paymentIntent.client_secret,
{
payment_method: {
card: card,
billing_details: {
name: 'Jenny Rosen'
}
}
}
)
.then((res)=>{
console.log(res);
processPayment( res );
});
进程 Payment method 命中服务器:
var data = new FormData();
data.append( "coreId", plan.id );
data.append( "productId", plan.product_id );
data.append( "planId", plan.stripe_plan_id );
data.append( "paymentMethod", res.setupIntent.payment_method );
billingApi.pay( data, function(res){
BIG FAT 500 SERVER ERROR HERE. (IncompletePayment Exception)
});
我在 Github 上遇到了一个示例问题:https://github.com/laravel/cashier/issues/743 这非常接近我的问题。
但是,我正在运行最新版本的 Laravel 和 Cashier,并检查了封闭解决方案中引用的代码行是否存在(确实存在),因此可能还有其他事情发生。
我有点迷茫,不知道控制流应该是什么样子才能让它适用于这些类型的卡。对于不需要 3DS 的标准卡,一切正常。我应该在 React 中捕获异常并以不同的方式处理事情吗?例如,要求用户两次确认他们的银行卡详细信息?
我还应该提到我启用了 webhook,并且这些在本地成功解析 - 我检查了仪表板。
答: 暂无答案
评论
off_session => true