後,我加入快速結帳按鈕,我的網頁和設置服務器端程序與客戶端代碼: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時,其行爲與預期相同。詳細內容在我對這個問題的回答。 –