我的网站有多种货币的产品在同一页面上出售,因此人们可以单击以欧元出售的产品并以欧元支付,或者他们可以单击以美元出售的产品并以美元支付等等。 ..
问题是,一旦您初始化新的 PayPal SDK,您将无法更改它接受的货币,除非:
正如您可能理解的那样,它同时不是非常快速、稳定或安全。我错过了什么吗?我知道您可以在旧的 Express Checkout 版本中将货币作为参数发送。
PayPal 文档令人愤怒,它缺少很多信息,而且周围没有一个大社区,所以我无法在任何地方找到我的问题的答案。
我尝试在付款参数中发送货币,但如果它与初始化货币不同,一旦您尝试确认付款,就会引发货币不匹配错误。
现在,如果用户单击使用 PayPal 付款的选项,我正在使用正确的货币手动重新注入(inject)和重新初始化 paypal SDK,但它很慢并且需要硬编码 sleep (尽管这可能是由于我缺乏知识,可能有更好的方法)。
这是我当前设置的 Not Acceptable 伪代码:
initialisePaypalSDK(currency) {
destroy old initialisation
change link to paypal with new currency
inject new link to page
initialise the new sdk
sleep until the paypal variable is defined
showPayPalButton()
}
我希望有比这更简单、更安全的货币兑换方式。谢谢。
最佳答案
您可以使用后端来解决此问题。
首先,像这样定义 createOrder 函数:
const createOrder = async (data, actions) => {
return await axios.get('/yourbackend/api/get_order_id')
}
const onApprove = (data, actions) => {
// ... code to handle the payment status
}
paypal.Buttons({createOrder, onApprove}).render('#paypal-button-container')
然后只需在后端实现 REST Api 以创建订单 (/v2/checkout/orders)。然后返回创建的付款的 id。
关于javascript - Paypal SDK,如何在不重新注入(inject)和重新初始化SDK本身的情况下动态更改货币?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56142863/