所以,我使用sudo npm install -g braintree
将软件包安装到一个干净的流星项目中,并拥有以下代码:
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 @ braintree.connect({
(我有沙箱访问权限和所有密钥按顺序)。如果我使用npm将软件包安装到我的Meteor目录中,那么我还需要对package.js文件as shown here做些什么,考虑到npm现在可以在v1中使用meteor吗?更一般地说,如何配置项目以便安装和使用npm软件包?
编辑:代码自12/11起更新
答案 0 :(得分:3)
免责声明:我为Braintree工作:)如果您在整合方面遇到问题,请随时与我们联系。
更新:我创建了一个非常基本的Braintree和Meteor example application,可能对你有所帮助。
另一个免责声明:我知道非常关于Meteor。我将尝试回答更广泛的非流星特定问题,如果我能得到它,请更新更多流星特定信息。这里有一些潜在的问题:
您需要客户端和服务器端模块进行Braintree集成,braintree
是服务器端(节点)Braintree库,braintree-web
是客户端软件包。我不确定在Meteor中使用客户端npm模块的细节,因此通过在页面上放置脚本标记,您可以更轻松地使用像bower这样的工具或热链接到客户端javascript:
<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
braintree.connect
是服务器端方法,因此只应在服务器上调用(可能在启动期间调用一次)。您需要它来生成要在客户端使用的clientToken。我对Meteor的经验很少,但我认为在服务器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
});
}
});
braintree.setup
应仅在客户端运行,它与客户端的表单进行交互。
答案 1 :(得分:2)
Braintree在npm上有两个包。一个用于服务器端,另一个用于客户端。
https://www.npmjs.com/package/braintree将提供服务器代码(var gateway = braintree.connect…
)
https://www.npmjs.com/package/braintree-web将提供在浏览器中运行的代码(braintree.setup("/*very long client token*/", 'dropin', {
)。
对于meteor,您可能需要包含两个包。 (请务必仔细检查您的私钥在您的服务器上是否保密!使用/server
special directory来实现此目的可能会有所帮助。)
答案 2 :(得分:1)
require 。使用此包https://github.com/meteorhacks/npm来使用npm包。
答案 3 :(得分:1)
这是一个为meteor和Braintree同步包装的包https://atmospherejs.com/patrickml/braintree