账户中心 我的话题 我的评论 退出系统

用户关注、取消关注接口实现

交互原理

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的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;
            }
        }
    }
}