设备指纹
使用控制台Webhooks

Webhook 故障排查

Webhooks: Webhook 故障排查

如果需要按错误现象快速定位原因,也可以直接查看Webhook 投递失败。

连接超时

检查:

  • 目标域名是否可以从公网访问。
  • 服务端是否在规定时间内返回响应。
  • 防火墙、安全组或 WAF 是否拦截请求。
  • DNS 是否能稳定解析。
  • 服务是否因冷启动或数据库连接过慢而超时。

DNS 或 TLS 问题

检查目标域名解析、证书有效期、证书链和 TLS 配置。不要用本地地址、测试内网地址或仅在公司网络可访问的地址作为生产目标。

3xx、4xx 或 5xx

  • 3xx:检查是否配置了跳转。建议直接使用最终 HTTPS 地址。
  • 4xx:检查路由、Token、请求方法和服务端权限。
  • 5xx:查看目标服务错误日志和 Response Body,确认应用异常或依赖服务故障。

Webhook 接收接口应尽快完成校验并返回结果。耗时较长的业务处理可以放入异步队列。

Token 校验失败

检查:

  • 控制台 Token 与服务端配置是否一致。
  • Authorization 请求头解析方式是否正确。
  • 是否误把 Public API Key 当成 Bearer Token。
  • Token 是否已经更新但服务端仍使用旧值。
  • 是否有多个环境使用了不同配置。

不要在错误响应中返回完整 Token 或内部校验细节。

重复事件

使用 Delivery ID 或 Request ID 做幂等键。重复收到同一标识时,返回成功并跳过重复业务动作。特别是发券、扣款、修改账户状态等不可重复操作,必须在数据库层做唯一约束或状态检查。

重试和投递顺序

当前版本不会自动重试失败投递,也不保证跨事件的严格投递顺序。你的服务端应:

  • 允许同一事件重复到达。
  • 不依赖事件严格按发生顺序到达。
  • 使用事件时间和业务状态判断是否可以处理。
  • 对无法处理的 Payload 记录 Request ID 和 Delivery ID。
  • 通过投递日志确认最终状态。

如果需要补偿失败事件,请在你的服务端保存 Delivery ID、Request ID 和处理状态,再根据业务规则发起补偿或人工重放。GEELAB 当前版本不会自动把失败任务放回队列。

不会发起 HTTP 的情况

以下情况会在平台发出请求前失败,因此你的目标 URL 不会收到请求:

  • 目标地址解析到受限地址,或 URL 不符合安全规则。
  • 平台暂时无法读取这条投递所需的事件内容。
  • Webhook 数据无法解析、版本不支持或缺少必要内容。

这类结果会在投递日志中显示对应失败状态。若日志中没有可用的结果明细,请同时记录本地接收服务的日志,并提供 Delivery ID 或 Request ID 联系支持。