【发布时间】:2022-02-08 21:58:55
【问题描述】:
类似于this question,使用更新版本的 SvelteKit。
上下文:SvelteKit PR #3384 开始将标准 Request 对象传递给端点并删除 rawBody。
上面链接的问题对于如何使用rawBody 调用Stripe 的constructEvent 来验证传入webhook 请求的签名有一个很好的答案,但是现在未修改的主体不再暴露(据我所知)告诉),我想知道如何更新我的 webhook 处理程序。
我尝试调用constructEvent,结果为request.text()、request.json()、request.arrayBuffer()(转换为字符串)、request.blob().text(),以及普通的request.body 转换为字符串,但没有他们工作。它总是抛出同样的错误:
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
【问题讨论】:
-
查看Request API,您应该可以使用来自SvelteKit
RequestEvent的request.body。 here 有一个例子。 -
request.body: ReadableStream与stripe.webhooks.constructEvent的第一个参数的类型不匹配,即string | Buffer。我尝试将流连接成一个字符串和一个缓冲区,两者都导致了与问题中相同的错误