在使用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秒,并且数据与第一次创建的付款完全相同,即使来自paypal的PAY-ID都是相同的
我可以将ajax请求返回的数据记录到/ p / create-payment中,以创建上面第一次所说的付款可以正常工作,但是第二个我看到的数据与第一次完全相同。
我想指出的是,我已经在服务器上登录了,并且它们在第二次付款创建过程中没有显示,就好像它没有请求并立即完成一样。
我也一直试图清除浏览器的缓存/ Cookie,但这不能解决问题。用户可以在两个不同的设备上,但此问题仍然发生
答案 0 :(得分:1)
res.header("Cache-Control", "no-cache, no-store, must-revalidate")
res.header("Pragma", "no-cache")
res.header("Expires", "0")
如果正在缓存数据,那么取消缓存是解决方案。