define('TOKEN', '3FC50DEAED1083F162BB3D36FF053709');
//这个是TOKEN,我用的是一个字符串的MD5
$signature = $this->_request->getParam('signature', '');
//微信加密签名,可以用$_GET['signature']
$timestamp = $this->_request->getParam('timestamp', '');//时间戳
$nonce = $this->_request->getParam('nonce', '');//随机数
$echostr = $this->_request->getParam('echostr', '');//随机字符串
/*
* 加密/校验流程:
* 1. 将token、timestamp、nonce三个参数进行字典序排序
* 2. 将三个参数字符串拼接成一个字符串进行sha1加密
* 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
*/
$arr = array(TOKEN, $timestamp, $nonce);//组装参数
sort($arr);//字典排序
$str = implode($arr);//组装字符串
$sha1 = sha1($str);//sha1加密
if ($sha1 == $signature) {
echo $echostr;
}
官方接口例子:http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E6%8C%87%E5%8D%97#.E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A1.B9