已经解决。 是域名备案的问题! 因为我之前换过服务器,造成了备案信息不对。 但是我一直在用这个域名做解析造成的问题。
使用阿里云ECS服务器,为啥会微信token验证失败?求帮助(附详细经历过程)系统:centos7.2 开发环境:宝塔配置的lnmp环境,php 5.6,nginx 1.14,mysql56 APPID: wx813f388cc8dadf5d 问题背景: 1.开始没有使用宝塔,单独配置的lnmp环境,使用测试号可以通过验证。 但是到了第二天正式配置的时候,一直验证失败,找不到原因。所以重置了服务器,安装了宝塔(为方便管理)。 2.在宝塔上配置了微擎,并使用自带的配置输入token,还是失败! 分析可能的问题:a)微擎配置问题,b)代码问题,c)服务器问题,d)微信问题(可能性最小) 实验过程: a)检查了每一项微擎的配置,测试了所有的变量,仍然不行,怀疑可能是微擎引擎底层问题。 b) 查看微擎api源码,未检查到有什么问题,怀疑可能当前版本代码有问题,遂替换api文件,使用网上发布的简单版验证代码进行测试 (中间自己插上了一段保存结果的代码,msg.txt 用来观察微信传过来的GET的值和代码运行状况) <?php /** * wechat php test */ //define your token define("TOKEN", "wx8888abcde");//此处的TOKEN就是接下来需要填在微信的配置里面的token,需要保持严格一致 $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); //将结果拦截下来,保存到msg.txt $myfile = fopen("msg.txt", "w") or die("Unable to open file!"); foreach ($_REQUEST as $key => $value) { fwrite($myfile, "Key: $key; Value: $value<br />\n"); } fwrite($myfile,"tmpStr:$tmpStr\n" ); if( $tmpStr == $signature ){ fwrite($myfile, "tmpStr == signature:True\n"); } fclose($myfile); //保存结果 if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?> 到微信公众平台进行接口配置,三种模式都尝试了,仍然验证失败!! [图片] 查看msg显示:[图片] 有数据读取到,证明服务器和微信都互相响应了是通的,且这里的输出和验证全都是正确的!微信就是无法验证痛过。 调用api测试:http://www.xxxxx.cn/api.php?signature=aa707fa3ba9911b6204bc144437fee5d65d5dcf9&echostr=6981532348412065663×tamp=1585386587&nonce=1967387071 [图片] 分析:这里没有任何格式输出错误,调用api也没有错误! 最后只能怀疑是服务器问题或者微信问题。 c) 排查服务器的问题,按从上到下的原则,先找朋友借服务器进行测试,上传了我上面原封不动的代码,到他服务器,进行测试。结果如下: [图片] 成功了!!?这一下彻底给我整懵了。 代码没问题,微信也没问题,域名也没问题,我这台阿里云服务器也没问题能访问,就是不成功?能给个解决方案吗? 难道微信拦截了数据?我实在想不通了,这个问题困扰了我一天了。
2020-03-28