一般情况下可能是你的返回值不对 返回的应该是微信传来的echostr变量 建议在输出时 使用一下 ob_clean();清楚一下之前的信息输出
另外一个就是token要与微信公众平台保持一致
1. 首先在确定接口和参数没问题的情况下(可以打个日志记录一下)
2. 主要代码如下
// 可以自定义 符合token规范即可 同时与微信公众平台对应
const TOKEN = 'nidetoken';
/**
* 用于进行微信测试
*/
public function index()
{
trace($_GET, 'error');
if ($this->checkSignature() === true)
{
// 防止其他输出
ob_clean();
// 要注意返回的是echostr 而不是 true或者false
return $_GET["echostr"];
}
return false;
}
/**
* 验证签名
*/
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = self::TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}