gpt4 book ai didi

javascript - Meteor Braintree -- 通过 Meteor 方法创建客户端 token

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:15 27 4
gpt4 key购买 nike

我正在尝试让 Braintree Payments 在 Meteor 应用程序中运行。我坚持尝试返回生成 token (服务器端,通过 Meteor 方法)以供客户端使用的结果。

我已经试过了:

/server/braintree.js

Meteor.methods({
createClientToken: function() {

var token = gateway.clientToken.generate({
customerId: this.userId
}, function(err, response) {
clientToken = response.clientToken
return clientToken
}
)

console.log(token)
return token
}
})

返回 true

我也试过这个:

Meteor.methods({
createClientToken: function() {

var clientToken
gateway.clientToken.generate({
customerId: this.userId
}, function(err, response) {
clientToken = response.clientToken
}
)

console.log(clientToken)
return clientToken
}
})

返回 undefined

function(err, response) 被异步调用,是吗?如果是这样,那将是问题的解释。似乎尝试从异步函数返回值是 Javascript 中的一个痛点。我已经阅读了很多关于它的答案(比如 this onethis onethis one ),但似乎没有一个能引导我朝着正确的方向前进。

此外,我相信我可能需要使用 Meteor 的 wrapAsync 方法,对吗?我试过这个(并找到了 thisthis 相关的 SO 问题),但似乎仍然无法解决问题。

感谢任何反馈。

更新:

有关将 Braintree 与 Meteor 集成的有效方法,请查看 example repo (非常感谢@Nick Tomlin)

最佳答案

免责声明:我为 Braintree 工作 :)

我不熟悉 Meteor,但正如@mrak 指出的那样,clientToken.generate 是异步的,您肯定会在您的方法中适本地处理它。

在您当前的代码中,clientToken 未定义,因为 console.log(clientToken) 在您从回调中收到 clientToken 之前立即执行对于 clientToken.generate。如果您习惯于在同步问题中编码,那么异步编程可能需要一段时间才能完全理解,但是有很多资源可以帮助您(这里是 one)。

看起来 Meteor.wrapAsync 确实会提供您所需要的,这里是一个未经测试的示例实现。

Meteor.methods({
createClientToken: function() {
var createToken = Meteor.wrapAsync(gateway.clientToken.generate, gateway.clientToken);

var response = createToken({});

return response.clientToken;
}
});

更新

我创建了一个非常基本的 Braintree + Meteor application这可能对您有用(如果没有,请在 GH 存储库上提交问题以帮助改进它!)

关于javascript - Meteor Braintree -- 通过 Meteor 方法创建客户端 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27322149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com