在微信公众平台转为开发者模式之后,我们就需要在服务器配置中填写我们自己的服务器信息。需要的部分主要为服务器地址以及令牌(token)。但是这个服务器地址URL是需要校验的,在微信开发手册里面说明了如何进行校验。接下来我用php来实现怎么进行实现。你所需要做的就是
- 在你的服务器添加一个index.php来确保是这个php文件接收到微信服务器发送的GET数据请求
- 然后在下面代码中对token更改为你所填写的token
- 然后校验成功之后,把这个文件删除,编写新的index.php,用于与微信服务器交互,比如自动回复之类的,可以看我的其他博客。
<?php
//注释、代码维护:2ZW
// signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
// timestamp 时间戳
// nonce 随机数
// echostr 随机字符串
// 开发者通过检验signature对请求进行校验(下面有校验方式)。
// 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
//获得通过GET请求发送的微信服务器校验数据
$signature=$_GET["signature"];
$timestamp=$_GET["timestamp"];
$nonce=$_GET["nonce"];
// 1)将token、timestamp、nonce三个参数进行字典序排序
// 2)将三个参数字符串拼接成一个字符串进行sha1加密
// 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
//填写在微信公众平台服务器配置中填写的token
$token='你的微信公众平台服务器配置令牌(token)';
//第一部分:字典排序
// 1)组合成一个数组
// 2)对数组元素进行升序排序
$tmpArr = array( $token,$timestamp,$nonce );
sort( $tmpArr );
// 第二部分:sha1加密
//把数组元素组成字符串
$tmpStr = implode( $tmpArr );
//sha1加密-安全哈希加密-Secure Hash Algorithm:不可逆
$tmpStr = sha1( $tmpStr );
//第三部分:到这里我们已经完成了校验的前两部分,排序以及加密,剩下的就是把加密完的本地字符串与get的微信服务器字符串进行比较
if($signature==$tmpStr){
//如果校验正确,则原样返回echostr参数内容
echo $_GET["echoStr"];
}
else{
//反之不进行返回参数
exit;
}
?>