我的网站在同一页面上出售多种货币的产品,因此用户可以单击以欧元出售的产品并以欧元付款,或者他们可以单击以美元出售的产品并以美元付款等。 ..
问题在于,一旦初始化了新的PayPal SDK,就不能在没有以下情况的情况下更改其接受的货币:
正如您可能理解的那样,它不是同时非常快速,稳定或安全。我想念什么吗?我知道您可以在旧的Express Checkout版本中将货币作为参数发送。
贝宝(PayPal)文档令人发指,它缺少大量信息,并且周围没有大型社区,因此我无法在任何地方找到问题的答案。
我尝试在付款参数中发送货币,但是如果它与初始化的货币不同,则在尝试确认付款时会引发货币不匹配错误。
现在,如果用户单击使用PayPal进行支付的选项,那么我将使用正确的货币手动重新注入并重新初始化Paypal SDK,但这很慢,并且需要对睡眠进行硬编码(尽管可能是由于我缺乏知识,但是可能更好的方法)。
这是我当前设置中不可接受的伪代码:
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()
}
Run Code Online (Sandbox Code Playgroud)
我希望有比这更简单,更安全的货币兑换方式。谢谢。
小智 1
您可以使用后端来解决此问题。首先,定义 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')
Run Code Online (Sandbox Code Playgroud)
然后只需在后端实现 REST Api 来创建订单 (/v2/checkout/orders)。然后返回创建的付款的id。