Braintree文档说您按照示例var gateway=braintree.connect(environmental variables)创建一个环境,然后通过执行以下操作创建一个clientToken

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

然后他们的示例说将客户 token 插入用于付款的表格中
braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", {id: "checkout"});

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

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

因此,我在某处缺少任何步骤,或者找不到正确的文档,但我肯定迷路了。

编辑:通过Braintree的响应,在下面的答案中,clientToken未被我尝试过的任何形式的response.clientToken填充,这是很多的。查看网络上很少的示例,以及Braintree的简单文档,似乎我在做正确的事情。

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

最佳答案

问题出在您放置代码以在您进行的任何node.js调用中与Braintree进行交互的位置。就我而言,我将其包含在http.createServer中,因此我可以在调试此代码时将其写出值,但其中的某些部分将无法正常工作。我还没有找到确切的细节。

另外,Braintree的示例代码在gateway.clientToken.generate()调用中显示了clientToken,即使我不了解如何提取该 token 值,我也会认为这是它所属的。因此,将clientToken移到该调用之外,我以为我曾经尝试过,但至少可以部分解决此问题。

我说“部分”是因为您要与每个新客户一起创建一个新 token ,而这种方式无法实现。我仍然需要确定如何在每次新客户拜访时生成新 token 。可能只是使其成为另一个函数调用而已,但是我还没有尝试过。

另外,我仍然不清楚是否需要创建新客户。我读过的答案是“否”,但我也读过答案是"is",因此困惑仍在继续,但这可能是一个不同的问题。

09-25 17:28