近期,公司更换业务域名,旗下公众号,小程序,微信支付关联的旧域名都需要更换成新域名。
在配置到微信服务器的时候一直提示 “token 验证失败”,于是通过
在线接口 【https://mp.weixin.qq.com/debug】调试检查了一遍,发现并没有错误提示
说实话微信的错误提示实在太笼统,没办法。只能从头开始排查
1,先测试下微信发来的验证消息是否顺利到达服务器
我的PHP版本是 7.0.7,所以用的是file_get_contents("php://input")获取的原始流信息,打印到了request.log日志里。
点击验证,查看日志,空空如也,之前的业务一直都是这样截取数据的不应该为空呀。
于是继续翻看开发文档,发现一条重要的信息【提交验证时,微信服务器发送的是GET请求而非只读流数据】,所以file_get_content("php://input") 是获取不了验证信息的。
于是有了对应的解决方案,把file_get_content("php://input")改成$_SERVER['QUERY_STRING']
点击提交,验证成功,日志也有了内容。
以为就此完事就想的简单了,验证完TOKEN后 $_SERVER['QUERY_STRING'] 就失效了,需要替换成 file_get_content("php://input") ,才能获取正常数据流进行操作,这也是开发者容易掉坑里的地方。
吐槽:微信爸爸不能把验证token和正常业务请求合并成一种请求方式吗?即使不能,也给个文档提示下呗,这完全是摸石头过河,难受至极,于是有了这篇文章,希望后来者不再被这个不大不小的坑绊倒
网友评论