Braintree集成-gateway.transaction.sale永远不会出错,结果函数

时间:2018-07-17 20:51:10

标签: node.js firebase google-cloud-functions braintree

我正在使用Firebase函数集成Braintree服务器端。我已经检查了Firebase云功能和其他功能,它们工作正常。因此,这绝对与Braintree有关。我检查了github中的Braintree nodejs实施指南,我的代码很好。 https://github.com/braintree/braintree_node

问题是该功能始终与catch一起进入unexpectedError。该代码永远不会到达代码的then部分。

exports.setNonce = functions.https.onRequest((req, res) => {

// Grab the parameters.
if (req.body.nonce === undefined) {
    // This is an error case, as "message" is required
    return res.status(400).send('No nonce defined!');
} else {
    return gateway.transaction.sale({
        amount: '5.00',
        paymentMethodNonce: 'fake-valid-nonce',
        options: {
          submitForSettlement: true
        }
      }).then((err, result) => {
        if(err) {
            return res.status(406).send(err);
        }
        else {
            return res.status(200).json({"hash" : "Successful"});
        }
      }).catch((error) => {
        return res.status(406).send(error);
      });
}
});

我已经尝试过的事情-

  1. 通过使用bluebird将gateway.transaction.sale转换为promise。它仍然给出相同的错误-How to promisify a braintree method?

  2. 更改数量并通过选择测试卡-https://developers.braintreepayments.com/reference/general/testing/node#test-value-2223000048400011

  3. 删除options-不变

1 个答案:

答案 0 :(得分:1)

这可能是因为您在免费层(Spark)上,因此传出套接字连接被阻止。您必须将项目升级到Blaze plan才能启用传出连接。 Blaze plan有足够的配额限制,因此您可能无需付费。