校验webhook签名
概述
签名头
Signature
包含一个时间戳和签名。t=
为前缀,签名以v1
为前缀。
Webhook密钥
whsec_
。验证您的签名
步骤一:从签名头中提取时间戳和签名
,
作为分隔符,拆分并提取签名的元素。然后用=
号来连接元素的前缀和值。t
对应的值是时间戳,v1
对应的是签名。t=1687845304,v1=6fdfb9c357542b8ee07277f5fca2c6f728bae2dce9be2f91412f4de922c1bae4
步骤二:准备 signed_payload
字符串
signed_payload
字符串是通过连接以下内容创建的:.
signed_payload
** 字符串1687845304
+.
+JSON payload
1687845304.{
"id": "evt_1NNUrjL6kclEVx6Mb1x5dKJ3",
"object": "event",
"api_version": "2022-11-15",
"created": 1687845303,
"data": {
"object": {
"id": "prod_O9oUVgsSaordCT",
"object": "product",
"active": true,
"livemode": true,
"name": "test",
"type": "service",
"livemode": true,
"pending_webhooks": 1,
"type": "product.created"
}
步骤三:生成本地签名
webhook.secret
得到您webhook的密钥。这个whsec_
将作为生成 HMAC字符的Keysigned_payload
字符串生成 HMAC字符的Message
步骤四:对比本地签名和报头中的签名
created
对应的时间戳和报头中的签名中时间戳之间的差值,然后判断差值是否在您的容差范围内。Modified at 2024-07-09 09:42:24