php实现基于微信公众平台开发SDK(demo)扩展的方法
《PHP实例:php实现基于微信公众平台开发SDK(demo)扩展的方法》要点: PHP编程本篇章节讲解php实现基于微信公众平台开发SDK(demo)扩展的办法.分享给大家供大家参考.具体分析如下: PHP编程该扩展基于官方的微信公众平台SDK,这里只做了简单地封装,实现了一些基本的功能(如天气查询,翻译,自动聊天机器人,自定义菜单接口)仅供学习之用.代码如下:
代码如下:
define("TOKEN","xingans");
$wechatObj = new wechatCallbackapiTest(); $wechatObj->responseMsg(); class wechatCallbackapiTest { ?? //签名验证公共接口 ?? public function valid() ?? { ?????? $echoStr = $_GET["echostr"]; ?????? if($this->checkSignature()){ ?????????? echo $echoStr; ?????????? exit; ?????? } ?? } ? ?? //主入口处理函数 ?? public function responseMsg() ?? { ?????? $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; ?????? if (!emptyempty($postStr)){ ?????????? $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); ?????????? $msgType=trim($postObj->MsgType); ?????????? ?????????? switch($msgType){ ?????????????? case 'text': ?????????????????? $resultStr=$this->handleText($postObj); ?????????????????? break; ?????????????? case 'event': ?????????????????? $resultStr=$this->handleEvent($postObj); ?????????????????? break; ?????????????? default: ?????????????????? $resultStr=$this->handleDefault($postObj); ?????????????????? break; ?????????? } ?????????? echo $resultStr; ?????????? ?????? }else { ?????????? echo "Error"; ?????????? exit; ?????? } ?? } ?? ?? //处理文本消息 ????? private function handleText($obj){ ????????? $keyword=trim($obj->Content); ????????? if(preg_match('/天气/',$keyword)){ ????????????? $contentStr=$this->handleWeather($obj); ????????? }elseif(preg_match('/翻译/',$keyword)){ ????????????? $contentStr=$this->handleTranslation($obj); ????????? }else{ ????????????? $contentStr=$this->handleChat($obj); ????????? } ????????? return $this->handleStr($obj,$contentStr); ????? } ????? ????? //处理天气 ????? private function handleWeather($obj){ ????????? $keyword=mb_substr($obj->Content,-2,2,'utf-8'); ????????? $zone=mb_substr($obj->Content,'utf-8'); ????????? if($keyword=='天气' && !emptyempty($zone)){ ????????????? $zoneArr=json_decode(file_get_contents('http://api.k780.com:88/?app=weather.city&format=json'),true); ????????????? $zoneArr=$zoneArr['result']; ????????????? $cityId=''; ????????????? foreach($zoneArr as $value){ ????????????????? if($zone==$value['citynm']){ ????????????????????? $cityId=$value['weaid']; ????????????????????? break; ????????????????? } ????????????? } ????????????? ????????????? if(!emptyempty($cityId)){ ????????????????? $data=file_get_contents("http://api.k780.com:88/?app=weather.today&weaid=$cityId&appkey=10638&sign=3736578f099375665f9f141a6326b757&format=json"); ????????????????? $data=json_decode($data); ????????????????? $contentStr="今天是:".$data->result->days.",".$data->result-> week.",".$data->result->citynm."天气:".$data->result->weather."n温度:".$data->result->temperature.", ????????????????? ".$data->result->wind_direction.",".$data->result->wind_power.",最低温度:".$data->result->temp_low.",最高温度:".$data->result->temp_high; ????????????? }else{ ????????????????? $contentStr='找不到输入的城市!'; ????????????? }??? ????????? }else{ ????????????? $contentStr='输入的查询格式不正确!'; ????????? } ????????? return $contentStr; ????? } ????? ????? //处理翻译 ????? private function handleTranslation($obj){ ?????? $keyword=mb_substr($obj->Content,'utf-8'); ?????? $words=mb_substr($obj->Content,220,'utf-8'); ?????? if($keyword=='翻译' && !emptyempty($words)){ ?????????? $data=file_get_contents('http://fanyi.youdao.com/openapi.do?keyfrom=zfsblog&key=364295447&type=data&doctype=json&version=1.1&q='.urlencode($words));??????? ?????????? $data=json_decode($data,true); ?????????? ?????????? switch($data['errorCode']){ ?????????????? case '0': ?????????????????? $contentStr=$data['translation'][0]; ?????????????????? break; ?????????????? case '20': ?????????????????? $contentStr='要翻译的文本过长'; ?????????????????? break; ?????????????? case '30': ?????????????????? $contentStr='无法进行有效的翻译'; ?????????????????? break; ?????????????? case '40': ?????????????????? $contentStr='不支持的语言类型'; ?????????????????? break; ?????????????? case '50': ?????????????????? $contentStr='无效的key'; ?????????????????? break; ?????????????? default: ?????????????????? $contentStr='Error'; ?????????????????? break; ?????????? } ?????? }else{ ?????????? $contentStr='输入的翻译格式不正确!'; ?????? } ?????? return $contentStr; ????? } ????? ????? //处理聊天信息 ????? private function handleChat($obj){ ?????? $keywords=$obj->Content; ?????? $curlPost=array("chat"=>$keywords); ?????? $ch = curl_init();//初始化curl ?????? curl_setopt($ch,CURLOPT_URL,'http://www.xiaojo.com/bot/chata.php');//抓取指定网页 ?????? curl_setopt($ch,CURLOPT_HEADER,0);//设置header ?????? curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//要求结果为字符串且输出到屏幕上 ?????? curl_setopt($ch,CURLOPT_POST,1);//post提交方式 ?????? curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost); ?????? $data = curl_exec($ch);//运行curl ?????? curl_close($ch); ?????? ?????? if(!emptyempty($data)){ ?????????? $contentStr=$data; ?????? }else{ ?????????? $ran=rand(1,5); ?????????? ?????????? switch($ran){ ?????????????? case 1: ?????????????????? $contentStr= "小九今天累了,明天再陪你聊天吧"; ?????????????????? break; ?????????????? case 2: ?????????????????? $contentStr= "小九睡觉喽~~"; ?????????????????? break; ?????????????? case 3: ?????????????????? $contentStr= "呼呼~~呼呼~~"; ?????????????????? break; ?????????????? case 4: ?????????????????? $contentStr= "你话好多啊,不跟你聊了"; ?????????????????? break; ?????????????? case 5: ?????????????????? $contentStr= "你话好多啊,不跟你聊了"; ?????????????????? break; ?????????? } ?????? } ?????? return $contentStr; ????? } ????? ????? //创建自定义菜单 ????? public function createMenu($data,$token){ ??????? $ch = curl_init(); ??????? curl_setopt($ch,"https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token); ??????? curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST"); ??????? curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); ??????? curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,CURLOPT_USERAGENT,'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); ??????? curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); ??????? curl_setopt($ch,CURLOPT_AUTOREFERER,$data); ??????? curl_setopt($ch,true); ??????? $result = curl_exec($ch);????? ??????? curl_close($ch); ??????? return $result; ????? } ????? ????? //查询自定义菜单 ?? function getMenu($token){ ?????? $url="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=$token"; ?????? $ch = curl_init($url); ?????? curl_setopt($ch,true) ; //获取数据返回 ?????? curl_setopt($ch,CURLOPT_BINARYTRANSFER,true) ; //在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回??? ?????? curl_setopt($ch,false); ?????? curl_setopt($ch,false); ?????? return $output = curl_exec($ch);??????? ????? } ????? ????? //删除自定义菜单 ????? public function deleteMenu($token){ ?????? $url="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$token; ?????? $ch = curl_init(); ?????? curl_setopt($ch,$url); ?????? curl_setopt($ch,1); ?????? curl_setopt($ch,false); ?????? $result = curl_exec($ch); ?????? curl_close($ch); ?????? return $result; ????? } PHP编程????? //处理事件消息 PHP编程希望本文所述对大家的php程序设计有所赞助. 《PHP实例:php实现基于微信公众平台开发SDK(demo)扩展的方法》是否对您有启发,欢迎查看更多与《PHP实例:php实现基于微信公众平台开发SDK(demo)扩展的方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |