微信公眾號開發(一)基礎配置

謎一樣的Coder發表於2018-09-03

前言

組長喊讓熟悉微信公眾號開發,學完了走遍天下都不怕,還說什麼學好了,年薪百萬不是夢......(心裡各種呵呵呵呵呵呵呵呵呵)

老大都發話了,開整唄。

需要準備的東西

公眾號開發需要準備的東西,各種註冊,各種繫結賬號,這裡就不解釋了,其實準備起來遇到的問題比較少,主要就是雲伺服器的購買。至於為啥要購買雲伺服器,這個是微信公眾號的訊息傳遞決定的。具體後面再補充。

各種註冊完成之後,在微信公眾平臺中左側最底部,進入基本配置,然後開始伺服器的配置

最最扎心的就是這裡了,伺服器配置遇到了token驗證失敗的問題,網上一些資料不全,在驗證token的時候,騰訊會傳送一個get請求到你指定的伺服器驗證token,並不是只要隨便輸入一個就可以了。

可惜沒有早一點參考官網上的接入示例,官網上的接入示例是用php寫的,組長提供的伺服器中正好有一個現成的php檔案,只需要修改即可。

php檔案如下(這個是網上copy,畢竟php讓我寫,我還真寫不出)

<?php
/**
  * wechat php test
  */
 
//define your token
define("TOKEN", "liman2018");
$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;
		}
	}
}
 
?>

然後在配置伺服器的頁面輸入php檔案中相同的token即可

之後token驗證成功。

今天這個問題耽誤了很久,明天就可以開始浪了,各種姿勢玩微信公眾號開發。 

相關文章