当前位置:  开发笔记 > 编程语言 > 正文

适用于3D Secure / SCA的Laravel Cashier不完整异常处理

如何解决《适用于3DSecure/SCA的LaravelCashier不完整异常处理》经验,为你挑选了0个好方法。

我目前正在尝试使用Laravel Cashier在React应用程序中处理Billing。使用要求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 Application中优雅地处理所有这些。

在将任何内容发送到服务器之前(通过Stripe Elements javascript已经为我处理过),我还已经通过上述弹出窗口确认了该卡对3D安全有效。因此文档说明:

在付款确认页上,将提示客户再次输入其信用卡信息,并执行Stripe要求的任何其他操作,例如“ 3D Secure”确认。

似乎无论如何这都是重复。有人可以指导我在这种情况下需要做什么吗?松散地在我的React App中,我做了以下工作:

生成服务器端的意图,然后将其触发以做出反应:在计费过程中:

stripe.confirmCardSetup(
            billingStatus.paymentIntent.client_secret,
            { 
              payment_method: {
                card: card,
                billing_details: {
                  name: 'Jenny Rosen'
                }
              }
            }
          )
            .then((res)=>{
              console.log(res);
              processPayment(  res );
            });

流程Payment方法命中服务器:

 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中捕获异常并以不同的方式处理事情吗?例如,要求用户两次确认他们的卡详细信息?

我还应该提到我启用了webhooks,并且这些都在本地成功解决-我在信息中心中进行了检查。

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有