stripe.confirmCardPayment 不是函数

Posted

技术标签:

【中文标题】stripe.confirmCardPayment 不是函数【英文标题】:stripe.confirmCardPayment is not a function 【发布时间】:2021-02-26 01:40:20 【问题描述】:

当我通过条带创建订阅时,它会给出错误消息 当我通过条纹进行订阅时 我还提供了一些关于仪表板中身份验证的信息,例如 3d 安全身份验证。 我的 cvc_check 在显示仪表板时不可用 1.第一个问题是3d安全认证。 2.cvc在印度检查unavailbel。 我的帐号也是印度

TypeError: stripe.confirmCardPayment is not a function

我的代码是我做错了什么

stripe.customers.create(
            
                name: name,
                email: email,
                phone: reqObj.phone,
                address:  "city": reqObj.address, "country": "IN",
     "line1": "", "line2": "", "state":"India" ,
            ,
            function (err, customer) 
                if (err) res.json( "status": false, "error": err )
                    console.log(err)
                else 
                customer_id=customer.id;
    stripe.tokens.create(
        
            card: 
                number: reqObj.card_no,
                exp_month: reqObj.exp_month,
                exp_year: reqObj.exp_year,
                cvc: reqObj.cvc
            ,
        ,
        function (err, token) 
            if (err) 
                res.json( "status": false, "errorT": err)
             else 
                // stripe.customers.createSource(
                //     customer_id,
                //      source: token.id ,
                    // function (err, card) 
                        // if (err) 
                            // res.json( status: "false", "error": err )
                        // else 
                            stripe.plans.list(
                                 product: "prod_IMGu6PI2mJbBCi", active: true ,
                                function (err, plans) 
                                    if (!err) 
                            for(i in plans.data)
                                if(plans.data[i].amount==reqObj.amount)
                                    var myId=plans.data[i].id
                   stripe.paymentMethods.create(
                        type: 'card',
                        card: 
                            number: reqObj.card_no,
                            exp_month: reqObj.exp_month,
                            exp_year: reqObj.exp_year,
                            cvc: reqObj.cvc
                        ,
                        ,function(err,result)
                        // console.log(err,result) 
                        stripe.paymentMethods.attach(result.id, 
                            customer: customer_id,
                          ,function(err,result1) 
                            //   console.log(err,"result1",result1)
                          stripe.customers.update(
                            customer_id,
                            
                              invoice_settings: 
                                default_payment_method: result.id,
                              ,
                            ,function(err,res2) 
                                // console.log(err,"res2")
                            stripe.subscriptions.create(
                                customer: customer_id,
                                items: [ price: myId],
                                expand: ['latest_invoice.payment_intent'],
                              ,function(err,res3) 
                                  console.log(err,"res3",
    res3.latest_invoice.payment_intent.client_secret)
                          a=res3.latest_invoice.payment_intent.client_secret
                      stripe.confirmCardPayment(
    res3.latest_invoice.payment_intent.client_secret,
    function(err,paymentIntent)
                        
                            console.log(err,"paymentIntent",paymentIntent)
                        
                            )
                              );
                             );
                        );
                    );

                    
            
        );
                
                // asynchronously called
            );

【问题讨论】:

我遇到了同样的问题。你找到解决办法了吗? 【参考方案1】:

您的代码将客户端代码和服务器端代码混合在一起,这是行不通的。 stripe.confirmCardPayment() 方法来自 Stripe.js,应该在浏览器内部的 javascript 中调用客户端,而不是使用 Node.js 调用服务器端。

代码的开头是使用正确的默认付款方式 ID 更新客户。然后它正在创建一个订阅。然后,如果创建时未能支付第一张发票,例如卡被拒绝或需要 3D Secure,您必须返回客户端,在浏览器中运行下一步,即确认与订阅发票关联的 PaymentIntent。

所以你需要回到客户端,你最初创建的 PaymentMethod id pm_123456 是你在result.id 中传递的,然后尝试确认 PaymentIntent。

【讨论】:

以上是关于stripe.confirmCardPayment 不是函数的主要内容,如果未能解决你的问题,请参考以下文章