gpt4 book ai didi

node.js - 如何使用无服务器功能获取 RAW Body?

转载 作者:行者123 更新时间:2023-12-01 04:24:14 27 4
gpt4 key购买 nike

我正在 Zeit Now 上从 Express 迁移到无服务器功能。

条纹 webhook docs请求原始正文请求,使用 Express 时我可以通过 bodyParser 获取它,但是它如何在无服务器功能上工作?如何以字符串格式接收正文以验证 strip 签名?

支持团队将我重定向到此 documentation link ,我很困惑,据我所知,我必须通过text/plain进入请求 header ,但我无法控制它,因为 Stripe 是发送 webhook 的那个。

export default async (req, res) => {
let sig = req.headers["stripe-signature"];
let rawBody = req.body;
let event = stripe.webhooks.constructEvent(rawBody, sig, process.env.STRIPE_SIGNING_SECRET);
...
}

在我的函数中,我收到 req.body作为一个对象,我该如何解决这个问题?

最佳答案

以下代码片段对我有用(修改自 source ):

const endpointSecret = process.env.STRIPE_SIGNING_SECRET;

export default async (req, res) => {
const sig = req.headers['stripe-signature'];
let event;
let bodyChunks = [];

req
.on('data', chunk => bodyChunks.push(chunk))
.on('end', async () => {
const rawBody = Buffer.concat(bodyChunks).toString('utf8');

try {
event = stripe.webhooks.constructEvent(rawBody, sig, endpointSecret);
} catch (err) {
return res.status(400).send(`Webhook Error: ${err.message}`);
}

// Handle event here
...

// Return a response to acknowledge receipt of the event
res.json({ received: true });
});
};

export const config = {
api: {
bodyParser: false,
},
};

关于node.js - 如何使用无服务器功能获取 RAW Body?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59566185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com