首页 > 解决方案 > Paypal 智能按钮 – 延迟触发“onApproval”会导致问题

问题描述

使用智能支付按钮,支付弹出窗口关闭后会有 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 就会消失。但这很麻烦。在触发事件之前,弹出窗口确实不应该关闭。

标签: javascriptpaypal

解决方案


我自己没有观察到这么长时间的延迟,它不应该引起问题,因为无论如何买家都应该等待他们的确认,但它就是这样。

您可以使用该onClick方法触发请等待/微调器或任何您认为有必要的东西,然后在 onApprove 的 fetch 中对其进行核对(以及 onError 和 onCancel 函数)。但是你把事情复杂化了。


推荐阅读