首页 > 解决方案 > Braintree 集成 - gateway.transaction.sale 永远不会达到 err, result 函数

问题描述

我正在使用 Firebase 功能来集成 Braintree 服务器端。我已经检查了 Firebase 云功能和其他功能,它们工作正常。所以,这绝对是与布伦特里有关。我检查了 github 中的 Braintree nodejs implementation guide,我的代码很好。https://github.com/braintree/braintree_node

问题是函数总是catchunexpectedError. 代码永远不会到达代码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。它仍然给出同样的错误 -如何承诺一种大脑树方法?

  2. 通过选择测试卡更改金额并提供另一个随机数 - https://developers.braintreepayments.com/reference/general/testing/node#test-value-2223000048400011

  3. 删除options- 没有任何变化

标签: node.jsfirebasegoogle-cloud-functionsbraintree

解决方案


这可能是因为您处于免费层 (Spark),因此传出套接字连接被阻止。您必须升级您的项目Blaze plan以启用传出连接。具有慷慨的Blaze plan配额限制,因此您可能不会被收取费用。


推荐阅读