贝宝智能按钮–延迟触发“ onApproval”会导致问题

时间:2020-07-14 08:14:42

标签: javascript paypal

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

1 个答案:

答案 0 :(得分:1)

我自己并没有观察到这么长时间的延迟,也不会引起任何问题,因为无论如何买方都应等待他们的确认,但事实就是如此。

您可以使用onClick方法来触发“请稍候/微调”,或者在您认为有必要时触发它,然后在onApprove的抓取操作(以及onError和onCancel函数)中进行核对。但是,事情太复杂了。