[英]How to check Stripe webhook signatures in firebase functions
Hi 👋🏻I'm trying to verify a Stripe signature in Firebase functions.嗨👋🏻我正在尝试验证 Firebase 函数中的 Stripe 签名。 But when i try
stripe.webhooks.constructEvent
it catches an error saying:但是当我尝试
stripe.webhooks.constructEvent
它捕获了一个错误:
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
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
😔 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
😔
I've logged out the raw body, and it looks fine 🤖我已经注销了 raw body,看起来还不错 🤖
<Buffer 7b 0a 20 20 22 69 64 22 3a 20 22 65 76 74 5f 31 46 72 6b 4d 73 41 55 73 34 77 79 52 42 49 73 63 6d 66 72 43 39 7a 37 22 2c 0a 20 20 22 6f 62 6a 65 63 ... >
Here is the relevant code:这是相关的代码:
// A webhook called by stripe
const sig = req.headers['stripe-signature']
let event
// 1. construct event and validate
try {
event = stripe.webhooks.constructEvent(req.rawBody, sig, functions.config().stripe.mytestkey)
assert(event)
} catch (err) {
console.log(`Error when constructing Stripe event: ${err} - ${req.body}`)
res.status(400).send({ error: `Stripe webhook error: ${err}` })
return
}
// 2. Handle webhook
res.status(200).send(`successfully handled webhook ${hook}`)
})
Any thoughts?有什么想法吗? 💭
💭
Doing正在做
let sig = req.get('stripe-signature');
instead of代替
const sig = req.headers['stripe-signature']
should do the trick.应该做的伎俩。
According to the Express documentation :根据Express 文档:
req.get(field)
Returns the specified HTTP request header field (case-insensitive match).
返回指定的 HTTP 请求头字段(不区分大小写匹配)。
Finally, I figured out I had to write req.rawBody.toString('utf8')
.最后,我发现我必须写
req.rawBody.toString('utf8')
。 Source: https://github.com/stripe/stripe-node/issues/341来源: https : //github.com/stripe/stripe-node/issues/341
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.