【发布时间】:2019-01-12 12:03:58
【问题描述】:
我正在为 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 和 token 而没有执行付款,认为当“intent”设置为“sale”时不需要这样做。
现在我添加了以下代码来执行付款,这对于现在正在下的订单很好。
var execute_payment_json = {
"payer_id": 'THE_PAYER_ID',
"transactions": [{
"amount": {
"currency": 'AUD',
"total": '15'
}
}]
};
paypal.payment.execute(paymentId, execute_payment_json, function (error, 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 和令牌。
【问题讨论】:
-
很遗憾,我们无法检查 paymentId、payerId 和 token 是否有效。尝试询问 Paypal 支持团队。这是一个类似的问题:github.com/paypal/PayPal-PHP-SDK/issues/980,如果您提供
debug_id,他们似乎可以解释为什么会出现错误。
标签: node.js paypal paypal-rest-sdk