node.js - 从 Firebase Cloud Function 连接到 Stripe 时出错

标签 node.js firebase stripe-payments google-cloud-functions

我正在尝试使用 Firebase 和 Stripe 从我的 Android 应用程序处理信用卡付款。我已经在我的客户端上检索到一个 Stripe token ,并且我在我的 Firebase 云函数中使用一个数据库触发器来捕捉新订单发布的时间。这是我的功能代码。

const stripe = require('stripe')('sk_test_XXXXXXXXXXXXXXXXXXXXXXXX');

return admin.database()
    .ref()
    .child('orders')
    .child(userId)
    .child(orderId)
    .child('token')
    .once('value')
    .then(snapshot => {
        return snapshot.val();
    })
    .then(token => {

        const amount = order.amount;
        console.log('Amount:', amount);
        console.log('token:', token.id);

        const idempotency_key = orderId;
        const source = token.id;
        const currency = 'usd';
        const charge = {amount, currency, source};

        return stripe.charges.create(charge, { idempotency_key });
    })
    .then(charge => {
        console.log('Success:', charge);
        // If the result is successful, write it back to the database
        return event.data.adminRef.set(charge);
    }, error => {
        console.log('Error:', error);

        return;
    }
);

enter code here

这会产生以下错误:

Error: An error occurred with our connection to Stripe at Error._Error (/user_code/node_modules/stripe/lib/Error.js:12:17) at Error.Constructor (/user_code/node_modules/stripe/lib/utils.js:120:13) at Error.Constructor (/user_code/node_modules/stripe/lib/utils.js:120:13) at ClientRequest. (/user_code/node_modules/stripe/lib/StripeResource.js:206:9) at emitOne (events.js:96:13) at ClientRequest.emit (events.js:188:7) at TLSSocket.socketErrorListener (_http_client.js:309:9) at emitOne (events.js:96:13) at TLSSocket.emit (events.js:188:7) at connectErrorNT (net.js:1021:8) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickDomainCallback (internal/process/next_tick.js:128:9)

我找不到关于此错误的任何文档。我已经尝试了我能想到的一切。所有变量均包含有效数据。

最佳答案

造成这种情况的最可能原因与您的代码无关 - 它与 Firebase plan 有关您已订阅。

“Spark 计划”是完全免费的套餐(也是大多数人开始使用的套餐),除 Google 的 HTTPS 服务外,不允许出站网络连接。

即使是开发和测试,我也建议采用“Blaze 计划”。它允许网络连接。虽然它确实列出了使用价格(包括处理和网络连接),但信息按钮表明有一个 free usage level each month。在这些价格生效之前,该水平通常足以进行开发和测试。

关于node.js - 从 Firebase Cloud Function 连接到 Stripe 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46447966/

相关文章:

node.js - NPM SOAP 包 - 客户端作为单例?

Android Firebase 数据库添加对象到列表

javascript - React-Native, Stripe 卡元素未显示实时 API key

java - 在 Parse 数据浏览器中安全存储用户的余额

javascript - 将对象从 SQL 查询函数传递到单独的函数

ruby-on-rails - node.js 世界中的 ActiveRecord 等价是什么?

node.js - 让 SASS 从特定文件(自动)编译到不同的文件夹中

java - 在 Firebase java 中同步验证 IdToken

swift - 无法在 Swift 3 中将 Facebook 用户属性传递给 Firebase FIRAuth