zoukankan      html  css  js  c++  java
  • 微信公众平台开发入门教程(五)回复不同消息

    定义回复消息处理函数

    1、文本消息

        private function transmitText($object, $content, $flag = 0)
        {
            $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    <FuncFlag>%d</FuncFlag>
    </xml>";
            $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
            return $resultStr;
        }

    2、图文消息

        private function transmitNews($object, $arr_item, $flag = 0)
        {
            if(!is_array($arr_item))
                return;
    
            $itemTpl = "    <item>
            <Title><![CDATA[%s]]></Title>
            <Description><![CDATA[%s]]></Description>
            <PicUrl><![CDATA[%s]]></PicUrl>
            <Url><![CDATA[%s]]></Url>
        </item>
    ";
            $item_str = "";
            foreach ($arr_item as $item)
                $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['Picurl'], $item['Url']);
    
            $newsTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <Content><![CDATA[]]></Content>
    <ArticleCount>%s</ArticleCount>
    <Articles>
    $item_str</Articles>
    <FuncFlag>%s</FuncFlag>
    </xml>";
    
            $resultStr = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item), $flag);
            return $resultStr;
        }
        

    3、音乐消息

       
        private function transmitMusic($object, $musicArray, $flag = 0)
        {
            $itemTpl = "<Music>
        <Title><![CDATA[%s]]></Title>
        <Description><![CDATA[%s]]></Description>
        <MusicUrl><![CDATA[%s]]></MusicUrl>
        <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
    </Music>";
    
            $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);
    
            $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[music]]></MsgType>
    $item_str
    <FuncFlag>%d</FuncFlag>
    </xml>";
    
            $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);
            return $resultStr;
        }

      原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 

    构造不同回复消息类型

    1、回复文本

            if($keyword == "文本"){
                $contentStr = "这是个文本消息";
                $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
            }

    2、回复单图文

            else if($keyword == "图文" || $keyword == "单图文"){
                $dateArray = array();
                $dateArray[] = array("Title"=>"单图文标题", 
                                    "Description"=>"单图文内容", 
                                    "Picurl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                                    "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $resultStr = $this->transmitNews($object, $dateArray, $funcFlag);
            }

    3、回复多图文

            else if($keyword == "多图文"){
                $dateArray = array();
                $dateArray[] = array("Title"=>"多图文1标题", "Description"=>"", "Picurl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $dateArray[] = array("Title"=>"多图文2标题", "Description"=>"", "Picurl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $dateArray[] = array("Title"=>"多图文3标题", "Description"=>"", "Picurl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $resultStr = $this->transmitNews($object, $dateArray, $funcFlag);
            }

    4、回复音乐

            else if($keyword == "音乐"){
                $musicArray = array("Title"=>"最炫民族风", "Description"=>"歌手:凤凰传奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3","HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3");$resultStr = $this->transmitMusic($object, $musicArray, $funcFlag);
            }

      原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 

    完整代码

    /*
    方倍工作室 
    http://www.cnblogs.com/txw1958/
    */
    
    define("TOKEN", "pondbay");
    
    $wechatObj = new wechatCallbackapiTest();
    if (isset($_GET['echostr'])) {
        $wechatObj->valid();
    }else{
        $wechatObj->responseMsg();
    }
    
    class wechatCallbackapiTest
    {
        public function valid()
        {
            $echoStr = $_GET["echostr"];
            if($this->checkSignature()){
                echo $echoStr;
                exit;
            }
        }
    
        private function checkSignature()
        {
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];
    
            $token = TOKEN;
            $tmpArr = array($token, $timestamp, $nonce);
            sort($tmpArr);
            $tmpStr = implode( $tmpArr );
            $tmpStr = sha1( $tmpStr );
    
            if( $tmpStr == $signature ){
                return true;
            }else{
                return false;
            }
        }
    
        public function responseMsg()
        {
            $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
            if (!empty($postStr)){
                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $RX_TYPE = trim($postObj->MsgType);
    
                switch ($RX_TYPE)
                {
                    case "text":
                        $resultStr = $this->receiveText($postObj);
                        break;
                }
                echo $resultStr;
            }else {
                echo "";
                exit;
            }
        }
    
        private function receiveText($object)
        {
            $funcFlag = 0;
            $keyword = trim($object->Content);
            $resultStr = "";
            $contentStr = "";
    
            if($keyword == "文本"){
                $contentStr = "这是个文本消息";
                $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
            }
            else if($keyword == "图文" || $keyword == "单图文"){
                $dateArray = array();
                $dateArray[] = array("Title"=>"单图文标题", 
                                    "Description"=>"单图文内容", 
                                    "Picurl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                                    "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $resultStr = $this->transmitNews($object, $dateArray, $funcFlag);
            }
            else if($keyword == "多图文"){
                $dateArray = array();
                $dateArray[] = array("Title"=>"多图文1标题", "Description"=>"", "Picurl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $dateArray[] = array("Title"=>"多图文2标题", "Description"=>"", "Picurl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $dateArray[] = array("Title"=>"多图文3标题", "Description"=>"", "Picurl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
                $resultStr = $this->transmitNews($object, $dateArray, $funcFlag);
            }
            else if($keyword == "音乐"){
                $musicArray = array("Title"=>"最炫民族风", "Description"=>"歌手:凤凰传奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3","HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3");
                $resultStr = $this->transmitMusic($object, $musicArray, $funcFlag);
            }
            return $resultStr;
        }
    
        private function receiveEvent($object)
        {
            $contentStr = "";
            switch ($object->Event)
            {
                case "subscribe":
                    $contentStr = "欢迎关注方倍工作室";
                    break;  
            }
            $resultStr = $this->transmitText($object, $contentStr);
            return $resultStr;
        }
    
        private function transmitText($object, $content, $flag = 0)
        {
            $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    <FuncFlag>%d</FuncFlag>
    </xml>";
            $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
            return $resultStr;
        }
    
        private function transmitNews($object, $arr_item, $flag = 0)
        {
            if(!is_array($arr_item))
                return;
    
            $itemTpl = "    <item>
            <Title><![CDATA[%s]]></Title>
            <Description><![CDATA[%s]]></Description>
            <PicUrl><![CDATA[%s]]></PicUrl>
            <Url><![CDATA[%s]]></Url>
        </item>
    ";
            $item_str = "";
            foreach ($arr_item as $item)
                $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['Picurl'], $item['Url']);
    
            $newsTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <Content><![CDATA[]]></Content>
    <ArticleCount>%s</ArticleCount>
    <Articles>
    $item_str</Articles>
    <FuncFlag>%s</FuncFlag>
    </xml>";
    
            $resultStr = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item), $flag);
            return $resultStr;
        }
        
        private function transmitMusic($object, $musicArray, $flag = 0)
        {
            $itemTpl = "<Music>
        <Title><![CDATA[%s]]></Title>
        <Description><![CDATA[%s]]></Description>
        <MusicUrl><![CDATA[%s]]></MusicUrl>
        <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
    </Music>";
    
            $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);
    
            $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[music]]></MsgType>
    $item_str
    <FuncFlag>%d</FuncFlag>
    </xml>";
    
            $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);
            return $resultStr;
        }
    }
  • 相关阅读:
    1、嵌入式Linux开发环境搭建
    JAVA_SE基础——1.JDK&JRE下载及安装
    数组
    Java方法的概述
    Java流程控制
    初识Java
    windows常用的快捷键和dos命令
    window10 Java JDK环境变量配置
    jQuery学习 (实现简单选项卡效果练习test)
    jQuery学习 (实现内联下拉菜单效果(一个小test)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467566.html
Copyright © 2011-2022 走看看