gpt4 book ai didi

php实现基于微信公众平台开发SDK(demo)扩展的方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php实现基于微信公众平台开发SDK(demo)扩展的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了php实现基于微信公众平台开发SDK(demo)扩展的方法。分享给大家供大家参考。具体分析如下:

该扩展基于官方的微信公众平台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,0,-2,'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,0,2,'utf-8');        $words=mb_substr($obj->Content,2,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, CURLOPT_URL, "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, false);         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);         curl_setopt($ch, CURLOPT_AUTOREFERER, 1);         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 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, CURLOPT_RETURNTRANSFER,true) ; //获取数据返回        curl_setopt($ch, CURLOPT_BINARYTRANSFER,true) ; //在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回           curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,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, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);        $result = curl_exec($ch);        curl_close($ch);        return $result;       } 。

  。

      //处理事件消息       private function handleEvent($obj){           $content='';           switch($obj->Event){               case 'subscribe':                   $content.="welcome-欢迎关注该公众号号!";                   break;               case 'unsubscribe':                   $content.="感谢您一直以来对该公众号的关注,再见!";                   break;               default:                   $content.="";                   break;           }           return $this->handleStr($obj,$content);       }             //处理回复消息字符串       private function handleStr($obj,$content='',$flag=0){        $textTpl = "";        return sprintf($textTpl, $obj->FromUserName, $obj->ToUserName, time(), $content,$flag);       }       //签名验证函数    private function checkSignature()    {        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];           $token = TOKEN;        $tmpArr = array($token, $timestamp, $nonce);        sort($tmpArr, SORT_STRING);        $tmpStr = implode( $tmpArr );        $tmpStr = sha1( $tmpStr );        if( $tmpStr == $signature ){            return true;        }else{            return false;        }    } } 。

  。

希望本文所述对大家的php程序设计有所帮助.

最后此篇关于php实现基于微信公众平台开发SDK(demo)扩展的方法的文章就讲到这里了,如果你想了解更多关于php实现基于微信公众平台开发SDK(demo)扩展的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com