您的位置:首页 > 移动开发 > 微信开发

微信测试号的URL和Token原理

2015-10-31 19:06 363 查看
在我们提交URL和Token信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: Signature(微信加密签名)、timestamp(时间戳)、nonce(随机数)、echostr(随机字符串)。

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

$_GET是php的全局数组变量,存储了GET请求携带的变量名称和值,通过该变量我们就能获取微信服务器中携带的上述四个参数的值了。

/**
* 验证URL来源是否正确
* @return boolean
*/
private function checkSignature()
{
//获取参数值
$signature = $_GET['signature'];
$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];

$params = array($this->_token, $timestamp, $nonce);    //按照字典顺序排序将三个参数排序
sort($params);

$sig = sha1(implode($params));            //将数组拼接成字符串在shal加密

return $sig == $signature;               //判断获取的签名是否和本地计算的相同
}

/**
*检查签名
*如果正确,将微信服务器中的echostr字段原样返回
*/
 private function sourceCheck()
{
if ($this->checkSignature()) {
$echostr = $_GET['echostr'];
echo $echostr;
}else{
throw new Exception('Wrong Signature');
}
exit(0);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 测试