我正在尝试使用Firebase Functions将Stripe合并到iOS应用中。我正在使用带有后端的Swift在Stripe文档中“接受付款”的文档。我首先做了npm install --save stripe
。结束没有错误。然后我做了npm install
。到目前为止,我的 index.js 看起来像这样:
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
// response.send("Hello from Firebase!");
// });
const functions = require('firebase-functions');
const stripe = require('stripe')('sk_test_...');
const paymentIntent = await stripe.paymentIntents.create({
amount: 1099,
currency: 'usd',
});
const clientSecret = paymentIntent.client_secret
运行firebase deploy
时,我得到:11:29 error Parsing error: Unexpected token stripe
。我文件中的第11行char 29是stripe.paymentIntents
...
这是我第一次使用Firebase Functions或Stripe,所以我很茫然。感谢您的帮助。
编辑:
这是我的package.json
文件的内容。
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "8"
},
"dependencies": {
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.1",
"stripe": "^8.55.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"firebase-functions-test": "^0.2.0"
},
"private": true
}
答案 0 :(得分:2)
此错误是因为在云环境中未安装条带库。
npm install
确实安装了依赖项,但是在您的本地环境中,要将它们安装在Cloud Functions环境中,您需要从Cloud Function编辑package.json
文件。
此功能到add the dependencies的要求。
这是通过将依存关系部分添加到package.json
文件
它会类似:
{
"name": "sample-name",
"version": "0.0.1",
"dependencies": {
"escape-html": "^1.0.3",
"stripe": "^8.24.0"
}
}
编辑
使用此代码,它可以在Cloud函数上工作:
const stripe = require('stripe')('<My Secret Key>');
exports.helloWorld = (req, res) => {
let paymentIntent = null;
paymentIntent = stripe.paymentIntents.create({
amount: 2000,
currency: 'usd',
description: 'My first payment',
});
let message = req.query.message || req.body.message || 'Hello World!';
res.status(200).send(message);
};
显然,问题在于等待,因为HTTP云功能以同步方式工作