亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        比較完整的微信開發(fā)php代碼

        字號:


            本文實例為大家分享了微信開發(fā)php代碼,供大家參考,具體內(nèi)容如下
            <?php
              //封裝成一個微信接口類
              class WeixinApi
              {
                private $appid;
                private $appsecret; 
                //構(gòu)造方法 初始化賦值
                public function __construct($appid="",$appsecret="")
                {
                  $this->appid = $appid;
                  $this->appsecret = $appsecret;
                }
                //驗證服務(wù)器地址有效性
                public function valid()
                {
                  if($this->checkSignature())
                  {
                    $echostr = $_GET['echostr'];//隨機的字符串
                    return $echostr;
                  }
                  else
                  {
                    return "Error";
                  }
                }
                //檢查簽名
                private function checkSignature()
                {
                  //一、接收微信服務(wù)器GET方式提交過來的4個參數(shù)數(shù)據(jù)
                  $signature = $_GET['signature'];//微信加密簽名
                  $timestamp = $_GET['timestamp'];//時間戳
                  $nonce = $_GET['nonce'];//隨機數(shù)
                  //二、加密/校驗過程
                  // 1. 將token、timestamp、nonce三個參數(shù)進行字典序排序;
                  // bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 對數(shù)組排序 
                  $tmpArr = array(TOKEN,$timestamp,$nonce);//將上面三個參數(shù)放到一個數(shù)組里面
                  sort($tmpArr,SORT_STRING);
                  // 2. 將三個參數(shù)字符串拼接成一個字符串進行sha1加密;
                  $tmpStr = implode($tmpArr); //將數(shù)組轉(zhuǎn)化成字符串
                  $signatureStr = sha1($tmpStr);
                  // 3. 開發(fā)者獲得加密后的字符串與signature對比。
                  if($signatureStr == $signature)
                  {
                    return true;
                  }
                  else
                  {
                    return false;
                  }
                }
                //響應(yīng)消息
                public function responseMsg()
                {
                  //接收微信服務(wù)器發(fā)送POST請求到開發(fā)者服務(wù)器,攜帶的XML數(shù)據(jù)包
                  $postData = $GLOBALS['HTTP_RAW_POST_DATA'];
                  //處理xml數(shù)據(jù)包
                  $xmlObj = simplexml_load_string($postData,"SimpleXMLElement",LIBXML_NOCDATA);
                  if(!$xmlObj)
                  {
                    echo "";
                    exit;
                  }
                  //獲取接收消息中的參數(shù)內(nèi)容
                  $toUserName = $xmlObj->ToUserName;//開發(fā)者微信號
                  $fromUserName = $xmlObj->FromUserName;//發(fā)送方的微信號(openid)
                  $msgType = $xmlObj->MsgType;//消息類型
                  switch ($msgType) {
                    //接收文本消息
                    case 'text':
                      //獲取文本消息的關(guān)鍵字
                      $keyword = $this->receiveText($xmlObj); 
                      //進行關(guān)鍵字回復(fù)
                      switch($keyword)
                      {
                        case "w001":
                        case "W001":
                          return $this->replyText($xmlObj,"Hi~你好");
                          break;
                        case "w002":
                        case "W002":
                          return $this->replyText($xmlObj,"Hi~尷尬了");
                          break;
                        case "笑話":
                          $key = "dee9ebc68fd5a61f67286063932afe56";
                          return $this->replyNews($xmlObj,$this->joke_text($key));
                          break;
                        default:
                          $key = "dee9ebc68fd5a61f67286063932afe56";
                          return $this->replyNews($xmlObj,$this->joke_text($key));
                          break;
                      }    
                      break;
                    //接收圖片消息
                    case 'image':
                      return $this->receiveImage($xmlObj);
                      break;
                    //接收事件推送
                    case 'event':
                      return $this->receiveEvent($xmlObj);
                      break;
                  }      
                }
                //接收事件推送
                public function receiveEvent($obj)
                {
                  //接收事件類型
                  $event = $obj->Event;
                  switch ($event)
                  {
                    //關(guān)注事件
                    case 'subscribe':
                      //下發(fā)歡迎消息
                      $newsArr = array(
                              array(
                                "Title"=>"做有價值的頭條資訊!",
                                "Description"=>"把握價值頭條資訊,日常更加有談資呢!",
                                "PicUrl"=>"http://jober.applinzi.com/news/img/news.png",
                                "Url"=>"http://jober.applinzi.com/news/index.php"
                              )                
                            );
                      //回復(fù)圖文消息
                      return $this->replyNews($obj,$newsArr); 
                      break;
                    //取消關(guān)注事件
                    case 'unsubscribe':
                      //賬號的解綁操作等等
                      break;
                    //自定義菜單推送CLICK事件
                    case 'CLICK':
                      $eventKey = $obj->EventKey;//獲取事件KEY值,與自定義菜單接口中KEY值對應(yīng)
                      switch ($eventKey) 
                      {
                        case 'old':
                          $weixinArr = $this->history("da675ebc6a0d72920dca3f676122a693");
                          $weixinArr = array_slice($weixinArr, 0,5);
                          $newsArr = array();
                          foreach ($weixinArr as $item) 
                          {
                            $newsArr = array(array(
                                      "Title" => $item['Description'],
                                      "Description" => $item['Title'],
                                      "PicUrl" => "http://1.jober.applinzi.com/news/img/2.jpg",
                                      "Url" => "http://www.todayonhistory.com/"                         
                                    ));
                          }
                          return $this->replyNews($obj,$newsArr);
                          break;
                      }
                    break;
                  }
                }
                //接收文本消息
                public function receiveText($obj)
                {
                  $content = trim($obj->Content);//文本消息的內(nèi)容
                  return $content;
                }
                //接收圖片消息
                public function receiveImage($obj)
                {
                  $picUrl = $obj->PicUrl;//圖片的鏈接
                  $mediaId = $obj->MediaId;//圖片消息媒體id
                  return $this->replyImage($obj,$mediaId);
                }
                //回復(fù)圖片消息
                public function replyImage($obj,$mediaId)
                {
                  $replyXml = "<xml>
                          <ToUserName><![CDATA[%s]]></ToUserName>
                          <FromUserName><![CDATA[%s]]></FromUserName>
                          <CreateTime>%s</CreateTime>
                          <MsgType><![CDATA[image]]></MsgType>
                          <Image>
                            <MediaId><![CDATA[%s]]></MediaId>
                          </Image>
                        </xml>";
                  return sprintf($replyXml,$obj->FromUserName,$obj->ToUserName,time(),$mediaId);
                }
                //回復(fù)文本消息
                public function replyText($obj,$content)
                {
                  $replyXml = "<xml>
                          <ToUserName><![CDATA[%s]]></ToUserName>
                          <FromUserName><![CDATA[%s]]></FromUserName>
                          <CreateTime>%s</CreateTime>
                          <MsgType><![CDATA[text]]></MsgType>
                          <Content><![CDATA[%s]]></Content>
                        </xml>";
                  return sprintf($replyXml,$obj->FromUserName,$obj->ToUserName,time(),$content);
                }
                //回復(fù)圖文消息
                public function replyNews($obj,$newsArr)
                {
                  //判斷是否為數(shù)組類型
                  if(!is_array($newsArr))
                  {
                    return;
                  }
                  // 判斷數(shù)組是否為空數(shù)組
                  if(!$newsArr)
                  {
                    return;
                  }
                  $itemStr = "";
                  //定義item模板
                  $itemXml = "<item>
                          <Title><![CDATA[%s]]></Title> 
                          <Description><![CDATA[%s]]></Description>
                          <PicUrl><![CDATA[%s]]></PicUrl>
                          <Url><![CDATA[%s]]></Url>
                        </item>";
                  foreach($newsArr as $item)
                  {
                    $itemStr .= sprintf($itemXml,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
                  }
                  $replyXml = "<xml>
                          <ToUserName><![CDATA[%s]]></ToUserName>
                          <FromUserName><![CDATA[%s]]></FromUserName>
                          <CreateTime>%s</CreateTime>
                          <MsgType><![CDATA[news]]></MsgType>
                          <ArticleCount>".count($newsArr)."</ArticleCount>
                          <Articles>".$itemStr."</Articles>
                        </xml>"; 
                  return sprintf($replyXml,$obj->FromUserName,$obj->ToUserName,time());     
                }
                //封裝https請求(GET和POST)
                protected function https_request($url,$data=null)
                {
                  //1、初始化curl
                  $ch = curl_init();
                  //2、設(shè)置傳輸選項
                  curl_setopt($ch, CURLOPT_URL, $url);//請求的url地址
                  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//將請求的結(jié)果以文件流的形式返回
                  if(!empty($data))
                  {
                    curl_setopt($ch,CURLOPT_POST,1);//請求POST方式
                    curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//POST提交的內(nèi)容
                  }
                  //3、執(zhí)行請求并處理結(jié)果
                  $outopt = curl_exec($ch);
                  //把json數(shù)據(jù)轉(zhuǎn)化成數(shù)組
                  $outoptArr = json_decode($outopt,TRUE);
                  //4、關(guān)閉curl
                  curl_close($ch);
                  //如果返回的結(jié)果$outopt是json數(shù)據(jù),則需要判斷一下
                  if(is_array($outoptArr))
                  {  
                    return $outoptArr;
                  }
                  else
                  {
                    return $outopt;
                  }      
                }
                public function juhe_weixin($key,$type)
                {
                  $url ="http://v.juhe.cn/toutiao/index?type={$type}&key={$key}";
                  $result = $this->https_request($url);
                  if($result['error_code'] == 0)
                  {
                    return $result['result']['data'];
                  }
                  else
                  {
                    return array();
                  }
                }
                //聚合數(shù)據(jù)-獲取最新趣圖
                public function joke_text($key,$pagesize=10)
                {
                  $url = "http://japi.juhe.cn/joke/img/text.from?key={$key}&pagesize={$pagesize}";
                  $jokeArr = $this->https_request($url);
                  $resultArr = $jokeArr['result']['data'];
                  // $content = $resultArr[0]['content'];
                  // return $this->replyText($xmlObj,$content);
                  $newsArr = array();
                  //判斷笑話接口是否獲取數(shù)據(jù)
                  if($jokeArr['error_code'] == 0)
                  {
                    foreach($resultArr as $item)
                    {
                      $newsArr[] = array(
                            "Title"=>$item['content'],
                            "Description"=>$item['updatetime'],
                            "PicUrl"=>$item['url'],
                            "Url"=>$item['url']
                          );
                    }        
                  }
                  return $newsArr;
                }
                //聚合數(shù)據(jù)-獲取歷史上的今天
                public function history($key)
                {
                  $m = idate('m');
                  $d = idate('d');
                  $day = "{$m}/{$d}";
                  $url = "http://v.juhe.cn/todayOnhistory/queryEvent.php?key={$key}&date={$day}";
                  $historyArr = $this->https_request($url);
                  $resultArr = $historyArr['result'];
                  // $content = $resultArr['title'];
                  // return $this->replyText($xmlObj,$content);
                  $newsArr = array();
                  //判斷接口是否獲取數(shù)據(jù)
                  if($jokeArr['error_code'] == 0)
                  {
                    foreach($resultArr as $item)
                    {
                      $newsArr[] = array(
                            "Title"=>$item['title'],
                            "Description"=>$item['date'],
                            "PicUrl"=>"",
                            "Url"=>""
                          );
                    }        
                  }
                  return $newsArr;
                }
                public function fund($key)
                {
                  $url = "http://japi.juhe.cn/jingzhi/query.from?key={$key}";
                  $fundArr = $this->https_request($url);
                  $resultArr = $fundArr['result'];
                  // $content = $resultArr['title'];
                  // return $this->replyText($xmlObj,$content);
                    
                  $newsArr = array();
                  //判斷接口是否獲取數(shù)據(jù)
                  if($jokeArr['error_code'] == 0)
                  {
                    foreach($resultArr as $item)
                    {
                      $newsArr[] = array(
                            "Title"=>$item['day'],
                            "Description"=>$item['title'],
                            "PicUrl"=>"",
                            "Url"=>"http://www.baidu.com"
                          );
                    }        
                  }
                  return $newsArr;
                }
                /**
                  *獲取基礎(chǔ)支持里面的接口調(diào)用憑證access_token并緩存access_token
                  *@return access_token string 接口憑證
                **/
                public function getAccessToken()
                {
                  //獲取memcache緩存的access_token
                  $access_token = $this->_memcache_get("access_token");
                  //如果緩存的access_token失效
                  if(!$access_token)
                  {  
                    //如果失效調(diào)用獲取接口憑證來獲取access_token
                    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
                    $outoptArr = $this->https_request($url);
                    if(!isset($outoptArr['errcode']))
                    {
                      //memcache緩存access_token
                      $this->_memcache_set("access_token",$outoptArr['access_token'],7000);
                      return $outoptArr['access_token'];
                    }
                  }  
                  return $access_token;
                }
                //初始化memcache
                private function _memcache_init()
                {
                  $mmc = new Memcache;
                  $ret = $mmc -> connect();
                  if ($ret == false) 
                  {
                    return;
                  } 
                  return $mmc;
                }
                //設(shè)置memcache
                private function _memcache_set($key,$value,$time=0)
                {
                  $mmc = $this->_memcache_init();
                  $mmc -> set($key,$value,0,$time);
                }
                //獲取memcahce
                private function _memcache_get($key)
                {
                  $mmc = $this->_memcache_init(); 
                  return $mmc -> get($key);  
                }
                //自定義菜單創(chuàng)建
                public function menu_create($data)
                {
                  $access_token = $this->getAccessToken();
                  //自定義菜單創(chuàng)建接口地址
                  $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$access_token}";
                  return $this->https_request($url,$data);
                }
                //自定義菜單刪除
                public function menu_delete()
                {
                  $access_token = $this->getAccessToken();
                  $url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={$access_token}";
                  return $this->https_request($url);
                }
              }
            ?>
            以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助