我正在尝试使用Firebase和Stripe从Android应用程序处理信用卡付款。我在客户端上检索了一个条纹令牌,并且在发布新订单时,我正在使用Firebase Cloud功能中的数据库触发器来捕获。这是我的功能代码。
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 (/user_code/node_modules/stripe/lib/error.js:12:17)at 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)at emitone(event.js:96:13)at Clientrequest.emit(Events.js:188:7) tlssocket.socketerrorlistener(_http_client.js:309:9)在emitone (events.js:96:13)在tlssocket.emit(event.js:188:7) connecterrornt(net.js:1021:8)at _combinedTickCallback (内部/process/next_tick.js:80:11)在process._tickdomaincallback (内部/process/next_tick.js:128:9)
我找不到有关此错误的任何文档。我已经尝试了我能想到的一切。所有变量都包含有效的数据。
最有可能导致这样的原因与您的代码无关 - 它与您订阅的Firebase计划有关。
" Spark Plan"是完全免费的层(这是大多数人开始),除了Google的HTTPS服务外,不允许出站网络连接。
即使在开发和测试中,我建议使用"大火计划"。它允许网络连接。尽管它确实列出了利用率(用于处理和网络连接),但信息按钮表明每个月都有一个免费的使用水平,并且该水平通常足以进行开发和测试。