从 Firebase Cloud Function 连接到 Stripe 时出错
Posted
技术标签:
【中文标题】从 Firebase Cloud Function 连接到 Stripe 时出错【英文标题】:Error connecting to Stripe from Firebase Cloud Function 【发布时间】:2018-03-08 22:43:54 【问题描述】:我正在尝试使用 Firebase 和 Stripe 从我的 android 应用处理信用卡付款。我已经在我的客户端上检索到了一个 Stripe 令牌,并且我在我的 Firebase Cloud Function 中使用了一个数据库触发器来捕捉新订单的发布时间。这是我的功能代码。
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._Error 与 Stripe 的连接发生错误 (/user_code/node_modules/stripe/lib/Error.js:12:17) 在 Error.Constructor (/user_code/node_modules/stripe/lib/utils.js:120:13) 在 Error.Constructor (/user_code/node_modules/stripe/lib/utils.js:120:13) 在 ClientRequest。 (/user_code/node_modules/stripe/lib/StripeResource.js:206:9) 在 在 ClientRequest.emit (events.js:188:7) 的 emitOne (events.js:96:13) TLSSocket.socketErrorListener (_http_client.js:309:9) 在 emitOne (events.js:96:13) 在 TLSSocket.emit (events.js:188:7) 在 _combinedTickCallback 处的 connectErrorNT (net.js:1021:8) (internal/process/next_tick.js:80:11) 在 process._tickDomainCallback (内部/进程/next_tick.js:128:9)
我找不到有关此错误的任何文档。我已经尝试了我能想到的一切。所有变量都包含有效数据。
【问题讨论】:
【参考方案1】:最可能的原因与您的代码无关 - 它与您订阅的 Firebase plan 有关。
“Spark 计划”是完全免费的层级(也是大多数人开始使用的层级),除了 Google 的 HTTPS 服务外,不允许出站网络连接。
即使是开发和测试,我也建议使用“Blaze 计划”。它允许网络连接。虽然它确实列出了使用价格(处理和网络连接),但信息按钮表明在这些价格开始之前有一个free usage level each month,这个水平通常足以进行开发和测试。
【讨论】:
您知道如何捕获失败的收费请求吗?只要我使用一张好卡,一切都可以使用上面的代码。如果我使用被拒绝的卡,流程将继续进入底部错误部分,但错误变量为空。我以为它只会返回一个失败的收费对象 我对 Stripe 本身一无所知,抱歉。 :听起来您最好将其作为一个单独的、有针对性的问题发布。 即使我使用“Blaze 计划”,有时也会出现此错误。 @JIWANG 这也发生在我身上。你知道发生了什么吗? @Leo 我认为这是firebase的错误,它现在可以工作。以上是关于从 Firebase Cloud Function 连接到 Stripe 时出错的主要内容,如果未能解决你的问题,请参考以下文章
从请求中获取用户信息到 Firebase 中的 Cloud Function
如何从 Cloud Function 获取 Firebase 项目名称或 ID
从 Firebase Cloud Function 连接到 Stripe 时出错
从 Firebase Cloud Function 调用 Google Books API 时出现 HttpsError
如何使用 Cloud Function 将数据从 Firebase Firestore 索引到 Elastic App Search?