Умная кнопка Paypal - задержка срабатывания "onApproval" вызывает проблемы - PullRequest
0 голосов
/ 14 июля 2020

При использовании кнопок Smart Payment после закрытия всплывающего окна платежа происходит задержка 3-4 секунды. После закрытия окна транзакции требуется 3-4 секунды для запуска события onApproval, которое получает идентификатор транзакции, необходимый для обработки заказа.

Это вызывает проблемы , так как покупатель может закрыть окно тем временем (поскольку кажется, что ничего не происходит), и событие никогда не получено, поэтому заказ не обработан (хотя и оплачен).

Вот код:

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 Ответ

1 голос
/ 14 июля 2020

Я сам не наблюдал такой длительной задержки, и это не должно вызывать проблем, поскольку покупатель в любом случае должен ждать их подтверждения, но что ж, это как есть.

Вы можете используйте метод onClick, чтобы вызвать please wait / spinner или что-то еще, если вы считаете это необходимым, и уничтожьте его в своей выборке onApprove (а также функции onError и onCancel). Но вы слишком усложняете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...