微信回覆彙總

微信回覆彙總

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;
        }
    }

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