一次企业微信回调丢失的排查记录

📅 2026/8/3 3:28:22 👁️ 阅读次数 📝 编程学习
一次企业微信回调丢失的排查记录


前几天在调企业微信客户事件时,后台偶尔收不到回调。最开始怀疑是企业微信接口不稳定,但同一时间其他事件又能正常进来,问题明显不在平台本身。继续查日志后发现,请求已经到达Nginx,只是PHP没有留下业务记录。

我先检查了回调地址、Token和EncodingAESKey,配置都没问题。随后把原始请求体、请求头和解密结果分别写入临时日志,才发现部分请求在读取php://input后,又被后面的公共方法读取了一次。第二次拿到的内容为空,验签自然失败,但原来的代码只返回了一个统一错误,没有记录具体原因。

修复时没有直接改业务逻辑,而是把原始请求体在入口处读取一次,保存到变量,再传给验签、解密和事件解析模块。与此同时,把回调处理拆成“接收、验签、解密、去重、入库”几个步骤,每一步都记录状态和耗时。重复事件则根据事件ID和企业微信用户标识做唯一判断,避免平台重试时重复写入。

这次排查让我更确定,第三方回调最怕的不是报错,而是错误信息太模糊。只要入口日志、原始报文和处理步骤能对上,很多看似随机的问题,其实都能很快定位。
#企业微信开发 #PHP接口 #回调排查 #后端开发