Почтовый запрос AJAX возвращает один и тот же ответ для разных запросов - PullRequest
0 голосов
/ 05 декабря 2018

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

Это происходит во время потока создания платежа.

Моя настройка оформления PayPal:

 $.ajaxSetup({ cache: false });


 paypal.Button.render({
     env: 'production',
     locale: 'en_US',
     style: {
         color: 'silver',
         size: 'medium',
         label: 'checkout',
         shape: 'rect',
         layout: 'vertical',
     },

     payment: (data, actions) => {
         return new Promise((resolve, reject) => {
             $.ajax({
                 url: '/p/create-payment/',
                 dataType: 'json',
                 data: {
                     body: body
                 },
                 method: 'POST',
                 headers: { 'X-CSRF-Token': '{{csrfToken}}' }
            })
           .done(( data ) => {
               resolve(data.id)
               reject("")
            })
        })
    },

    onAuthorize: (data, actions) => {
        return new Promise((resolve, reject) => {
            $.ajax({
                url: '/p/execute-payment/',
                dataType: 'json',
                data: {
                    paymentID: data.paymentID,
                    payerID:   data.payerID,
                    body: body,
                },
                method: 'POST',
                headers: { 'X-CSRF-Token': '{{csrfToken}}' }
            })
            .done(( data ) => {
                if(data.status === 'success') {
                    resolve(window.open('success',"_self"))
                }else if(data.status === 'pending'){
                    resolve(window.open('pending, "_self"))
                } else reject(window.open('failure', "_self"))
            })
        })
    },

    onError:  (err) => {
        window.open('paymentFailure', "_self");
        console.error(err)
    }

}, '#paypal-button');

Первая попытка: я захожу на мою страницу и открываю проверку PayPal, лицо, которое должно получить платеж, является corrent, суммой и всем остальным, сам запрос занимает около 3-4 секунд

Вторая попытка: при повторном открытии страницы я нажимаю кнопку «Оформить заказ», и на этот раз запрос занимает 0,2–0,4 секунды, и данные точно такие же, как и в первом созданном платеже, даже идентификатор PAY из PayPalтот же

Я могу регистрировать данные, возвращенные из запроса ajax, в / p / create-payment, создавая платеж в первый раз, работает нормально, как сказано выше, но во втором я вижу точно такие же данные, как в первый раз.

Я хотел бы отметить, что у меня есть журналы на моем сервере, и они не отображаются во время второго платежа

Вот скриншоты запроса: The first correct payment created

Possibly cached request of the second payment being created

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

1 Ответ

0 голосов
/ 06 декабря 2018
res.header("Cache-Control", "no-cache, no-store, must-revalidate")
res.header("Pragma", "no-cache")
res.header("Expires", "0")

Поскольку данные кэшируются, поэтому их кэширование является решением.

...