1. 程式人生 > >微信公眾平臺開發之資料傳輸過程

微信公眾平臺開發之資料傳輸過程

當用戶發一條訊息到微信公眾號,該公眾號會返回相應的訊息給使用者,那麼這些訊息是經過什麼過程才返回到使用者的微信裡呢。
其實使用者傳送訊息開始,主要經過5個過程:
1、使用者傳送訊息傳輸到微信伺服器
2、微信伺服器將xml格式的資料傳輸到開發者設定的伺服器。
3、開發者解析xml資料並進行相應的處理,然後將返回資料封裝成xml格式。
4、開發者的伺服器返回資料給微信伺服器。
5、微信伺服器將資料返回給使用者。
如下圖:
這裡寫圖片描述

個人的伺服器處理資訊步驟如下:
1、獲取微信伺服器推送過來的post資料(xml格式)
2、解析xml資料包
3、設定回覆模板
4、封裝訊息
5、想微信伺服器推送訊息
程式碼如下(php為例):

//$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];//1,獲取到微信推送過來post資料(xml格式)
$postArr = file_get_contents("php://input");//5.6版本開始摒棄HTTP_RAW_POST_DATA這個全域性變數,注意了
if (!empty($postArr)){
    $postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);//2、解析xml資料包
    //使用者的openid
    $fromUserName = $postObj->ToUserName;
    $toUserName   = $postObj->FromUserName;
    $createTime = time();
    $msgType = trim($postObj->MsgType);//使用者發來的訊息型別
    $content = $postObj->Content;//使用者發來的訊息內容(注意只是介紹接收text型別,其他型別如event還有其他資料)
    //3、設定回覆模板
    $template ='<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[%s]]></Content>
        </xml>';
    $responMsg='您發來的訊息是'.$content;
    $info =sprintf($template,$toUserName,$fromUserName,$createTime,$responMsg);//4、封裝訊息
    echo $info;//5、返回訊息
}

總結:
以前瞭解了一下微信開發,做落了筆記,剛翻出來,希望不會過時。
此處簡單地實現了一個處理微信伺服器傳過來的資料的處理過程,具體並沒有更多複雜的程式碼,希望對出入微信開發坑的朋友有所幫助。
更多介面移步到官方文件