【问题标题】:Braintree PayPal checkout component throwing "e.client.getVersion is not a function"Braintree PayPal 结帐组件抛出“e.client.getVersion 不是函数”
【发布时间】:2017-12-10 07:59:21
【问题描述】:

我很难理解我在这里做错了什么:

 braintree.client.create({
     authorization: res.clientToken // this is the token, I know it is correct
 }, (err, client) => {
    if (err) { ... }
    braintree.paypalCheckout.create({ client }, (err, paypalInstance) => {
        if (...) { ... }
    })
 });

调用braintree.paypalCheckout.create时,同步调用出错:

未捕获的类型错误:e.client.getVersion 不是函数

确实,client 对象没有这样的方法。我遵循this pagethis page 的代码(几乎相同)。

如何解决问题? PayPal Checkout 组件已加载并附加到 braintree 对象。

【问题讨论】:

    标签: javascript paypal braintree


    【解决方案1】:

    我在尝试将 vaultManagerdropIn 结合使用时遇到了这个问题。

    现在我实际上不打算继续这样做 - 我只是在玩。看起来我将不得不完全自定义 - 因此我想开始使用 vaultManager

    反正我有这个:

     braintree.dropin.create({....}, (err, instance) => {
    
           braintree.vaultManager.create({ client: instance }, (e, vmInstance) =>
           {
               vmInstance.fetchPaymentMethods((err, paymentMethods) => {
    
                  alert(JSON.stringify(paymentMethods)); 
               });
           });
     });
    

    原来instance 不是Client 对象。它是一个Dropin 对象;-) 它创建自己的客户端,存储在_client 私有属性上。

    我需要改为使用braintree.client.create(...) 来获得真正的Client 对象。

    我实际上作弊并这样做了 - 只是暂时:

     braintree.vaultManager.create({ client: instance._client },
    

    就像我说的,我不建议同时使用 DropIn 和 Vault,这有点违背了两者的意义。

    【讨论】:

      【解决方案2】:

      全面披露:我在 Braintree 工作。如果您还有任何问题,请随时联系support

      getVersionbraintree-webclientas of version 3.16.0 的一个方法。将您正在使用的braintree-web 的版本更新到 3.16.0+。

      【讨论】:

      • 是的,我想我使用的是3.9.x。谢谢!
      • 我得到 e.getVersion 不是使用 3.25.0 版使用 data-collector.min.js 的功能。这有关系吗?
      • 我使用的是 3.31.0 版本,我遇到了同样的错误?
      • 2 年半后,我在使用 Dropin UI 的 3.65.0 中遇到了同样的错误
      猜你喜欢
      • 2019-08-13
      • 2018-09-19
      • 1970-01-01
      • 2016-03-06
      • 2015-12-21
      • 2023-04-08
      • 2017-09-07
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多