Skip to main content
启润支付的每个 Webhook 请求都包含一个加密签名,你应该验证此签名以确保请求是真实的且未被篡改。

签名算法

启润支付使用 HMAC-SHA256 对 Webhook 载荷进行签名:
签名和时间戳通过 HTTP 请求头发送:

验证步骤

1

提取请求头

从请求头中读取 X-Kyren-SignatureX-Kyren-Timestamp
2

检查时间戳

验证时间戳在当前时间的 5 分钟(300000 毫秒)以内。这可以防止重放攻击。
3

计算期望签名

拼接 timestamp + "." + 原始请求体,然后使用你的 Webhook 密钥计算 HMAC-SHA256。
4

比较签名

将计算出的签名与请求头中的签名进行比较。使用常量时间比较以防止时序攻击。

代码示例

Node.js

Python

Go

重要安全注意事项:
  • 处理事件前必须先验证签名
  • 使用常量时间比较函数以防止时序攻击
  • 拒绝时间戳超过 5 分钟(300000 毫秒)的请求以防止重放攻击
  • 使用原始请求体进行签名验证(JSON 解析之前)