当Stripe计算它发送给您的事件的签名时,它使用一个表示整个事件内容的特定“有效负载”。签名是在这个确切的有效载荷上完成的,对它的任何更改,例如添加新行、删除空格或更改属性的顺序,都将更改有效载荷和相应的签名。 验证签名时,需要确保传递Stripe发送给您的原始有效负载,否则计算的签名将与Stripe不匹配。 框架有时会试图在接收请求时提供帮助,它们会检测JSON并自动为您解析它。这意味着你认为你得到了“原始有效载荷/机身”,但实际上你得到了另一个版本。它的内容相同,但与Stripe发送给你的内容不匹配。 这在Node.js中的Express中相当常见。因此,作为开发人员,您必须明确请求发送给您的原始/原始有效负载条带。如何做到这一点可能因各种因素而异。stripe-nodegithub上有两个问题,在这里和这里有许多潜在的修复。 对于Django,同样的情况也会发生,您需要确保代码请求原始负载。你似乎像预期的那样使用了request.body,但这是你想进一步挖掘的一件事。 此外,另一个常见错误是使用了错误的Webhook机密。例如,如果使用Stripe CLI,它会为您创建一个新的秘密,与您在该Webhook端点的仪表板中看到的秘密不同。你需要确保根据你所处的环境使用正确的秘密。