gpt4 book ai didi

google-cloud-platform - Stripe 错误 : No signatures found matching the expected signature for payload

转载 作者:行者123 更新时间:2023-12-03 07:30:02 26 4
gpt4 key购买 nike

我有一个调用 Firebase 函数的条纹 webhook。在这个函数中,我需要验证这个请求来自 Stripe 服务器。这是代码:

const functions = require('firebase-functions');
const bodyParser = require('body-parser');
const stripe = require("stripe")("sk_test_****");
const endpointSecret = 'whsec_****';
const app = require('express')();

app.use(bodyParser.json({
verify: function (req, res, buf) {
var url = req.originalUrl;
if (url.startsWith('/webhook')) {
req.rawBody = buf.toString()
}
}
}));

app.post('/webhook/example', (req, res) => {
let sig = req.headers["stripe-signature"];

try {
console.log(req.bodyRaw)
let event = stripe.webhooks.constructEvent(req.body, sig, endpointSecret);
console.log(event);
res.status(200).end()

// Do something with event
}
catch (err) {
console.log(err);
res.status(400).end()
}
});

exports.app = functions.https.onRequest(app);

Stripe Documentation 中所述,我必须使用原始正文来执行此安全检查。

我已经尝试过使用我当前的代码和:
app.use(require('body-parser').raw({type: '*/*'}));

但我总是收到这个错误:
Error: No signatures found matching the expected signature for payload. Are you passing the raw request body you received from Stripe? https://github.com/stripe/stripe-node#webhook-signing

最佳答案

Cloud Functions 自动 parses body content of known types .如果您正在获取 JSON,那么它已经在 req.body 中被解析并可供您使用。 .您不需要添加其他正文解析中间件。

如果你需要处理原始数据,你应该使用 req.rawBody ,但我认为您不需要在这里这样做。

关于google-cloud-platform - Stripe 错误 : No signatures found matching the expected signature for payload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899365/

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