成为微信公众帐号开发者后,固然想让别人关注本身的帐号时给出一些欢迎语或者其余的友好性提示.根据官方文档,用户第一次关注公众帐号会触发一个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