配置服务器Token验证方法
<?php $signature = isset($_GET["signature"])?$_GET["signature"]:''; $signature = isset($_GET["msg_signature"])?$_GET["msg_signature"]:$signature; //如果存在加密验证则用加密验证段 $timestamp = isset($_GET["timestamp"])?$_GET["timestamp"]:''; $nonce = isset($_GET["nonce"])?$_GET["nonce"]:''; $token = 'token'; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); $echostr = isset($_GET["echostr"])?$_GET["echostr"]:''; // $data = $signature .' === '.$tmpStr; // file_put_contents('./log.txt', $data); //打印相关数据到log.txt文件中,调试用 if( $tmpStr == $signature ){ die($echostr); }else{ die('no access'); }
微信官方文档Token验证说明
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示: 参数 描述 signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 timestamp 时间戳 nonce 随机数 echostr 随机字符串 开发者通过检验signature对请求进行校验(下面有校验方式)。 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 校验流程如下: 1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 4) 原样返回echostr参数内容(微信服务器接收到开发者服务器返回的echostr之后则认为校验成功)
宠物免费领养小程序,欢迎来踩