交互原理
用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。
关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
推送XML数据包示例:
<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[FromUser] ]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType>< ![CDATA[event] ]></MsgType> <Event>< ![CDATA[subscribe] ]></Event> </xml>
参数说明:
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 消息类型,event |
Event | 事件类型,subscribe(订阅)、unsubscribe(取消订阅) |
核心代码
<?php class wxController extends grace{ public function index(){ $gracewechat = tool('graceWeChat'); //获取消息 $gracewechat->getMsg(); //判断消息类型为 event [事件] 类型 if($gracewechat->msgType == 'event'){ switch($gracewechat->event){ //关注 case 'subscribe': //获取用户信息 $user = $gracewechat->getUser($gracewechat->openId); $gracewechat->reTextMsg($user['nickname'].'您好,感谢关注 ^_^'); //您可以使用数据库记录用户信息 //取消关注 case 'unsubscribe': //取消关注代码..... //可以在数据库内改变用户关注的状态 break; } } } }