使用“智能付款”按钮,在付款弹出窗口关闭后会有3-4秒的延迟。交易窗口关闭后,需要3-4秒触发onApproval事件,该事件获取处理订单所需的交易ID。
这会造成麻烦,因为买方可能同时关闭窗口(似乎什么也没发生),并且事件从未收到,因此订单没有得到处理(尽管已付款)。
>代码如下:
paypal.Buttons({
createOrder: function(data,actions) {
// do some stuff
return fetch('/createOrder', {
method: 'post',
headers: {
'content-type': 'application/json'
}
}).then(function(res) {
return res.json();
}).then(function(data) {
return data.orderID;
});
},
// onApprove will be fired 3-4 second AFTER the popup of transaction closes
onApprove: function(data, actions) {
return fetch('captureOrder', {
method: 'post',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
orderID:data.orderID
})
}).then(function(res) {
return res.json();
}).then(function(details) {
});
}
}).render(selector);
是否有办法在偶数被触发后关闭弹出窗口?否则,唯一的解决方法是用微调器(或类似的东西)覆盖,一旦收到onApproval。但这很麻烦。在事件触发之前,弹出窗口确实不应该关闭。
答案 0 :(得分:1)
我自己并没有观察到这么长时间的延迟,也不会引起任何问题,因为无论如何买方都应等待他们的确认,但事实就是如此。
您可以使用onClick
方法来触发“请稍候/微调”,或者在您认为有必要时触发它,然后在onApprove的抓取操作(以及onError和onCancel函数)中进行核对。但是,事情太复杂了。