微信公衆平臺開發入門教程(圖文)

 

關鍵字:微信公衆平臺開發入門php

做者:貝創工做室html

原文: http://www.cnblogs.com/imaker/p/5491433.htmlmysql

 

      背景知識:微信公衆平臺的開發須要有必定的PHP基礎知識,PHP是一種HTML內嵌式的語言,普遍用於網站開發。微信服務器和開發者的服務器間有兩種數據傳輸方式,分別是XML和JSON。其中XML主要用在接受發送普通消息和事件推送中,而用戶管理、建立自定義菜單和高級羣發等則須要用到JOSN格式數據。git

 

在這篇微信公衆平臺開發教程中,你能夠跟着教程一塊兒在總體上感性瞭解微信公衆平臺的開發框架,能夠幫助你更好的去入手。web

咱們將使用微信公衆帳號西安校園創客空間做爲講解的例子,二維碼見底部。sql

這個入門教程將引導你學會完成以下任務:數據庫

    1. 申請新浪雲計算並建立平臺應用
    2. 申請虛擬主機及爲微信平臺搭建環境
    3. 進入微信公衆平臺開發模式與接入服務器
    4. 接口的調用與經常使用功能的實現

 

                                                     第一節json

 

申請新浪雲計算並建立平臺應用api

 

    1. 建立新浪雲計算SAE應用引擎瀏覽器

      申請新浪雲帳號

      若是咱們使用SAE新浪雲計算平臺做爲服務器資源,而且申請PHP環境+MySQL數據庫做爲程序運行環境。
      則申請地址爲:

      http://www.sinacloud.com/

      直接點擊上述網址,能夠看到右上角微博登陸的連接。

      點擊進入以後,使用新浪微博帳號進行登陸 

      登陸以後,按照提示註冊我的信息便可。 

      建立新應用 

      回到首頁,在菜單頂部選擇 控制檯 ,再選擇 雲應用SAE 

    2. 進入SAE應用列表

    3. 點擊下側的建立新應用,這時會彈出提示, 禁止放置違法違規內容,點擊繼續建立,彈出以下窗口。

      選擇一個未使用的appid,若是總是已經被使用不知道該什麼好,就填寫你的QQ號或者手機號吧。

      填寫二級域名AppID、應用名稱、驗證碼,開發語言選擇PHP5.3,所有應用和框架下面選擇第一個【PHP 空應用】。而後點擊左下方的建立應用

      應用建立成功。並自動跳轉到應用列表中,能夠看到已經有剛纔建立的西安校園創客空間這個應用。

      建立版本 

      點擊剛纔建立的應用名稱,進入應用主頁。

      點擊左側的應用管理下面的代碼管理,

       

    4.  

      跳轉到代碼管理

      點擊右側的「建立版本」

      我建立的是520,可是版本號默認爲1,輸入後點擊建立,會彈出安全登陸,須要輸入安全密碼,若是不知道或者忘記了,就點裏面的找回密碼,從新設置一下就好了。

      驗證經過以後,以下所示

      到這裏,就成功建立了一個域名URL爲 http://1.xaxymaker.applinzi.com/ 的應用了,記住你的這個URL,後面開發模式接入時將會用到。

      上傳代碼 

      下述代碼是一個微信接口文件,看不懂沒有關係,你把代碼拿去直接用就好了,後面你可能慢慢會明白!

    5.  1 <?php
       2 //判斷用戶發送消息類型 貝創工做室 CopyRight 2016
       3 
       4 
       5 define("TOKEN", "weixin");
       6 // $conn=mysql_connect('localhost','job','G2yI2zFR'); // 使用數據表 a_news
       7 // mysql_select_db('sqljob',$conn);
       8 // mysql_query("SET NAMES 'UTF8'"); 
       9 // mysql_query("SET CHARACTER SET UTF8"); 
      10 // mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");
      11 
      12 $wechatObj = new wechatCallbackapiTest();
      13 if (!isset($_GET['echostr'])) {
      14 // $wechatObj->responseMsg();
      15 $wechatObj->responseMsg();
      16 // $test->jianyan();
      17 }else{
      18 $wechatObj->valid();
      19 }
      20 
      21 class wechatCallbackapiTest
      22 {
      23 public $fromUsername='';
      24 public $toUsername='';
      25 public function valid()
      26 {
      27 $echoStr = $_GET["echostr"];
      28 if($this->checkSignature()){
      29 echo $echoStr;
      30 exit;
      31 }
      32 }
      33 
      34 private function checkSignature()
      35 {
      36 $signature = $_GET["signature"];
      37 $timestamp = $_GET["timestamp"];
      38 $nonce = $_GET["nonce"];
      39 $token = TOKEN;
      40 $tmpArr = array($token, $timestamp, $nonce);
      41 sort($tmpArr, SORT_STRING);
      42 $tmpStr = implode($tmpArr);
      43 $tmpStr = sha1($tmpStr);
      44 
      45 if($tmpStr == $signature){
      46 return true;
      47 }else{
      48 return false;
      49 }
      50 }
      51 
      52 public function responseMsg(){
      53 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
      54 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
      55 $fromUsername = $postObj->FromUserName;
      56 $toUsername = $postObj->ToUserName;
      57 $type = $postObj->MsgType;
      58 $event=$postObj->Event;
      59 $Event_Key=$postObj->EventKey;
      60 $mid=$postObj->MediaId;
      61 $link=$postObj->Url;
      62 
      63 $latitude = $postObj->Location_X;
      64 $longitude = $postObj->Location_Y;
      65 $keyword = trim($postObj->Content);
      66 $time = time();
      67 $textTpl = "<xml>
      68 <ToUserName><![CDATA[%s]]></ToUserName>
      69 <FromUserName><![CDATA[%s]]></FromUserName>
      70 <CreateTime>%s</CreateTime>
      71 <MsgType><![CDATA[text]]></MsgType>
      72 <Content><![CDATA[%s]]></Content>
      73 </xml>"; 
      74 if($keyword!=''){ $contentStr=$keyword;}
      75 elseif($type=="image"){$contentStr="您發送的是圖片消息,消息的MediaId是".$mid;}
      76 elseif($type=="voice"){$contentStr="您發送的是語音消息,消息的MediaId是".$mid;}
      77 elseif($type=="video"){$contentStr="您發送的是視頻消息,消息的MediaId是".$mid;}
      78 elseif($type=="location"){$contentStr="您發送的是地理位置消息,您的地理位置是:經度".$latitude."維度:".$longitude;}
      79 elseif($type=="link"){$contentStr="您發送的是連接消息,消息連接爲".$link;}
      80 elseif($type=="event" && $event=="subscribe"){$contentStr="歡迎關注西安校園創客空間的微信公衆帳號,帶你進入奇妙有趣的微信公衆號開發之旅";}
      81 elseif($type="event" && $event=="unsubscribe"){$contentStr="期待您再次關注西安校園創客空間微信公衆帳號。";}
      82 else{echo "";}
      83 
      84 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr);
      85 echo $resultStr;
      86 
      87 }
      88 
      89 }
      90 
      91 
      92 ?>

      咱們將使用上述代碼與微信公衆平臺對接。

       

    6. 將上述代碼用專業的軟件存爲utf-8格式的index.php文件後再使用WinRAR壓縮爲index.zip,或者關注西安校園創客空間微信公衆號免費獲取爲您打包好的豐富微信公衆平臺開發代碼與開發教程。( 直接下載咱們已經壓縮好的上述代碼的zip文件  下載 
    7. 回到SAE的代碼管理界面中。

      再選擇「上傳代碼包」,點擊上傳文件,選擇剛纔的index.zip文件,點擊上傳,上傳成功後中間是一個綠色的橫條,以下所示

      若是沒有綠色的橫條,表示上傳失敗,須要重試。能夠考慮在Chrome瀏覽器下重試一下。

      點擊編輯代碼按鈕,

       有時候須要輸入本身的安全密碼,若是不記得了就點擊「找回密碼」。

      安全驗證成功後繼續以前的操做。

      咱們能夠看到index.php已經上傳成功,雙擊能夠查看編輯裏面的代碼

      新浪雲應用的建立就成功了。

      充值(本步驟可選擇性進行)

      新浪雲SAE實行的是配額免費+超額付費的方式,相關標準請查看SAE價格體系介紹。初期對於大部分用戶來講免費配額已夠用,若是您未來使用量比較大建議預先至少充值100元得到10000雲豆,以避免超額後應用被禁用而影響業務。

 

 

      第二節  申請虛擬主機及爲微信平臺搭建環境

  1.   申請虛擬主機

         這裏我使用的是雲邦互聯的虛擬空間爲你們做以演示,首先,打開網站以下圖:

               

 

          而後在右上角按照提示註冊便可,選擇使用1G的免費空間。

    二、開通空間以後打開控制面板,就能夠看到主機信息了。

         

   三、接下來咱們用 8uftp 登錄虛擬空間。

       

 

 

    四、登陸以後,用 8uftp   將 index.php 文件上傳到虛擬空間的根目錄中的web文件夾下,以下:

       

      至此,你使用虛擬空間爲微信公衆平臺搭建服務器就成功了,後續只要將實現相應功能的代碼經過8uftp上傳上去便可。

 

 

 

第三節 啓用開發模式與接入服務器

微信公衆平臺開發模式

高級功能

微信公衆平臺地址:https://mp.weixin.qq.com

登陸微信公衆平臺後臺,在左側列表中最下方,找到「 基本配置 」,點擊進入

進入服務器配置填寫框。

點擊「修改配置」按鈕,則出現下圖。

此處的URL爲上篇中介紹的雲應用的域名,而Token在index.php中定義爲weixin。EncodingAESKey則不用填,點擊「隨機生成」讓自動生成一個,消息加解密方式選擇「明文模式」,而後點擊「提交」按鈕。

在彈出的提示框中,點擊「肯定」

配置修改後如圖所示,再點擊「啓用」按鈕

詢問「是否肯定開啓服務器配置」,點擊「肯定」

若是提示「token驗證失敗」,能夠先重次幾回,微信服務器有時候不穩定。若是使用新浪SAE可能要求進行實名認證,請先上傳身份證進行實名認證並經過審覈後再試!

 

 

                   

 

 

                     若是仍是失敗,請先用微信調試器測試一下url和token是否正確。(直接在百度搜索 會有好多免費的哦)

    1. 成功啓用後如上圖。

      這使的你是否有一股興奮與驚喜,你已經成功的啓用微信開發模式。

       

第四節   接口的調用與經常使用功能的實現

             

   示例1:API調用之百度翻譯

        申請百度翻譯API接口

下面介紹如何使用百度翻譯 API 製做擁有翻譯功能的公衆帳號。

    一、首先,登錄申請成爲百度開發者,申請連接地址爲 http://developer.baidu.com/ 。申請成爲開發者以後,登錄該網站,在管理控制檯的下拉菜單中選擇開發者服務管理,以下圖所示。

   

  1. 咱們經過調用百度翻譯的API能夠實現英文翻譯中文,中文翻譯英文,中文翻譯日文,日文翻譯中文。目前百度AIP支持這三種語言的翻譯

  2. 首先進入百度翻譯的網頁,網站以下箭頭所示

  3. 進入後點擊「使用指南」

  4. 進入使用智能頁面後,網下瀏覽頁面,在頁面中間部分,便可看到百度翻譯的API接口

  5. 根據上面的接口,咱們能夠構建接口代碼:

    http://openapi.baidu.com/public/2.0/bmt/translate?client_id=uA6zT1kh5O1UXvTrUuFjFHiK&q={$keyword}&from=auto&to=auto

    「9peNkh97N6B9GGj9zBke9tGQ」這一串爲本身的百度密鑰,在百度的應用中心單擊基本信息能夠看到

  6. 關鍵代碼爲:

    case "text";

    $tranurl="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=uA6zT1kh5O1UXvTrUuFjFHiK&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;//讀取翻譯內容

    break;

  7. 登陸手機微信,最後實現的結果以下:

     所用代碼以下:
 1 <?php
 2 // 百度翻譯  貝創工做室  CopyRight 2016 
 3 define("TOKEN", "weixin");
 4 $wechatObj = new wechatCallbackapiTest();
 5 if (!isset($_GET['echostr'])) {
 6     $wechatObj->responseMsg();
 7 }else{
 8     $wechatObj->valid();
 9 }
10 
11 class wechatCallbackapiTest
12 {
13     public $fromUsername='';
14     public $toUsername='';
15  public function valid()
16     {
17         $echoStr = $_GET["echostr"];
18         if($this->checkSignature()){
19             echo $echoStr;
20             exit;
21         }
22     }
23 
24     private function checkSignature()
25     {
26         $signature = $_GET["signature"];
27         $timestamp = $_GET["timestamp"];
28         $nonce = $_GET["nonce"];
29         $token = TOKEN;
30         $tmpArr = array($token, $timestamp, $nonce);
31         sort($tmpArr, SORT_STRING);
32         $tmpStr = implode($tmpArr);
33         $tmpStr = sha1($tmpStr);
34 
35         if($tmpStr == $signature){
36             return true;
37         }else{
38             return false;
39         }
40     }
41 
42     public function responseMsg(){
43         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
44             $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
45                 $fromUsername = $postObj->FromUserName;
46                 $toUsername = $postObj->ToUserName;
47                 $type = $postObj->MsgType;
48                 $event=$postObj->Event;
49                 $Event_Key=$postObj->EventKey;
50                 $mid=$postObj->MediaId;
51                 $link=$postObj->Url;
52             
53                 $latitude  = $postObj->Location_X;
54                 $longitude = $postObj->Location_Y;
55                 $keyword = trim($postObj->Content);
56                 $time = time();
57                  $textTpl = "<xml>
58                             <ToUserName><![CDATA[%s]]></ToUserName>
59                             <FromUserName><![CDATA[%s]]></FromUserName>
60                             <CreateTime>%s</CreateTime>
61                             <MsgType><![CDATA[text]]></MsgType>
62                             <Content><![CDATA[%s]]></Content>
63                             </xml>"; 
64                             if($keyword!=''){
65                             $id="R90FXoW4OPtCbLkD9Aiaihz0";
66 $url="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=$id&q=$keyword&from=auto&to=auto";
67 $res=file_get_contents($url);
68 $res=json_decode($res,true);
69 $contentStr=$res['trans_result'][0]['dst'];
70 }                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr);
71                     echo $resultStr;
72   }
73 }
74 ?>

 

 

           

   示例2:API調用之小黃雞

