配置
在网关配置中设置您的 Webhook 端点 URL 和共享密钥:webhook-secret 用于计算每个 Webhook 负载中的 sign 字段,使您能够验证通知确实来自您的网关。
负载格式
每个 Webhook 回调都是一个POST 请求,JSON 体遵循 NotifyPayload 结构:
| 字段 | 类型 | 描述 |
|---|---|---|
sign | string | 用于负载验证的 HMAC-SHA256 签名 |
timestamp | integer | 通知生成时的 Unix 时间戳 |
nonce | string | 唯一事件标识符 |
notifyType | string | 事件类型(参见事件类型) |
data | object | 事件负载(NotifyOrder 对象) |
示例负载
签名验证
使用您的webhook-secret 验证 Webhook 签名:
算法
- 将
data对象(负载中的data字段)序列化为紧凑 JSON。 - 计算
HMAC-SHA256(data_json, webhook_secret)。 - 转换为小写十六进制并与
sign字段比较。
Node.js
Python
重试策略
如果您的端点在 10 秒内未返回2xx 状态码,XPayLabs 会使用指数退避重试 Webhook:
| 尝试 | 延迟 |
|---|---|
| 第 1 次重试 | ~1 秒 |
| 第 2 次重试 | ~5 秒 |
| 第 3 次重试 | ~30 秒 |
| 第 4 次重试 | ~5 分钟 |
最佳实践
- 立即响应。 尽快返回
200,然后异步处理事件。 - 验证每个负载。 在处理 Webhook 之前始终检查 HMAC 签名。
- 使用
nonce去重。 存储已处理的 nonce 以处理至少投递一次的模式。 - 检查
notifyType。 根据通知类型路由事件以正确处理每个事件。

