微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件

来源:互联网 发布:水果竞猜网站源码 编辑:程序博客网 时间:2024/05/17 05:07
<?php    define("TOKEN", "mzh");        //换成你的token  $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;              case "image":                  $resultStr = $this->receiveImage($postObj);                  break;              case "location":                  $resultStr = $this->receiveLocation($postObj);                  break;              case "voice":                  $resultStr = $this->receiveVoice($postObj);                  break;              case "video":                  $resultStr = $this->receiveVideo($postObj);                  break;              case "link":                  $resultStr = $this->receiveLink($postObj);                  break;              case "event":                  $resultStr = $this->receiveEvent($postObj);                  break;              default:                  $resultStr = "unknow msg type: ".$RX_TYPE;                  break;          }          echo $resultStr;      }else {          echo "";          exit;      }      }            //接收文本消息      private function receiveText($object)      {          $keyword = trim($object->Content);          $url = "http://api100.duapp.com/movie/?appkey=DIY_miaomiao&name=".$keyword;          $output = file_get_contents($url,$keyword);          $contentStr = json_decode($output, true);          if (is_array($contentStr)){              $resultStr = $this->transmitNews($object, $contentStr);          }else{              $resultStr = $this->transmitText($object, $contentStr);          }          return $resultStr;      }              //接收事件,关注等      private function receiveEvent($object)      {          $contentStr = "";          switch ($object->Event)          {              case "subscribe":                  $contentStr = "你关注了我";    //关注后回复内容                  break;              case "unsubscribe":                  $contentStr = "";                  break;              case "CLICK":                  $contentStr =  $this->receiveClick($object);    //点击事件                  break;              default:                  $contentStr = "receive a new event: ".$object->Event;                  break;          }                    return $contentStr;      }            //接收图片      private function receiveImage($object)      {          $contentStr = "你发送的是图片,地址为:".$object->PicUrl;          $resultStr = $this->transmitText($object, $contentStr);          return $resultStr;      }                  //接收语音      private function receiveVoice($object)      {          $contentStr = "你发送的是语音,媒体ID为:".$object->MediaId;          $resultStr = $this->transmitText($object, $contentStr);          return $resultStr;      }            //接收视频      private function receiveVideo($object)      {          $contentStr = "你发送的是视频,媒体ID为:".$object->MediaId;          $resultStr = $this->transmitText($object, $contentStr);          return $resultStr;      }            //位置消息      private function receiveLocation($object)      {          $contentStr = "你发送的是位置,纬度为:".$object->Location_X.";经度为:".$object->Location_Y.";缩放级别为:".$object->Scale.";位置为:".$object->Label;          $resultStr = $this->transmitText($object, $contentStr);          return $resultStr;      }            //链接消息      private function receiveLink($object)      {          $contentStr = "你发送的是链接,标题为:".$object->Title.";内容为:".$object->Description.";链接地址为:".$object->Url;          $resultStr = $this->transmitText($object, $contentStr);          return $resultStr;      }                <p> //点击菜单消息      private function receiveClick($object)      {           switch ($object->EventKey)           {               case "1":               $contentStr = "猫咪酱个性DIY服装,  我们专业定制个性【班服,情侣装,亲子装等,有长短T恤,卫衣,长短裤】   来图印制即可,给你温馨可爱的TA,  有事可直接留言微信";               break;                              case "2":                   $contentStr = "你点击了菜单: ".$object->EventKey;               break;                              case "3":               $contentStr = "是傻逼";               break;                              default:               $contentStr = "你点击了菜单: ".$object->EventKey;               break;           }                              //两种回复          if (is_array($contentStr)){              $resultStr = $this->transmitNews($object, $contentStr);          }else{              $resultStr = $this->transmitText($object, $contentStr);          }          return  $resultStr;      }                                                                                    //回复文本消息      private function transmitText($object, $content)      {          $textTpl = "<xml>          <ToUserName><![CDATA[%s]]></ToUserName>          <FromUserName><![CDATA[%s]]></FromUserName>          <CreateTime>%s</CreateTime>          <MsgType><![CDATA[text]]></MsgType>          <Content><![CDATA[%s]]></Content>          </xml>";          $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);          return $resultStr;      }</p><p>                                  //回复图文      private function transmitNews($object, $arr_item)      {          if(!is_array($arr_item))              return;</p><p>        $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']);</p><p>        $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>          </xml>";</p><p>        $resultStr = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item));          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>";</p><p>        $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);</p><p>        $textTpl = "<xml>          <ToUserName><![CDATA[%s]]></ToUserName>          <FromUserName><![CDATA[%s]]></FromUserName>          <CreateTime>%s</CreateTime>          <MsgType><![CDATA[music]]></MsgType>          $item_str          <FuncFlag>%d</FuncFlag>          </xml>";</p><p>        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);          return $resultStr;      }                    }  ?></p>  

0 0
原创粉丝点击