国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

基于微信公眾平臺開發(fā)SDK(demo)擴展例子

2024-05-04 21:49:31
字體:
供稿:網(wǎng)友

該擴展基于官方的微信公眾平臺SDK,這里只做了簡單地封裝,實現(xiàn)了一些基本的功能,如天氣查詢,翻譯,自動聊天機器人,自定義菜單接口)僅供學(xué)習(xí)之用.代碼如下:

  1. define("TOKEN""xingans"); 
  2.  
  3. $wechatObj = new wechatCallbackapiTest(); 
  4.  
  5. $wechatObj->responseMsg(); 
  6.  
  7. class wechatCallbackapiTest 
  8.    //簽名驗證公共接口 
  9.    public function valid() 
  10.    { 
  11.        $echoStr = $_GET["echostr"]; 
  12.  
  13.        if($this->checkSignature()){ 
  14.            echo $echoStr
  15.            exit
  16.        } 
  17.    } 
  18.  
  19.    //主入口處理函數(shù) 
  20.    public function responseMsg() 
  21.    { 
  22.        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  23.  
  24.        if (!emptyempty($postStr)){ 
  25.                    
  26.            $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  27.            
  28.            $msgType=trim($postObj->MsgType); 
  29.            
  30.            switch($msgType){ 
  31.                case 'text'
  32.                    $resultStr=$this->handleText($postObj); 
  33.                    break
  34.                case 'event'
  35.                    $resultStr=$this->handleEvent($postObj); 
  36.                    break
  37.                default
  38.                    $resultStr=$this->handleDefault($postObj); 
  39.                    break
  40.            } 
  41.            
  42.            echo $resultStr
  43.            
  44.        }else { 
  45.            echo "Error"
  46.            exit
  47.        } 
  48.    } 
  49.    
  50.    //處理文本消息 
  51.       private function handleText($obj){ 
  52.           
  53.           $keyword=trim($obj->Content); 
  54.           
  55.           if(preg_match('/天氣/',$keyword)){ 
  56.               $contentStr=$this->handleWeather($obj); 
  57.           }elseif(preg_match('/翻譯/',$keyword)){ 
  58.               $contentStr=$this->handleTranslation($obj); 
  59.           }else
  60.               $contentStr=$this->handleChat($obj); 
  61.           } 
  62.           
  63.           return $this->handleStr($obj,$contentStr); 
  64.           
  65.       } 
  66.       
  67.       //處理天氣 
  68.       private function handleWeather($obj){ 
  69.           $keyword=mb_substr($obj->Content,-2,2,'utf-8'); 
  70.           $zone=mb_substr($obj->Content,0,-2,'utf-8'); 
  71.           
  72.           if($keyword=='天氣' && !emptyempty($zone)){ 
  73.           
  74.               $zoneArr=json_decode(file_get_contents('http://api.k780.com:88/?app=weather.city&format=json'),true); 
  75.               $zoneArr=$zoneArr['result']; 
  76.               
  77.               $cityId=''
  78.               
  79.               foreach($zoneArr as $value){ 
  80.                   if($zone==$value['citynm']){ 
  81.                       $cityId=$value['weaid']; 
  82.                       break
  83.                   } 
  84.               } 
  85.               
  86.               if(!emptyempty($cityId)){ 
  87.                   $data=file_get_contents("http://api.k780.com:88/?app=weather.today&weaid=$cityId&appkey=10638&sign=3736578f099375665f9f141a6326b757&format=json"); 
  88.  
  89.                   $data=json_decode($data); 
  90.                   
  91.                   $contentStr="今天是:".$data->result->days.",".$data->result-> week.",".$data->result->citynm."天氣:".$data->result->weather."n溫度:".$data->result->temperature.", 
  92.                   ".$data->result->wind_direction.",".$data->result->wind_power.", 最低溫度:".$data->result->temp_low.",最高溫度:".$data->result->temp_high; 
  93.               }else
  94.                   $contentStr='找不到輸入的城市!'
  95.               }    
  96.               
  97.           }else
  98.               $contentStr='輸入的查詢格式不正確!'
  99.           } 
  100.           
  101.           return $contentStr
  102.       } 
  103.       
  104.       //處理翻譯 
  105.       private function handleTranslation($obj){ 
  106.           $keyword=mb_substr($obj->Content,0,2,'utf-8'); 
  107.        $words=mb_substr($obj->Content,2,220,'utf-8'); 
  108.        
  109.        if($keyword=='翻譯' && !emptyempty($words)){ 
  110.            $data=file_get_contents('http://fanyi.youdao.com/openapi.do?keyfrom=zfsblog&key=364295447&type=data&doctype=json&version=1.1&q='.urlencode($words));        
  111.            $data=json_decode($data,true); 
  112.            
  113.            switch($data['errorCode']){ 
  114.                case '0'
  115.                    $contentStr=$data['translation'][0]; 
  116.                    break
  117.                case '20'
  118.                    $contentStr='要翻譯的文本過長'
  119.                    break
  120.                case '30'
  121.                    $contentStr='無法進行有效的翻譯'
  122.                    break
  123.                case '40'
  124.                    $contentStr='不支持的語言類型'
  125.                    break
  126.                case '50'
  127.                    $contentStr='無效的key'
  128.                    break
  129.                default
  130.                    $contentStr='Error'
  131.                    break
  132.            } 
  133.            
  134.        }else
  135.            $contentStr='輸入的翻譯格式不正確!'
  136.        } 
  137.        
  138.        return $contentStr
  139.       } 
  140.       
  141.       //處理聊天信息 
  142.       private function handleChat($obj){ 
  143.           $keywords=$obj->Content; 
  144.           
  145.           $curlPost=array("chat"=>$keywords); 
  146.    
  147.        $ch = curl_init();//初始化curl 
  148.        curl_setopt($ch, CURLOPT_URL,'http://www.xiaojo.com/bot/chata.php');//抓取指定網(wǎng)頁 
  149.        curl_setopt($ch, CURLOPT_HEADER, 0);//設(shè)置header 
  150.        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結(jié)果為字符串且輸出到屏幕上 
  151.        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 
  152.        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 
  153.        $data = curl_exec($ch);//運行curl 
  154.        curl_close($ch); 
  155.        
  156.        if(!emptyempty($data)){ 
  157.            $contentStr=$data
  158.        }else
  159.            $ran=rand(1,5); 
  160.            
  161.            switch($ran){ 
  162.                case 1: 
  163.                    $contentStr"小九今天累了,明天再陪你聊天吧"
  164.                    break
  165.                case 2: 
  166.                    $contentStr"小九睡覺嘍~~"
  167.                    break
  168.                case 3: 
  169.                    $contentStr"呼呼~~呼呼~~"
  170.                    break
  171.                case 4: 
  172.                    $contentStr"你話好多啊,不跟你聊了"
  173.                    break
  174.                case 5: 
  175.                    $contentStr"你話好多啊,不跟你聊了"
  176.                    break
  177.            } 
  178.        } 
  179.        
  180.        return $contentStr
  181.       } 
  182.       
  183.       //創(chuàng)建自定義菜單 
  184.       public function createMenu($data,$token){ 
  185.           $ch = curl_init(); 
  186.        
  187.         curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token); 
  188.         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
  189.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
  190.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
  191.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); 
  192.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  193.         curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 
  194.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
  195.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  196.          
  197.         $result = curl_exec($ch);      
  198.          
  199.         curl_close($ch); 
  200.          
  201.         return $result
  202.       } 
  203.       
  204.       //查詢自定義菜單 
  205.    function getMenu($token){ 
  206.           $url="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=$token"
  207.           
  208.           $ch = curl_init($url); 
  209.           
  210.        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true) ; //獲取數(shù)據(jù)返回 
  211.        curl_setopt($ch, CURLOPT_BINARYTRANSFER,true) ; //在啟用 CURLOPT_RETURNTRANSFER 時候?qū)@取數(shù)據(jù)返回    
  212.        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); 
  213.        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); 
  214.        
  215.        return $output = curl_exec($ch);        
  216.       } 
  217.       
  218.       //刪除自定義菜單 
  219.       public function deleteMenu($token){ 
  220.           $url="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$token
  221.    
  222.        $ch = curl_init(); 
  223.        
  224.        curl_setopt($ch, CURLOPT_URL, $url); 
  225.        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  226.        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
  227.        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
  228.  
  229.        $result = curl_exec($ch); 
  230.        
  231.        curl_close($ch); 
  232.        
  233.        return $result
  234.       } 
  235.  
  236.       
  237.       //處理事件消息 
  238.       private function handleEvent($obj){ 
  239.     
  240.           $content=''
  241.           
  242.           switch($obj->Event){ 
  243.               case 'subscribe'
  244.                   $content.="welcome-歡迎關(guān)注該公眾號號!"
  245.                   break
  246.               case 'unsubscribe'
  247.                   $content.="感謝您一直以來對該公眾號的關(guān)注,再見!"
  248.                   break
  249.               default
  250.                   $content.=""
  251.                   break
  252.           } 
  253.           
  254.           return $this->handleStr($obj,$content); 
  255.       } 
  256.       
  257.       //處理回復(fù)消息字符串 
  258.       private function handleStr($obj,$content='',$flag=0){ 
  259.        $textTpl = ""
  260.           
  261.           return sprintf($textTpl$obj->FromUserName, $obj->ToUserName, time(), $content,$flag); 
  262.       } 
  263.    
  264.    //簽名驗證函數(shù) 
  265.    private function checkSignature() 
  266.    { 
  267.        $signature = $_GET["signature"]; 
  268.        $timestamp = $_GET["timestamp"]; 
  269.        $nonce = $_GET["nonce"];    
  270.         //開源代碼Vevb.com 
  271.        $token = TOKEN; 
  272.        $tmpArr = array($token$timestamp$nonce); 
  273.        sort($tmpArr, SORT_STRING); 
  274.        $tmpStr = implode( $tmpArr ); 
  275.        $tmpStr = sha1( $tmpStr ); 
  276.        
  277.        if$tmpStr == $signature ){ 
  278.            return true; 
  279.        }else
  280.            return false; 
  281.        } 
  282.    } 
  283. }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黑龙江省| 孝感市| 南溪县| 泽州县| 乐东| 平潭县| 甘洛县| 高平市| 新疆| 蕲春县| 贵溪市| 伊通| 唐海县| 阿鲁科尔沁旗| 太和县| 永登县| 洪湖市| 林西县| 介休市| 栾川县| 定南县| 武义县| 徐水县| 客服| 沿河| 枝江市| 迭部县| 浙江省| 哈巴河县| 宁夏| 治多县| 岳阳县| 逊克县| 高碑店市| 平潭县| 静海县| 友谊县| 安康市| 唐河县| 莲花县| 太湖县|