Braintree PayPal 结帐组件抛出“e.client.getVersion 不是函数”
Posted
技术标签:
【中文标题】Braintree PayPal 结帐组件抛出“e.client.getVersion 不是函数”【英文标题】:Braintree PayPal checkout component throwing "e.client.getVersion is not a function" 【发布时间】: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 page 和this page 的代码(几乎相同)。
如何解决问题? PayPal Checkout 组件已加载并附加到 braintree
对象。
【问题讨论】:
【参考方案1】:我在尝试将 vaultManager
与 dropIn
结合使用时遇到了这个问题。
现在我实际上不打算继续这样做 - 我只是在玩。看起来我将不得不完全自定义 - 因此我想开始使用 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。
getVersion
是 braintree-web
的 client
类 as 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 中遇到了同样的错误以上是关于Braintree PayPal 结帐组件抛出“e.client.getVersion 不是函数”的主要内容,如果未能解决你的问题,请参考以下文章
在 PayPal REST API 中查找 Braintree 计费协议 ID
Android:Paypal Express 结帐集成不起作用