Appearance
问题描述
在微信公众平台(mp.weixin.qq.com)配置【基本配置】 -> 【服务器配置(URL与Token)】时,点击提交后微信提示: Token验证失败 或 请求URL超时。
根本原因
微信公众平台验证服务器地址的原理是:微信服务器向填写的 URL 发送一个带有 signature、timestamp、nonce、echostr 四个参数的 GET 请求。 EBAOZU 后端接收请求后,利用后台配置的 Token 进行字典序 SHA1 签名计算并与 signature 进行比对。若比对一致则将 echostr 原样输出给微信服务器,完成接入验证。
若验证失败,通常由以下原因造成:
- Token 不一致:EBAOZU 后台保存的 Token 与微信公众平台填写的 Token 不一致。
- 配置保存顺序错误:未先在 EBAOZU 后台保存 Token,就直接去微信公众平台提交验证。
- URL 协议/路径错误:协议(HTTP/HTTPS)写错,或缺少
/api/wechat/serve路径。 - 端口限制:微信服务器仅支持 80 端口(HTTP)或 443 端口(HTTPS),不支持非标准端口。
- 防火墙拦截:宝塔防火墙、云厂商安全组或 CDN 拦截了微信服务器的来源 IP 或将 GET 请求拦截返回了 403/验证码页面。
标准配置与排查步骤
检查配置顺序
- 先登录 EBAOZU 平台总后台 -> 【设置】 -> 【系统设置】 -> 【公众号配置】。
- 填写 Token (令牌)(例如设置为 32 位的随机英文字符串),同时填写 AppID 和 AppSecret。
- 点击【保存】使后端配置生效。
- 然后再前往微信公众平台填写相同的 URL 和 Token 并提交。
核对服务器 URL 与端口
微信公众平台填写的服务器地址(URL)必须为:
text
https://你的域名/api/wechat/serve- 若站点已开启强制 HTTPS,URL 必须以
https://开头。 - 不得包含任何自定义端口号(如
:8888或:20697)。
本地与浏览器连通性测试
在浏览器直接访问该 URL(例如 https://你的域名/api/wechat/serve):
- 正常响应:通常页面输出空白,或响应特定签名异常文本(表示请求已顺利到达后端 PHP 控制器)。
- 异常响应:若出现
502 Bad Gateway、404 Not Found、500 Internal Server Error,说明 Swoole 服务未运行或反向代理未正确配置,需先排查站点服务。
检查防火墙与防红/防盗链配置
若站点开启了 CDN、WAF、宝塔网站防篡改或 Nginx 级别的人机验证,微信服务器的 GET 校验请求可能会被拦截。请临时将微信服务器 IP 加入白名单或关闭拦截规则后再次重试提交。