微信公众平台官方文档:文档
提交服务器配置之后,微信会向填写的URL发送一个get请求,这个请求有四个参数:signature(加密签名),timestamp(时间戳),nonce(随机数),echostr(随机字符串)。
服务器接收到这个请求之后,开始处理:
官方文档给出检验signature的PHP代码示例:
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
这段代码就算没接触过PHP的程序员也都看得明白:先得到微信传过来的参数,然后进行字典排序,将三个参数拼接成一个字符串进行sha1加密,加密后得到的字符串和传过来的signature对比。。
servlet:
private String TOKEN = "xuqing270400";
(填写服务器配置信息时的Token(令牌)必须和服务器定义的token一样,不然验证无法通过)
验证通过之后将echostr返回:
response.getWriter().println(echostr); // 如果检验成功输出echostr,微信服务器接收到此输出,才会确认检验完成