我正在尝试让一个谷歌云函数来打开条纹结账,但目前它不起作用。
这就是功能:
const functions = require('firebase-functions');
const express = require('express');
const app = express();
const cors = require('cors')({origin: true});
app.use(cors);
app.use(express.json())
app.use(express.static('public'))
app.use(
express.urlencoded({
extended: false,
})
)
const stripe = require('stripe')(functions.config().stripe.secret_key);
exports.createStripeCheckout2 = functions.region('europe-west2').https.onCall(async(req, res) => {
const cust = req.body.customerId
const price = req.body.priceId
const quantity = req.body.students
const quantityA = Number(quantity)
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
mode: 'subscription',
allow_promotion_codes: true,
customer: 'cus_MQrpENhbL84RFD',
line_items: [
{
price: 'price_1LaJC1CKMdmWgnyspBbFet9v',
// For metered billing, do not pass quantity
quantity: 1,
},
],
success_url: `https://learning-platform-835f9.web.app/`,
cancel_url: `https://learning-platform-835f9.web.app/`,
});
res.redirect(session.url);
});
返回以下内容:
{"错误":{"消息":"错误请求","状态":"INVALID_ARGUMENT"}}
控制台中有此消息:加载资源失败:服务器响应状态为400((
onCall()
与onRequest()
不同,函数中的参数不是Express中的Request
和Response
。您似乎正在尝试使用fetch
或等效方法像REST API那样调用此函数。如果是这样,则必须发送包含文档中提到的详细信息的请求,如Content-Type
标头必须存在,并且正文必须具有data
属性。
在这种情况下,使用onRequest
函数应该可以保持代码的其余部分