Paypal 按钮返回“无法捕获订单”
Posted
技术标签:
【中文标题】Paypal 按钮返回“无法捕获订单”【英文标题】:Paypal Button returns 'Order could not be captured' 【发布时间】:2019-08-03 12:09:25 【问题描述】:我正在使用贝宝按钮 SDK。激活按钮的代码是:-
paypal.Buttons(
createOrder: ( data, actions ) =>
return actions.order.create(
purchase_units: [
amount:
value: this.amount.toFixed(2),
currency_code: "GBP",
]
)
,
onApprove: ( data, actions ) =>
return actions.order.capture().then(details =>
console.log('details',details);
)
,
onError: ( error ) =>
console.log('error',error);
).render('#paypal-button-container')
用户界面按预期运行,然后在返回错误之前有很长的暂停。脚本标签中使用的 client_id 用于沙盒帐户。我找不到描述错误可能原因的文档...
error Error: Order could not be captured
非常感谢任何建议。
贝宝..https://developer.paypal.com/docs/checkout/integrate/#1-get-paypal-rest-api-credentials
【问题讨论】:
【参考方案1】:我在 onApprove 回调中的“actions.order.capture()”中遇到了同样的“无法捕获订单”错误。
就我而言,它在第一次运行时有效,但在随后的调用中无效。我发现我的订单总是有相同的 invoice_id。我删除了 invoice_id,Paypal 停止了投诉。
如果 invoice_id 总是唯一的就好了。
【讨论】:
【参考方案2】:如果您在控制台中收到 Xss 消息,请尝试在私人导航中,断开与您的 paypal 买家帐户的连接。
【讨论】:
【参考方案3】:按照评论中的建议,尝试使用此 URL 进行卷曲:
https://www.sandbox.paypal.com/smart/api/order/ODER_ID/capture
它回复了代码 401,并进行了一些研究,最终发现我使用了错误的帐户进行付款。
我刷新 PayPal 登录并使用正确的沙盒买家帐户登录并付款,它可以正常工作。
也许贝宝应该给出正确的错误信息。
【讨论】:
【参考方案4】:与 Nuxt 相同的问题,结帐工作但捕获错误响应:错误 500 order-could-not-be-captured
<template>
<no-s-s-r>
<v-layout row wrap>
<div ref="paypal"></div>
</v-layout>
</no-s-s-r>
</template>
脚本
mounted()
const script = document.createElement("script");
script.src =
"https://www.paypal.com/sdk/js?client-id=MyKeyID";
script.addEventListener("load", this.setLoaded);
document.body.appendChild(script);
,
methods:
setLoaded: function()
this.loaded = true;
window.paypal
.Buttons(
createOrder: (data, actions) =>
return actions.order.create(
purchase_units: [
description: "Test description",
amount:
currency_code: "USD",
value: 1
]
);
,
onApprove: async (data, actions) =>
const order = await actions.order.capture();
this.paidFor = true;
console.log(order);
,
onError: err =>
console.log(err);
)
.render(this.$refs.paypal);
【讨论】:
您能否在答案中添加更多描述?或者这是另一个问题? 这是另一个问题吗?【参考方案5】:您可以使用返回 Paypal 服务器的 CURL 检查吗? 这是一条评论,但我没有 50pkt S/O。抱歉。
【讨论】:
这是失败的贝宝服务器 POST... [链接] www.sandbox.paypal.com/smart/api/order/3J674917081315435/capture (网址有www。在前面,但由于某种原因,这没有出现在评论中) curl -v -X POST sandbox.paypal.com/smart/api/order/3J674917081315435/capture 也许 401 未经授权? 我很确定连接已获得授权,如果我将脚本标签中的 client_id 更改为废话,会话将无法启动( window.paypal 未定义)。在最后阶段(处理订单)之前还会发生一些互动。 > POST /smart/api/order/3J674917081315435/capture HTTP/1.1 > 主机:www.sandbox.paypal.com > 用户代理:curl/7.52.1 > 接受:/ > 如果我 curl -v -X POST www.sandbox.paypal.com/smart/api/order/3J674917081315435/capture 我得到的响应是 HTTP/1.0 302 Found ?以上是关于Paypal 按钮返回“无法捕获订单”的主要内容,如果未能解决你的问题,请参考以下文章