【发布时间】:2020-12-08 12:36:07
【问题描述】:
我们的网站有一个结帐流程,如果重定向到 PayPal 进行审批,该流程会中断。此外,我们有不同的货币,因此 PayPal SDK 无法用于我们的目的,因为您需要重新加载才能更改货币。
我们可以构建自己的结帐集成,在新窗口中打开从 API 端接收的 URL,还是我们唯一的选择是使用他们的 SDK?
【问题讨论】:
标签: paypal
我们的网站有一个结帐流程,如果重定向到 PayPal 进行审批,该流程会中断。此外,我们有不同的货币,因此 PayPal SDK 无法用于我们的目的,因为您需要重新加载才能更改货币。
我们可以构建自己的结帐集成,在新窗口中打开从 API 端接收的 URL,还是我们唯一的选择是使用他们的 SDK?
【问题讨论】:
标签: paypal
更改币种需要重新加载JS SDK,但不需要刷新页面。下面是一个简短的 vanilla JS 函数和使用示例:
function loadAsync(url, callback) {
var s = document.createElement('script');
s.setAttribute('src', url); s.onload = callback;
document.head.insertBefore(s, document.head.firstElementChild);
}
loadAsync('https://www.paypal.com/sdk/js?client-id=sb¤cy=USD', function() {
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '0.01'
}
}]
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
// Show a success message to the buyer
alert('Transaction completed by ' + details.payer.name.given_name);
});
}
}).render('body');
});
另外,paypal-js 包最近发布并且做同样的事情
由于您提到了具有服务器端 API 集成,因此您需要使用 https://developer.paypal.com/demo/checkout/#/pattern/server 的前端代码并将其与服务器上的两条路由配对,一条用于“创建订单”,一条用于“捕获”订单”,记录在 https://developer.paypal.com/docs/business/checkout/server-side-api-calls/#server-side-api-calls 。这些路由应该只输出 JSON 数据(没有 HTML 或文本)
【讨论】: