一 、初步认识微信公众号
查看微信指南:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
第一步:填写服务器配置
注意:1)URL必须为服务器上的路径;
2)token是随机写得
第二步:验证消息的确来自微信服务器
注意:1)token必须和代码中的token一样;
2)代码:控制层:
参数 | 描述 |
---|---|
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
检验signature的PHP示例代码:
public function valid() { // $wechatObj = new Mweixin(); // $wechatObj->responseMsg(); //valid signature , option if($this->checkSignature()){//通过微信token验证代码 $echoStr =Request::instance()->param("echostr"); ob_clean();//tp5微信token验证失败的原因加上这句话就好了 echo $echoStr; exit; } } private function checkSignature() { $signature = Request::instance()->param("signature"); $timestamp = Request::instance()->param("timestamp"); $nonce = Request::instance()->param("nonce"); $token = "weixin2018"; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } }当代码写完并且提交配置文件后;结果是token 提交成功就可以了;这段代码既可以注释,不需要了; 注意:只要是配置都要走这块。