企业微信 qiwei callback fix-ready 方案
推荐判断
更可能的修复路径是:store 应补最小企业微信 GET URL 验证回调实现,不是直接认定后台配错 URL。
原因是 Apifox/OpenAPI 已存在两个精确接口,参数也符合企业微信 URL 验证形态;告警路径与契约完全一致;但主要部署分支均未实现 Qiwei.php。
分支决策
| 后台核对结果 | 动作 |
|---|---|
| URL 归属智慧食堂 store,业务需要保留 | 新建任务分支,补 GET URL 验证实现 |
| 历史测试、错误应用、错误域名、无人能说明用途 | 删除或改正企业微信后台配置 |
| URL 应指向另一个服务 | 改后台 URL 到正确服务,store 不实现 |
删除配置核对项
- 确认后台入口类型:服务商数据回调、企业应用数据回调、通讯录回调、客户联系回调、消息接收回调或其他。
- 确认应用/服务商标识:应用名称、AgentId、SuiteId、CorpId。
- 确认当前回调 URL 是否精确为
/api/qiwei/callback或/api/qiwei/callbackQW。 - 确认 URL 域名是否为 store 域名,而不是其他服务或历史测试域名。
- 确认是否有业务 owner 需要接收企业微信事件。
最小实现范围
只实现 GET URL 验证,不处理 POST 事件消息,不新增后台页面,不提交 Token、EncodingAESKey 或 CorpSecret。
建议新增:
application/api/controller/Qiwei.phpapplication/api/service/QiweiCallback.phpapplication/route.php中显式 GET 路由
路由草案
// 企业微信 URL 验证回调
Route::group('api/qiwei', function() {
Route::get('/callback', 'api/Qiwei/callback');
Route::get('/callbackQW', 'api/Qiwei/callbackQW');
});
验收命令
php -l application/api/controller/Qiwei.php
php -l application/api/service/QiweiCallback.php
php -l application/route.php
php tests/manual/qiwei_callback_verify_fixture.php
接口契约同步
- 将
msg_signature、timestamp、nonce、echostr标为 required。 Access-Tokenheader 不应作为企业微信回调必需项。- 响应按实际实现改成字符串类型。
- POST 事件处理另立任务或标记 not-automatable。
风险边界
- 当前方案只解决 GET URL 验证和告警,不代表企业微信事件业务已完成。
- SuiteId 与 CorpId 不能混用。
- 不得保存真实密钥、完整生产请求体或未脱敏日志。
- store 当前工作区有大量既有删除状态,实现时必须用独立分支或 worktree。