微信回复汇总

微信回复汇总

wx_sample.php

......
    public function responseMsg(){
        //get post data,May be due to the different environments
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        //extract post data
        if(!empty($postStr)){//如果用户端发来的文本内容不为空

            /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
                 the best way is to check the validity of xml by yourself */
            //安全防御用的
            //对于PHP,由于simplexml_load_string 函数的XML解析问题出现在libxml库上
            libxml_disable_entity_loader(true);
            //是PHP中一个解析XML的函数,参数SimpleXMLElement为新对象的类
            //LIBXML_NOCDATA表示将CDATA设置为文本节点,CDATA标签中的文本XML不进行解析
            //返回类 SimpleXMLElement 的一个对象,该对象的属性包含 XML 文档中的数据。如果失败,则返回 false。
            $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
            //将微信用户端的用户名(OpenID)赋予变量$fromUsername
            $fromUsername = $postObj->FromUserName;
            //将你的微信公众号ID赋予变量$toUsername
            $toUsername = $postObj->ToUserName;
            //参数ToUserName,FromUserName,CreateTime,MsgType,Event,EventKey
            $type = $postObj->MsgType;
            //事件类型,subscribe订阅,unsubscribe取消订阅,CLICK自定义菜单点击事件
            $customevent = $postObj->Event;
            //纬度
            $latitude = $postObj->Location_X;
            //经度
            $longitude = $postObj->Location_Y;
            //将用户微信发来的文本内容去掉空格后赋予变量$keyword
            $keyword = trim($postObj->Content);
            //将系统时间赋予变量$time
            $time = time();

            //构建XML格式的文本赋予变量$textTpl
            //注意::XML中的格式为微信内容固定格式
            $textTpl = "<xml>
                            <!--微信目标方,%s表示要转换成字符的数据类型
                             CDATA表示不转义
                             <![CDATA[XXXX]]>过滤,防止XML里面嵌套HTML标签导致XML样式错乱
                              -->
                             <ToUserName><![CDATA[%s]]></ToUserName>
                             <!--微信来源方-->
                              <FromUserName><![CDATA[%s]]></FromUserName>
                              <!--系统时间-->
                              <CreateTime>%s</CreateTime>
                             <!--回复微信的信息类型-->
                             <MsgType><![CDATA[%s]]></MsgType>
                              <!--回复微信的内容-->
                              <Content><![CDATA[%s]]></Content>
                              <!--是否星标微信-->
                              <FuncFlag>0</FuncFlag>
                        </xml>";  

            //音乐回复
            $musicTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Music>
                                <Title><![CDATA[梁祝]]></Title>
                                <Description><![CDATA[交响乐]]></Description>
                                <MusicUrl><![CDATA[http://weixin1234.duapp.com/1.mp3]]></MusicUrl>
                                <HQMusicUrl><![CDATA[http://weixin1234.duapp.com/1.mp3]]></HQMusicUrl>
                            </Music>
                            <FuncFlag>0</FuncFlag>
                        </xml>";//构建音乐消息
            //图文回复
            $newsTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <!--单图回复-->
                            <ArticleCount>1</ArticleCount>
                            <!--多图回复-->
                            <ArticleCount>2</ArticleCount>
                            <Articles>
                            <item>
                                <Title><![CDATA[保险法司法解释二出台]]</Title>
                                <Description><![CDATA[对保险公司更加有利]]</Description>
                                <PicUrl><![CDATA[http://weixin1234.duapp.com/1.jpg]]></PicUrl>
                                <Url><![CDATA[http://www.chinacourt.org/article/detail/2013/06/id/1014893.shtml]]></Url>
                            </item>
                            <item>
                                <Title><![CDATA[保险法全文]]</Title>
                                <Description><![CDATA[对保险公司更加有利]]</Description>
                                <PicUrl><![CDATA[http://weixin1234.duapp.com/1.jpg]]></PicUrl>
                                <Url><![CDATA[http://www.chinacourt.org/article/detail/2013/06/id/1014893.shtml]]></Url>
                            </item>
                            <FuncFlag>0</FuncFlag>
                        </xml>";

            switch ($type) {//参数类型
                 //事件类型,subscribe订阅,unsubscribe取消订阅,CLICK自定义菜单点击事件
                case 'event':
                    if($customevent == "subscribe"){
                        $contentStr = "感谢您的关注\n回复1查看联系方式
                                      \n回复2查看最新资讯\n回复3查看法律文书";
                    }
                    break;
                //图片
                case 'image':
                    $contentStr = "图片很棒!";
                    break;
                //地理信息
                case 'location':
                    $contentStr = "你的纬度是{$latitude},经度是".$longitude;
                    break;
                //链接//Title,Description,Url
                case 'link':
                    $contentStr = "一个链接";
                    break;
                //文本
                case 'text':
                    //关键字分类
                    switch ($keyword) {
                        case '1':
                            $contentStr = "联系方式";
                            break;
                        case '2':
                            $contentStr = "最新资讯";
                            break;
                        case '3':
                            $contentStr = "31离婚协议\n32租房合同\n33交通事故协议书";
                            break;
                        default:
                            $contentStr = "hi";
                    }
                    break;
                //其余类型
                default:
                    $contentStr = "此功能尚未开发";
            }

            //回复文本信息类型为text型,即文本
            $msgType = "text";
            //将XML格式中的变量分别赋值
//          //sprintf()字符串格式化命令,主要功能是把格式化的数据写入某个字符串中
//          //将textTpl后面的参数信息写入这个xml字符串中
            $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);

            //回复音乐信息类型为music
            $msgType = "music";
            $resultStr = sprintf($musicTpl,$fromUsername,$toUsername,$time,$msgType);

            //图文回复
            $msgType = "news";
            $resultStr = sprintf($newsTpl,$fromUsername,$toUsername,$time,$msgType);

            //输出回复信息,即发送微信
            echo $resultStr;
        }else{//如果用户端发来的文本内容为空
            echo "";
            exit;
        }
    }

......
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章