php微信公众平台开发回复功能实例代码

互联网 17-3-21
这篇文章主要介绍了php微信公众平台开发的第四篇,微信回复功能开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、简介

微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。

二、思路分析

用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。

关键代码如下:

if($keyword=="你好"){    $contentStr = "hello";  }elseif($keyword=="苏州"){    $contentStr = "上有天堂,下有苏杭";  }else{    $contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";  }

如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。

三、完整代码

<?php  /**   * wechat php test   */    //define your token  define("TOKEN", "zhuojin");  $wechatObj = new wechatCallbackapiTest();  $wechatObj->responseMsg();  //$wechatObj->valid();    class wechatCallbackapiTest  {    /*public function valid()    {      $echoStr = $_GET["echostr"];        //valid signature , option      if($this->checkSignature()){        echo $echoStr;        exit;      }    }*/      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)){                     $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);          $RX_TYPE = trim($postObj->MsgType);            switch($RX_TYPE)          {            case "text":              $resultStr = $this->handleText($postObj);              break;            case "event":              $resultStr = $this->handleEvent($postObj);              break;            default:              $resultStr = "Unknow msg type: ".$RX_TYPE;              break;          }          echo $resultStr;      }else {        echo "";        exit;      }    }      public function handleText($postObj)    {      $fromUsername = $postObj->FromUserName;      $toUsername = $postObj->ToUserName;      $keyword = trim($postObj->Content);      $time = time();      $textTpl = "<xml>            <ToUserName><![CDATA[%s]]></ToUserName>            <FromUserName><![CDATA[%s]]></FromUserName>            <CreateTime>%s</CreateTime>            <MsgType><![CDATA[%s]]></MsgType>            <Content><![CDATA[%s]]></Content>            <FuncFlag>0</FuncFlag>            </xml>";             if(!empty( $keyword ))      {        $msgType = "text";          if($keyword=="你好"){          $contentStr = "hello";        }elseif($keyword=="苏州"){          $contentStr = "上有天堂,下有苏杭";        }else{          $contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";        }        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);        echo $resultStr;      }else{        echo "Input something...";      }    }      public function handleEvent($object)    {      $contentStr = "";      switch ($object->Event)      {        case "subscribe":          $contentStr = "感谢您关注【卓锦苏州】"."\n"."微信号:zhuojinsz"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待...";          break;        default :          $contentStr = "Unknow Event: ".$object->Event;          break;      }      $resultStr = $this->responseText($object, $contentStr);      return $resultStr;    }        public function responseText($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 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;      }    }  }    ?>

四、测试

以上就是php微信公众平台开发回复功能实例代码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:php微信公众账号开发遇到的五个坑总结

相关资讯