如何插入 Braintree clientToken

How do I insert a Braintree clientToken?

本文关键字:Braintree clientToken 插入 何插入      更新时间:2023-09-26

Braintree文档说你创建一个环境,如他们的示例var gateway=braintree.connect(environmental variables),然后通过执行创建一个clientToken

gateway.clientToken.generate({}, function (err, response) {
    var clientToken = response.clientToken;
  });

然后他们的例子说将客户端令牌插入用于付款的形式中

braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", {id: "checkout"});

但他们也声明clientToken是一个对象。我在任何地方都看不到如何获取令牌值,返回值只是一个布尔值。我确实发现gateway.clientToken通过使用typeof()报告为对象。

在Stackoverflow上,我看到有几个人说clientToken对象应该是base64编码的值,但是你怎么做呢?Braintree的代码不应该这样做吗?

所以我在某处错过了一个步骤,或者我找不到正确的文档,但我肯定迷路了。

编辑:根据Braintree的回应,在下面的答案中,clientToken没有被response.clientToken以我尝试过的任何形式填充,这是很多。看看来自网络上的例子,这些例子很少,以及Braintree的轻量级文档,看起来我做的一切都是正确的。

编辑2:我对这个问题的解决方案在下面的答案中。

问题在于你把代码放在什么位置,以便在你所做的任何节点中与 Braintree 进行交互.js调用。就我而言,我把它放在http.createServer里面,所以我可以在调试时写出值,但所有这些的某些部分不会让它工作。我还没有弄清楚确切的细节。

此外,来自 Braintree 的示例代码在 gateway.clientToken.generate() 调用中显示了 clientToken,这会导致我认为这就是它所属的地方,即使我不明白我如何提取该令牌值。因此,将clientToken移到该调用之外,我认为我曾经尝试过,至少部分解决了这个问题。

我说"部分"是因为您要为每个新客户创建一个新令牌,而这无法以这种方式完成。我仍然需要确定如何在每次新客户访问时生成新令牌。这可能只是让它成为另一个函数调用的问题,但我还没有尝试过。

此外,我仍然不清楚是否需要创建新客户。我读到答案是否定的,但我也读过答案是肯定的,所以混乱占主导地位,但这可能是一个不同的问题主题。

我在Braintree工作。如果您有更详细的问题,请联系我们的支持团队。

听起来你混淆了gateway.clientToken哪个是允许您获取客户端令牌的对象,以及客户端令牌本身,这是gateway.clientToken.generate的回调接收的内容 - response.clientToken

一旦你有了令牌(这里,var clientToken),你需要把它交给你的客户。来自"Hello, Server!"文档:

有很多方法可以将客户端令牌转换为JavaScript,以便您可以设置Braintree。许多人选择将客户端令牌插入到包含 JavaScript 的视图中,以设置 Braintree。