成爲微信公衆帳號開發者後,固然想讓別人關注本身的帳號時給出一些歡迎語或者其餘的友好性提示.根據官方文檔,用戶第一次關注公衆帳號會觸發一個subscribe(訂閱)事件,於此相對於的是用戶取消關注公衆帳號時觸發一個unsubscribe(取消訂閱)事件.
首先,用戶首次關注公衆帳號微信發送至URL(開發者模式所填UEL,之後文章中如未特地註明都是指開發者模式所填URL)的XML文檔以下php
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> //toUser 開發者微信號 <FromUserName><![CDATA[FromUser]]></FromUserName> //發送方賬號 也就是該用戶的**OpenID** <CreateTime>123456789</CreateTime> //消息建立時間 (整型) <MsgType><![CDATA[event]]></MsgType> //消息類型,event <Event><![CDATA[subscribe]]></Event> //事件類型,subscribe(訂閱)、unsubscribe(取消訂閱) </xml>
接收到該XML文檔以後,使用PHP進行解析:數據庫
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信端的XML文檔 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $MsgType = $postObj->event; $Event = $postObj->subscribe;
解析完成後,獲得消息的類型爲event,事件類型爲subscribe,可知是用戶第一次關注該公衆帳號,發送被動響應消息,被動響應消息的類型和對應XML文檔格式見:發送微信被動響應消息,這裏以回覆文本消息爲例,回覆被動響應文本消息XML文檔以下:微信
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> //即上面解析獲得的 $fromUsername 用戶Openid <FromUserName><![CDATA[fromUser]]></FromUserName> //即上面解析獲得的$toUsername 開發者帳號 <CreateTime>12345678</CreateTime> //使用time()函數 <MsgType><![CDATA[text]]></MsgType> //標識回覆的消息類型爲 text <Content><![CDATA[]]></Content> //回覆的內容 </xml>
在模板中能夠使用佔位符(%s),函數
$textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $msgType = "text"; $contentStr = "hello world"; //這裏的$fromUsername, $toUsername 對應上文中解析出的參數 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr;
同時在用戶關注時,能夠將用戶的必要數據存入數據庫.在用戶取消關注觸發unsubscribe(取消訂閱)事件時,刪除用戶的數據post