javascript - Paypal SDK,如何在不重新注入(inject)和重新初始化SDK本身的情况下动态更改货币?

标签 javascript paypal

我的网站有多种货币的产品在同一页面上出售,因此人们可以单击以欧元出售的产品并以欧元支付,或者他们可以单击以美元出售的产品并以美元支付等等。 ..

问题是,一旦您初始化新的 PayPal SDK,您将无法更改它接受的货币,除非:

  • 破坏元素
  • 更改 SDK 的链接,使其接受不同的货币
  • 手动将其注入(inject)页面
  • 重新初始化

  • 正如您可能理解的那样,它同时不是非常快速、稳定或安全。我错过了什么吗?我知道您可以在旧的 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/

    相关文章:

    javascript - 使用 jQuery 检查 JSON 对象中是否存在键

    javascript - 随机加载城市标签

    php - 如何自动填写 paypal 上的电子邮件字段?

    paypal - 如何防止商家获取待处理的 Paypal 授权?

    paypal - 处理时效性商品的Paypal支付状态 'Completed-Funds-Held'

    javascript - 在 React 中使用方法装饰器时绑定(bind) this

    javascript - webkit 浏览器 : white flashes on transitions between pages

    javascript - Mocha bdd 风格测试命名

    Paypal IPN 发回已验证但前后都有数字

    javascript - 用于传递产品和金额的简单 PayPal Javascript API