后,我加入快速结帐按钮,我的网页和设置服务器端程序与客户端代码:PayPal快速结帐重载页面付款
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
var CREATE_PAYMENT_URL = "<create_payment_url>";
var EXECUTE_PAYMENT_URL = "<execute_payment_url>";
paypal.Button.render({
env: "sandbox",
payment: function (resolve, reject) {
return paypal.request.post(CREATE_PAYMENT_URL)
.then(function (data) {
resolve(data.id);
})
.catch(function (err) {
reject(err);
});
},
onAuthorize: function (data) {
return paypal.request.post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID })
.then(function (data) {
document.querySelector('#paypal-button').innerText = 'Payment Complete!';
console.log("Success", data);
})
.catch(function (err) {
console.log("Error", err);
});
}
}, "#paypal-button");
</script>
我使用服务器端.NET SDK创建通过和支付过程通用的处理程序和它的工作正常,但在支付执行被调用后,整个页面被重新加载。
我想通过执行监听器处理结果/错误 - 使用.then()和.catch()方法定义的paypal.request.post(EXECUTE_PAYMENT_URL,...)回调函数。
对于PayPal的交互式演示https://developer.paypal.com/demo/checkout/#/pattern/server侦听器按预期工作。
感谢您的建议。
您是否看到任何控制台错误?这不应该重定向或重新加载页面。 – bluepnume
不,我不知道。但是,当我在CREATE_PAYMENT_URL脚本中使用正确的redirect_urls时,其行为与预期相同。详细内容在我对这个问题的回答。 –