微信接入事件回調的時候,用的是微信官方的代碼,但是就是無法通過驗證,實在是想罵罵騰訊寫文檔的人
我的代碼如下:
//回調鑑權
public function check_signature()
{
$param = $this->request->get();
$signature = $param["signature"];
$timestamp = $param["timestamp"];
$nonce = $param["nonce"];
$token = config('wx_trade_plugin')['token'];
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
$param['tmpStr'] = $tmpStr;
if ($tmpStr == $signature ) {
echo $param["echostr"]);
} else {
echo 'error';
}
}
思來想去還是覺得沒毛病,於是我自己用postman測試,也看不出任何問題
終於在試了很多次之後,我將代碼改成這樣子,神奇的通過了,心中萬馬奔騰!!!
//回調鑑權
public function check_signature()
{
$param = $this->request->get();
$signature = $param["signature"];
$timestamp = $param["timestamp"];
$nonce = $param["nonce"];
$token = config('wx_trade_plugin')['token'];
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
$param['tmpStr'] = $tmpStr;
//重點
header("Content-type: text/html; charset=utf-8");
if ($tmpStr == $signature ) {
//重點
echo htmlspecialchars($param["echostr"]);
} else {
echo 'error';
}
}