Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – PayPal付款已创建,但从未执行过大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对Node.js使用paypal-rest-sdk@1.8.1.我创建了付款并保存了他们的payerId,token和paymentId,但我从未执行过这些付款.

var paypal = require('paypal-rest-sdk');
paypal.configure({
'mode': 'live','client_id': '_CLIENT_ID_','client_secret': '_CLIENT_SECRET_'
});
.
.
let payment = {
        "intent": "sale","transactions": [{
            "item_list": {
                "items": some_items_array,"shipping_address": {
                    "recipient_name": "some_recipient_name","line1": "Fake street","city": "Fake city","country_code": "Fake country","postal_code": "123456","state": "Fake state","phone": "0000000"

                }

            },"amount": {
                "currency": "AUD","total": "15","details": {
                    "subtotal":"15","tax": "0","shipping": "0","handling_fee": "0","shipping_discount": "0","insurance": "0"
                }

            }
        }],"redirect_urls": {
            "cancel_url": some_base_url + "/home/cart","return_url": some_base_url + "/home/thank-you?cartid=" + cartid
        },"payer": {
            "payment_method": "paypal","payer_info": {
                "email": "fake_email@gmail.com"
            }
        }
    };
   paypal.payment.create(payment,function (error,response) {
            if (error) {
                console.log(error);
                // HANDLE ERROR
            } else {
                console.log("Create Payment Response");
                console.log(response);
               //SEND SUCCESS RESPONSE
     }
  });

成功执行上述行后,用户将被重定向到PayPal网站进行付款.成功付款后,它会将其重定向到包含信息有效负载的“return_url”链接,即:

{
paymentId:'PAY-000000',PayerID:'SOME_PAYER_ID',token:'SOME_TOKEN'
}

很多天我一直只保存paymentId,PayerID,&数据库中的令牌而不是执行付款,认为当’意图’设置为’销售’时不需要.

现在我添加了以下代码来执行付款,这对于现在下的订单工作正常.

var execute_payment_json = {
            "payer_id": 'THE_PAYER_ID',"transactions": [{
                "amount": {
                    "currency": 'AUD',"total": '15'
                }
            }]
        };
paypal.payment.execute(paymentId,execute_payment_json,payment) {
            if (error) {
                console.log(JSON.stringify(error.response));
                //HANDLE ERROR
            } else {
                console.log("Get Payment Response");
                console.log(JSON.stringify(payment));
               //SEND SUCCESS
            }
        });

对于成功重定向后未执行payment.execute的旧订单,我尝试对它们执行’payment.execute’并收到以下错误.

{
"name":"INVALID_RESOURCE_ID","message":"The requested resource ID was not found","information_link":"https://developer.paypal.com/docs/api/payments/#errors","debug_id":"878378979aac7","httpStatusCode":404
}

如果我可以执行那些旧付款,请帮助我.我有他们的payerId,paymentId和令牌.

解决方法

看起来你正在做着曾经被称为Express Checkout的事情而忘记执行最终的回调.

可能发生的事情是您的令牌已过期.虽然this is from the docs for the legacy system,我没有理由相信这不适用于此.

即使对REST来说并不完全正确,同样的原则也是如此

>您设置了呼叫
>客户登录PayPal网站并对其进行授权
> PayPal发回给您的令牌
>您忘记“兑换”代币以进行付款,因此已过期

据我所知,整个交易现在已经死了.您必须立即开始新的付款才能获得付款.

大佬总结

以上是大佬教程为你收集整理的node.js – PayPal付款已创建,但从未执行过全部内容,希望文章能够帮你解决node.js – PayPal付款已创建,但从未执行过所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: