因为最近微信更新了,然后导致公众号之前一些功能出现没法正常响应的情况。刚开始没注意,以为只是暂时的,后来忍不下去了,百度之,才知道原来是检查签名那个函数里面的排序算法更新了。
这是原来的排序算法的调用:
sort($tmpArr);
需要改成:
sort($tmpArr, SORT_STRING);
官方代码里面完整的检查签名的函数:
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 ){
<span style="white-space:pre"> </span>return true;
}else{
return false;
}
}