“Webhook 的签名不在 Stripe-Signature 标头中。”

Posted

技术标签:

【中文标题】“Webhook 的签名不在 Stripe-Signature 标头中。”【英文标题】:"The signature for the webhook is not present in the Stripe-Signature header." 【发布时间】:2021-12-24 12:30:24 【问题描述】:

我正在使用来自 NuGet 的 Stripe.net SDK。我总是从 StripeEventUtility.ConstructEvent 方法中得到异常。 WebHook 键正确,Request Header 包含“Stripe-Signature”键。

我正确接收来自 Webhook 测试器实用程序的传入数据(将 nGrok 与 Visual Studio 结合使用)。

我试图操作来自 Stripe 的传入数据(Jobject、字符串、序列化...)。有效载荷签名可能会导致一些问题。

有人遇到过同样的问题吗?

【问题讨论】:

【参考方案1】:

Webhook 测试器实用程序

您是否指的是 Stripe CLI,使用 listen 命令并转发到您的端点?如果是这样,请务必使用 listen 命令返回的 webhook 密码,而不是与仪表板上配置的端点相关的密码。

此问题的另一个主要来源是请求正文的突变。签名验证严格依赖于访问请求的原始正文,包括原始空格等。

查看 .NET 中访问原始请求正文的 webhook 端点的示例实现:https://github.com/stripe-samples/accept-a-payment/blob/main/custom-payment-flow/server/dotnet/Controllers/PaymentsController.cs#L86

【讨论】:

以上是关于“Webhook 的签名不在 Stripe-Signature 标头中。”的主要内容,如果未能解决你的问题,请参考以下文章