一、註冊simsimi 帳號

URL: http://developer.simsimi.com/signUp

二、 激活帳號

三、 獲取API Key

   四、   具體實現

         調用小黃雞API 實現

調用simsim($keyword) 函數處理,將其中的「Your API Key」 換成申請到的API Key。

  //小黃雞   貝創工做室   CopyRight 2016
    public function simsim($keyword){

        $key="41250a68-3cb5-43c8-9aa2-d7b3caf519b1";
        $url_simsimi="http://sandbox.api.simsimi.com/request.p?key=".$key."&lc=ch&ft=0.0&text=".$keyword;
        
        $json=file_get_contents($url_simsimi);  // 把整個文件讀入一個字符串中

        $result=json_decode($json,true);  // 對JSON 格式的字符串進行編碼

        //$errorCode=$result['result'];  // 調試用

        $response=$result['response'];  // 回覆的消息

        if(!empty($response)){
            return $response;
        }else{
            $ran=rand(1,5);
            switch($ran){
                case 1:
                    return "小雞雞今天累了,明天再陪你聊天吧。";
                    break;
                case 2:
                    return "小雞雞睡覺嘍~~";
                    break;
                case 3:
                    return "呼呼~~呼呼~~";
                    break;
                case 4:
                    return "你話好多啊,不跟你聊了";
                    break;
                case 5:
                    return "感謝您關注西安校園創客空間"."\n"."微信號:xaxymaker"."\n";
                    break;
                default:
                    return "感謝您關注西安校園創客空間"."\n"."微信號:xaxymaker"."\n";
                    break;
            }
        }
    }

 

 

       同時,微信公衆號還能夠實現 天氣查詢 火車查詢 快遞查詢 會員卡、優惠券、大轉盤、微網站、3G相冊之類的。微菜單,微網站,微會員,微團購,微調研,微相冊,微推送,微統計,微支付,微客服,等等功能。

          

 

 

 以上即是簡單的微信公衆平臺基本教程,若是你用心感悟了,感受你有所收穫了,一切始於實踐,請按照教程入手,開啓你的微信開發之旅吧!!  若是還有什麼不懂的,請掃一掃公衆號二維碼關注,回覆「代碼」、「微信教程」 ...   所有視頻教程 代碼資料 等着你!!!

         感謝你的閱讀,請用心感悟!但願能夠幫到初學的您!!分享也是一種快樂!!!請接力。。。

                               

                                            更多相關教程  傳送門  (點擊 傳送門 便可到達)

 

                               :本博客內容版權爲貝創工做室博客與博客園共有,若您須要引用、轉載,須要註明來源及原文連接,如涉及大面積轉載,請來信告知,獲取受權。

相關文章
相關標籤/搜索