微信公衆平臺基本配置會出現的兩個錯誤全讓我碰見 了
1.先說第一個,url請求超時,本來以爲是因爲我的域名剛剛備案成功還不超過24小時,所以出現這個問題,等24小時之後我才發現問題沒這麼簡單。問題出在域名填寫格式上面了:我本來寫的是https://modige.top/api.php,後來有一次寫成http://modige.top/api.php就不再報url請求超時的錯誤了,原來這系統它只認http不認https
2.本以爲問題到此爲止,沒想到換了個錯誤:Token認證失敗。在網上找了八百篇博客也沒能弄成,直到把認證文件裏的代碼改成如下
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "modige");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest{
public function valid(){
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg(){
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword )){
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature(){
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
這裏要注意,語句
define("TOKEN", "modige");裏的modige需要自己設置,如果不想該就在基本配置裏的token選項中填入modige
下附認證全過程。
1.進入微信公衆平臺官網(https://mp.weixin.qq.com/),登陸,進入左下角的基本配置一欄
2.把上面的代碼複製下來,新建一個名爲api.php的文件,粘貼進去,把這個文件上傳到自己的服務器根目錄中,也就是域名所在 的根目錄
3. 把 http://自己的域名/api.php放在 服務器地址(URL) 一欄,在Token一欄中,若是原封不動的粘貼的上面的代碼,就填 modige ,若自己設置了,則填入自己的, 消息加解密密鑰 一欄,選擇自動生成即可。
4.消息加密方式隨意選擇
ps:有時候配置正確也會顯示“token 驗證失敗”,這時候要多試幾次