Компонент проверки Braintree PayPal выдает "e.client.getVersion не является функцией"
Я изо всех сил пытаюсь понять, что я делаю здесь не так:
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
ошибка вызывается синхронно:
Uncaught TypeError:
e.client.getVersion
это не функция
Действительно, client
У объекта нет такого метода. Я следовал коду с этой страницы и этой страницы (почти то же самое).
Как решить проблему? Компонент PayPal Checkout загружается и добавляется к braintree
объект.
2 ответа
Полное раскрытие: я работаю в Braintree. Если у вас есть какие-либо дополнительные вопросы, не стесняйтесь обращаться в службу поддержки.
getVersion
это метод client
класс с версии 3.16.0 из braintree-web
, Обновите версию braintree-web
вы используете до 3.16.0+.
Я столкнулся с этим при попытке использовать 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 вместе, это как бы побеждает суть обоих.