我正在将 paypal express checkout 与 v2 php checkout sdk 集成。我能够完成交易并将用户重定向到感谢页面并将详细信息保存到数据库,但是当用户通过贝宝安全窗口付款并关闭时,贝宝处理付款并获取我的 getorder 函数,此时有显着延迟,用户坐在结帐页面上,没有任何迹象表明发生了什么,几秒钟后,页面刷新,用户被重定向到感谢页面,付款成功。
现在我的问题是我应该如何向用户显示一条消息,以便在获取付款详细信息时不要刷新页面或关闭窗口。或者有什么方法可以将用户发送到另一个页面,告诉他在单击贝宝按钮时等待然后处理它。
谢谢
我的贝宝按钮代码:
paypal.Buttons({
createOrder: function() {
let formData = new FormData();
formData.append('amount', document.getElementById("amount_paypal").value);
formData.append('currency_code', document.getElementById("currency_code_paypal").value);
formData.append('refrence_id', document.getElementById("refrence_id_paypal").value);
formData.append('event_id', document.getElementById("event_id_paypal").value);
formData.append('description', document.getElementById("description_paypal").value);
return fetch('../paypal/createorder.php', {
method: 'POST',
body: formData
}).then(function(response) {
return response.json();
}).then(function(resJson) {
return resJson.result.id;
});
},
// Wait for the payment to be authorized by the customer
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
return fetch('../paypal/getorder.php', {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body: JSON.stringify({
orderID: data.orderID
})
}).then(function(res) {
if (!res.ok)
throw new Error('Something Went Wrong!');
window.location = "../paypal/thankyou.php";
});
});
},
experience: {
input_fields: {
no_shipping: 1
},
},
}).render('#paypal-button-container');