2014-12-11 2 views
0

Таким образом, я использовал sudo npm install -g braintree для установки пакета в чистый проект метеора и имеет следующий код:Застрял с интеграцией Брейнтри с Meteor.js

if (Meteor.isClient){ 

    Meteor.call('getBraintree') 

    braintree.setup("/* very long client token */", 'dropin', { 
    container: 'dropin' 
    }); 
}; 

if (Meteor.isServer) { 
    Meteor.startup(function(){ 
    var braintreeApi = Meteor.npmRequire('braintree'), 
     gateway = braintree.connect({ 
     environment: braintree.Environment.Sandbox, 
     merchantId: "merchantId", 
     publicKey: "publicKey", 
     privateKey: "privateKey" 
    }); 
    }); 

Meteor.methods({ 
    'getBraintree': function getBraintree(){ 
    var braintreeWeb = Meteor.npmRequire('braintree-web'); 
    } 
    }); 
}; 

... и Брэйнтрите не определен @braintree.connect({ (I имеют доступ к песочнице и все мои ключи в порядке). Если я использовал npm для установки пакета в мой каталог Meteor, есть ли что-то еще, что я должен был бы сделать с моим файлом package.js as shown here, учитывая, что npm теперь работает с meteor в v1? В более общем плане, как мне настроить проект, чтобы пакеты npm могли быть установлены и использованы?

Edit: код обновляется по состоянию на 12/11

+0

Вы не компилируете 'var braintree = require ('braintree')'? – sherb

+0

Я экспериментировал с объявлением его глобально, в начале функции запуска и внутри глобальной функции запуска ... он отбрасывает «require not defined». Я новичок в Meteor, но похоже, что это может быть связано с установкой пакета npm? –

+0

@MikePaszkiewicz Я удалил ключи, которые вы разместили (на всякий случай они были вашими реальными ключами), пожалуйста, не публикуйте их в общественном месте :) –

ответ

2

Отказ от ответственности: Я работаю в Braintree :) Всегда не стесняйтесь обращаться к нашей поддержке, если у вас возникли проблемы с вашей интеграцией.

Обновление: Я создал чрезвычайно базовый Braintree и Meteor example application, которые могут вам помочь.

Другой отказ от ответственности: Я знаю очень немного о Метеор. Я постараюсь ответить на более широкие проблемы, не связанные с метеоритом, и обновить дополнительную информацию о метеорете, если я смогу ее получить. Вот несколько потенциальных проблем:

  1. Вам нужно как клиента, так и на стороне сервера модули для интеграции Braintree, braintree является на стороне сервера (узел) Брэйнтри библиотека и braintree-web является пакет на стороне клиента. Я не уверен в специфике использования клиентского модуля npm в Meteor, поэтому вам может быть проще использовать инструмент, например, bower, или для горячей ссылки на javascript на стороне клиента, разместив на этой странице тег скрипта:

    <script src="https://js.braintreegateway.com/v2/braintree.js"></script>

  2. braintree.connect является методом на стороне сервера, и как таковая должна быть вызвана только на сервере (возможно, один раз во время запуска). Он понадобится для создания клиентаToken, который будет использоваться на стороне клиента. У меня очень мало опыта работы с Метеор, но я думаю, что он подходит для вызова braintree.connect в Meteor.startup на сервере:

     // a better pattern would be to place this in a server/index.js file 
         // within your project, which Meteor knows to load as server only code 
         Meteor.startup(function() { 
          if (Meteor.isServer) { 
          var braintree = Meteor.npmRequire('braintree'); 
    
          gateway = braintree.connect({ 
           environment: braintree.Environment.Sandbox, 
           publicKey: process.env.BT_PUBLIC_KEY, 
           privateKey: process.env.BT_PRIVATE_KEY, 
           merchantId: process.env.BT_MERCHANT_ID 
          }); 
          } 
         }); 
    
  3. braintree.setup должен работать только на стороне клиента, это то, что взаимодействует с формой на сторона клиента.

+0

Пробовал работать с горячей ссылкой на клиентскую часть 'braintree.js' безрезультатно. Клиент и сервер имеют весь правильный код, отсортированный, насколько я могу судить, но braintree по-прежнему не определено в 'braintree.connect'. Похоже, что это определенно связано с метеор, а пакет npm говорит правильно. –

+0

@MikePaszkiewicz 'braintree' - это просто переменная, вам нужно будет присвоить ему« npmRequire », чтобы использовать любую из функций. Например. 'var braintree = var braintree = Meteor.npmRequire ('braintree');'. Вы также можете просто использовать то, что в настоящее время назначаете его 'braintreeApi', если хотите больше об общих js-модулях [здесь] (http://dailyjs.com/2010/10/18/modules/). Также я думаю, что «Meteor.methods» должен использоваться только на стороне сервера, поэтому он не будет доступен вам на клиенте. Я также не думаю, что 'npmRequire' работает на клиенте (по крайней мере, из коробки). –

+0

Вам также нужно будет сделать, как @Thanish, и использовать модуль npmRequire, поскольку он должен использоваться, например. добавив файл 'package.json' с соответствующим именем пакета и версии. Есть способ использовать его [здесь] (https://gentlenode.com/journal/meteor-17-using-npm-modules-in-your-application/36) –

1

требуют не доступен внутри Метеор, как это. Используйте этот пакет https://github.com/meteorhacks/npm для использования пакетов npm.

+0

По-прежнему возникают проблемы после следующего чтения для пакета метеоритов npm. npm установлен в глобальном масштабе, версия пакета находится в файле .json, и я создал метод Meteor на сервере, который вызывается клиентом для запроса пакета Braintree: 'var braintreeApi = Meteor.npmRequire ('braintree'); '. Braintree все еще не определен ... любой вход был бы очень оценен! –

+0

Вы создали файл 'package.json'? Проверьте это https://github.com/meteorhacks/npm#defining-packages – Thanish

2

Braintree имеет две упаковки на гамме. Один для серверной, а другой для клиентской стороны.

https://www.npmjs.com/package/braintree предоставит код сервера (var gateway = braintree.connect…)

https://www.npmjs.com/package/braintree-web с другой стороны, предоставит код для запуска в браузере (braintree.setup("/*very long client token*/", 'dropin', {).

В случае метеор вам может потребоваться включить оба пакета.(Убедитесь, что дважды проверьте, что ваш секретный ключ хранится в тайне на вашем сервере! Это может быть полезно использовать /serverspecial directory, чтобы служить этой цели.)

+0

У меня не было установленного шаблона web-интерфейса, но после получения пакета я все равно получаю единственную ошибку, которую «braintree не определен» при попадании в 'braintree.connect'. Исходный код был отредактирован выше в ваших предложениях, и все кажется правильным. –

Смежные вопросы