【发布时间】:2017-05-04 15:15:12
【问题描述】:
我在页面中添加了快速结帐按钮,并使用客户端代码设置了服务器端进程:
<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 通过通用处理程序创建和处理支付,它工作正常,但在调用支付执行后,整个页面被重新加载。
我想通过执行侦听器处理结果/错误 - paypal.request.post(EXECUTE_PAYMENT_URL, ...) 使用 .then() 和 .catch() 方法定义的回调。
对于https://developer.paypal.com/demo/checkout/#/pattern/server 上的 PayPal 交互式演示,侦听器按预期工作。
感谢您的建议。
【问题讨论】:
-
您是否看到任何控制台错误?这不应重定向或重新加载页面。
-
不,我不知道。但是,当我在 CREATE_PAYMENT_URL 脚本中使用正确的 redirect_urls 时,它的行为符合预期。我对这个问题的回答中的详细信息。
标签: javascript .net paypal