ThinkPHP微信demo實例

瀏覽:140569 發布日期:2013/08/03 分類:技術分享
這個是我自己做的,用麥當苗兒的微信類做的~
先說說詳細做出來的效果吧:RBAC權限控制,還有就是一些api效果實線:(小黃雞聊天,快遞查詢,天氣查詢,翻譯查詢,會員模塊,優惠信息后臺控制)。都是一些很簡單的效果!
如圖:
,因為微信只會給你保存信息是5天,公司要用到公眾平臺,就不得不進行開發了,第一點,就是把用戶發送的數據寫入數據庫。我是直接在苗兒的weixin控制器里面的index方法直接加了一句寫入數據庫的操作,

我們先不商量這里寫入是否合理,反正是可以寫入就對了~

然后我的后臺就可以接收了:


在這里我說一句,在這里,微信不會給你到微信用戶的用戶名,他在他的api接口的文檔上面說明的是發送方帳號(一個OpenID) ,然后我們繼續延續到下一個話題,也就是會員模塊,第一:加入企業用戶就可以直接獲取用戶的資料了,第二,用戶申請資料的時候也會傳入一個發送方帳號(一個OpenID) ,這樣我們把之前的表用視圖模型關聯就可以實線想我的那個圖一樣的效果,就是假如會員有注冊,就是顯示用戶名注冊的用戶名,假如沒注冊就是顯示發送方帳號(一個OpenID) ,這個是個取舍的辦法,暫時我只想到了這個方式去獲到用戶名。

這個是我獲取到的用戶:

然后在微信信息管理里面只要是他們用微信發送消息過來的就是是顯示他們的用戶名了,不然就還是openid,如果要是有人用別的方式能獲取到用戶名,希望大濕開光指點一下小弟!
然后就是給大家api接口了,這個應該算個小小的福利吧,只要你有公眾帳號就直接可以用,<?php
/***微信api接口處理函數****/ 

  
  //天氣查詢函數
  function _getWeather($keyword){
        $cityname = trim(substr($keyword,6,strlen($keyword)-6));
        $url = "http://api.map.baidu.com/telematics/v2/weather?location={$cityname}&ak=1a3cde429f38434f1811a75e1a90310c";
        $fa=file_get_contents($url);
        $f=simplexml_load_string($fa);
        $city=$f->currentCity;
        $da1=$f->results->result[0]->date;
        $da2=$f->results->result[1]->date;
        $da3=$f->results->result[2]->date;        
        $w1=$f->results->result[0]->weather;
        $w2=$f->results->result[1]->weather;
        $w3=$f->results->result[2]->weather;        
        $p1=$f->results->result[0]->wind;
        $p2=$f->results->result[1]->wind;
        $p3=$f->results->result[2]->wind;
        $q1=$f->results->result[0]->temperature;
        $q2=$f->results->result[1]->temperature;
        $q3=$f->results->result[2]->temperature;
        $d1=$cityname.$da1.$w1.$p1.$q1;
        $d2=$cityname.$da2.$w2.$p2.$q2;
        $d3=$cityname.$da3.$w3.$p3.$q3;
        $msg =<<<str
         $d1
         $d2
         $d3
str;
        return $msg;
      }
  
  

      
  //翻譯函數
  function _fanyi($keyword){
      $keyword = trim(substr($keyword,6,strlen($keyword)-6));
      $tranurl="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=9peNkh97N6B9GGj9zBke9tGQ&q={$keyword}&from=auto&to=auto";//百度翻譯地址
      $transtr=file_get_contents($tranurl);//讀入文件
      $transon=json_decode($transtr);//json解析
      //print_r($transon);
      $contentStr = $transon->trans_result[0]->dst;//讀取翻譯內容
      return $contentStr;
      }
      

  
  //快遞查詢函數
  function _getDindan($keyword){
        $keyword = trim(substr($keyword,6,strlen($keyword)-6));
          $status=array('0'=>'查詢出錯','1'=>'暫無記錄','2'=>'在途中','3'=>'派送中','4'=>'已簽收','5'=>'拒收','6'=>'疑難件','7'=>'退回');//構建快遞狀態數組
        $kuaidiurl="http://www.aikuaidi.cn/rest/?key=ff4735a30a7a4e5a8637146fd0e7cec9&order={$keyword}&id=shentong&show=xml";//快遞地址
        $kuaidistr=file_get_contents($kuaidiurl);//讀入文件
        $kuaidiobj=simplexml_load_string($kuaidistr);//xml解析
        $kuaidistatus = $kuaidiobj->Status;//獲取快遞狀態
        $kuaistr=strval($kuaidistatus);//對象轉換為字符串
        $contentStr0 =$status[$kuaistr];//根據數組返回
        foreach ($kuaidiobj->Data->Order as $a)
         {    
         foreach ($a->Time as $b)
           {
            foreach ($a->Content as $c)
            {$m.="{$b}{$c}";}
            }
         }
        //遍歷獲取快遞時間和事件
        $contentStr="你的快遞單號{$keyword}{$contentStr0}{$m}";
        return $contentStr;
      }
      
     //小黃雞函數
     function _xiaohuangji($keyword){
         $keyword = trim(substr($keyword,1,strlen($keyword)-1));
         $strurl="http://sandbox.api.simsimi.com/request.p?key=e0f1c913-fe3a-40ad-904f-5467677a38b7&lc=ch&text='{$keyword}'";
         $fa=file_get_contents($strurl);
         $strjson=json_decode($fa);
         $contentStr = $strjson->response;
         return $contentStr;
         }


?>
用的方法就是 //微信首頁方法
    public function index(){
        /* 加載微信SDK */
        import('@.ORG.ThinkWechat');
        $weixin = new ThinkWechat('yangyifan');

        /* 獲取請求信息 */
        $data = $weixin->request();
        
        /* 獲取回復信息 */
        
        
        
        list($content, $type) = $this->reply($data);
        
        M('info')->data($data)->add();
        
        //天氣
        if(substr($data['Content'],0,6) == '天氣'){
            $content = _getWeather($data['Content']);
            $type = 'text';
        
        //翻譯    
        }else if(substr($data['Content'],0,6) == '翻譯'){
            $content = _fanyi($data['Content']);
            $type = 'text';
        
        //快遞    
        }else if(substr($data['Content'],0,6) == '快遞'){
            $content = _getDindan($data['Content']);
            $type = 'text';
            
        //小黃雞    
        }else if(substr($data['Content'],0,1) == '@'){
            $content = _xiaohuangji($data['Content']);
            $type = 'text';
            
        //幫助
        }else{
            $content = '';
            }
            
        $weixin->response($content, $type);
        
    }
最佳答案
評論( 相關
后面還有條評論,點擊查看>>
滚雪球理财骗局揭秘