微信公众平台接口开发-验证机制

微信公众平台接口开发-验证机制

一、注册微信公众平台账号

注册地址:https://mp.weixin.qq.com/cgi-bin/readtemplate?t=wxm2-realname-reg&lang=zh_CN
登陆地址:https://mp.weixin.qq.com/
二、开启开发模式,接口文件验证代码:
开发模式的验证过程其实就是将GET的参数echostr值返回,最简单的就是
php:echo $_GET['echostr'];
asp:Response.Write(Request("echostr"))
这里需要注意到的是,微信公众平台接口所使用的编码为UTF-8。这种方式与配置的TOKEN无关,即使你随便填写一个TOKEN值也可以成功验证。
 
完整的验证机制
公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:
参数 描述
signature 微信加密签名
timestamp 时间戳
nonce 随机数
echostr 随机字符串
 

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。

signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

加密/校验流程:

1. 将token、timestamp、nonce三个参数进行字典序排序

2. 将三个参数字符串拼接成一个字符串进行sha1加密

3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

加入微信官方提供的验证机制后,验证代码如下:
public function checkSignature(){
$signature = $_GET['signature']; //微信加密签名
$timestamp = $_GET['timestamp']; //时间戳
$nonce = $_GET['nonce']; //随机数
$echostr = $_GET['echostr']; //随机字符串
$token = TOKEN;
$tempArr = array($token,$timestamp,$nonce);
sort($tempArr);
if($signature ==sha1(implode($tempArr))){
echo $echostr;
}else{
exit();
}
}

你可能感兴趣的:(php)