微信開發系列教程(二)

oooooooo發表於2014-04-23

成為微信公眾賬號開發者後,當然想讓別人關注自己的賬號時給出一些歡迎語或者其他的友好性提示.根據官方文件,使用者第一次關注公眾賬號會觸發一個subscribe(訂閱)事件,於此相對於的是使用者取消關注公眾賬號時觸發一個unsubscribe(取消訂閱)事件.
首先,使用者首次關注公眾賬號微信傳送至URL(開發者模式所填UEL,以後文章中如未特意註明都是指開發者模式所填URL)的XML文件如下

<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(取消訂閱)事件時,刪除使用者的資料

相關文章