此命令meteor add patrickml:braintree
在流星应用程序目录中运行。
在client.main.js中:
在变量braintree
和IDE下的一条弯曲线说"未解决的变量或类型"。
Template.payment.onRendered(function () {
Meteor.call('getClientToken', function (error, clientToken) {
if (error) {
console.log(error); //<---- always prints out
} else {
//vvvvvvvvv
braintree.setup(clientToken, "dropin", {
container: "payment-form", // Injecting into <div id="payment-form"></div>
onPaymentMethodReceived: function (response) {
var nonce = response.nonce;
console.log(nonce);
}
});
}
});
});
在下面的服务器代码中,clientId始终是未定义的。
//server/main.js
'getClientToken': function (clientId) {
console.log(clientId); //<--------- undefined
let generateToken = Meteor.wrapAsync(gateway.clientToken.generate, gateway.clientToken);
let options = {};
if (clientId) {
options.clientId = clientId;
}
let response = generateToken(options);
return response.clientToken;
}
和服务器控制台打印出来:
召唤方法" getClientToken" AuthenticationError:身份验证错误
任何想法是什么问题以及如何修复它?thx
全面披露:我在Braintree工作。如果您还有其他疑问,请随时联系支持。
配置网关对象时,请确保使用沙盒控制面板中记录的API凭据。这是您可以找到它们的方式:
- 登录到沙盒控制面板
- 导航到帐户> 我的用户
- 在 API键,令牌密钥,加密密钥下,单击查看授权
- 如果没有出现API键,请单击生成新的API键
- 单击 view 在私钥列下方查看您的 public 和私有键,商人ID ,并且环境
当您拥有它们时,请使用它们来配置网关对象。例如:
var braintree = require("braintree");
var gateway = braintree.connect({
environment: braintree.Environment.Sandbox,
merchantId: "replaceWithYourMerchantId",
publicKey: "replaceWithYourPublicKey",
privateKey: "replaceWithYourPrivateKey"
});