Square中subscription.created事件重复触发Webhook问题咨询
Square Webhook subscription.created 重复触发的排查方向
以下是几个常见原因及对应排查步骤:
- 重复订阅同一事件:登录Square开发者后台,检查Webhook配置列表,确认是否在当前应用环境(沙盒/生产)下重复添加了
subscription.created事件的订阅项。Square允许同一事件多次绑定到同一端点,每添加一次就会触发一次投递。 - 未及时返回合法响应:Square要求Webhook端点必须在3秒内返回
200 OK的响应。如果第一次投递时端点超时、返回非200状态码,Square会自动触发重试,导致二次触发。建议:- 优先返回响应,再异步处理业务逻辑(比如把事件数据存入队列后立刻返回200)
- 查看端点的访问日志,确认是否存在超时或错误返回的情况
- 通过事件ID区分重试与重复事件:查看两次触发的
event_id字段:- 如果两次
event_id相同,说明是Square的重试机制导致,重点排查响应问题 - 如果
event_id不同,说明是两个独立的订阅创建事件,需要检查业务代码是否重复调用了订阅创建API
- 如果两次
- 环境配置混淆:确认是否在沙盒和生产环境都配置了指向同一端点的
subscription.createdWebhook。如果测试时同时在两个环境操作,或者误将生产环境的事件投递到测试端点,也可能出现重复触发的情况。 - 查看Square Webhook日志:在开发者后台的Webhook页面找到日志记录,里面会显示每次投递的状态、错误原因(如果有),根据日志可以直接定位二次触发的原因。
内容的提问来源于stack exchange,提问作者Alun Paranggi Wicaksono
相关产品推荐
相关产品推荐

