服务器里接受到的get请求是:
//weixin/msg/index?signature=c7e61239e4b56e0adf7b6623b74fa6c61de24fcc&echostr=2019533780509753310×tamp=1512789272&nonce=3310232241
把它复制到浏览器,也确实能返回。
只是checkSignature 加密验证不通过。
我加了两个var_dump打印变量:
//加密验证 public function checkSignature(){ $signature = trim($this -> get("signature","")); $timestamp = trim($this -> get("timestamp","")); $nonce = trim($this ->get("nonce","")); $tmpArr = array(\Yii::$app->params['weixin']['token'],$timestamp,$nonce); sort($tmpArr); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); var_dump($tmpStr); var_dump($signature); exit(); if($tmpStr == $signature){ return true; }else{ return false; } }
结果:
明明get请求里有 signature 这个字段,但是没有获取
而且,$tmpStr打印出来的值,和服务器里日志的signature值并不匹配。
之前做的时候好像还没问题 ...... 不知道是哪改毁了吧.....