【发布时间】:2020-06-25 15:16:20
【问题描述】:
我的天啊,这个 PayPal 系统让我大吃一惊!我有以下代码:
<script src="https://www.paypal.com/sdk/js?client-id=MY_CODE_HERE&vault=true"></script>
然后这个脚本:
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: parseFloat( window.my_config.amount ),
currency: 'USD',
},
description: window.my_config.description,
invoice_id: invoice_id
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
console.log({ details: details });
// do something here
});
$('#AJAXloadingWrapper').show();
},
onError: function (err) {
// Show an error page here, when an error occurs
console.log("ERROR")
console.dir(err);
}
}).render('#paypalWrapper');
它进入这个位很好:
onApprove: function(data, actions) {
但是当它运行时:
return actions.order.capture().then(function(details) {
我收到一个错误,但它失败了:(不收钱)
Error
code: undefined
columnNumber: 55441
fileName: "https://www.paypal.com/sdk/js?client-id=xxxx&vault=true"
lineNumber: 2
message: "Order could not be captured"
这到底是什么意思?这是我传递给purchase_units 的示例:
我差一点就叫它退出并说“我们正在删除贝宝”。
更新:在我的搜索中,我不断有人告诉我,问题可能来自 PayPal,我使用了重复的 invoice_id。我知道不是这样,但也许我传错了?
return actions.order.create({
purchase_units: [{
amount: {
value: parseFloat( window.my_config.amount ),
currency: 'USD',
},
description: window.my_config.description,
invoice_id: invoice_id
}]
});
},
【问题讨论】:
-
如果您删除 invoice_id 变量,您是否会收到相同的错误?你有传递 Vault=true 的理由吗?您是否有任何错误记录来自 PayPal 的实际错误,带有更具描述性的错误或 PayPal-Debug-Id?检查网络选项卡或其他放置在开发工具控制台中
-
@PrestonPHX 感谢您的回复。如果我删除 invoice_id 我会遇到同样的问题(这就是我首先添加它的原因)。 vault=true 刚刚添加,因为它在示例代码中给出。不需要吗?在失败之前我看到的最后一个 XHR 请求是 9e473911c35c9。我不确定你在哪里看的?今天早上我确实想到这可能是由于开发站点位于 IP 块后面 - 但鉴于该请求甚至不需要进行服务器调用,这似乎并不合理。作为测试,我已经删除了 IP 块,但问题仍然存在
-
@PrestonPHX FWIW 我也删除了
vault=true,但也没有任何区别(我只是查看了它启用的功能,我认为我们不需要它) -
@PrestonPHX 顺便说一句,我还测试了用另一个帐户付款。两者都是有效的工作帐户,我一直使用它们来购买。
-
是的,但专门创建一个新应用并使用该新应用