微信公眾平台開發,自定義菜單,群發消息,網頁授權(3)


前兩節說的都是微信開發的初級篇,這一節說高級篇。微信公眾號關注以后,下面都是有菜單的,底部有三個一級菜單,每個一級菜單可以添加5個二級菜單。一級菜單最多四個漢字,二級菜單最多7個漢字,多出來的漢字用“......”號,菜單自定義以后,由於緩存原因,需要取消再次關注才能生效。微信的菜單本質上就是一個按鈕,既然是按鈕,他就是有多種屬性的按鈕,微信開發中我們最常用的按鈕類型是clickview,其他的按鈕類型還有scancode_push(調用掃一掃)、scancode_waitmsgpic_sysphotopic_photo_or_albumpic_weixin等等,這些不常用而已。所以我主要說的菜單類型click,view這兩種,創建菜單,代碼如下:

<?php

          //自定義菜單需要access_token,所以我們這里先獲取票據access_token,這里可以寫一個方法,

         public function getToken(){

            //由於token一天的訪問次數是兩千次,並且每次的有效時長是7200秒,所以我們可以給他做一存儲,可以在cookie,session,redis,memcache,mysql中都可以,我們這里存儲在session中

             if( $SESSION['token'] && $SESSION[keeptime]>time() ){

                             //直接返回票據access_token()

                            return  $SESSION['token'];

                }else{

                   $appid = "";          //這里填寫你自己的公眾號里的appid

                   $appsecret = "";   //這里填寫你自己的公眾號里的appsecret

                   $url  =  "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

                   //初始化curl

                   $ch = curl_init();

                   //設置參數

                  curl_setopt($ch,CURLOPT_URL,$url);

                  curl_setopt($ch,CURLOPT_RETURNTRNSFER,1);

                  //執行curl

                  $token = curl_exec($ch);

                  //關閉curl

                  curl_close();

                  //由於返回的數據是json個格式,需要進行轉換

                  $token  = json_decode($token,true);

                  $SESSION['token'] = $token['access_token'];

                  $SESSION['keeptime'] = $tokenp['exprires_in']+time();

               }

         }

      //定義自定義菜單的方法

      public function createcai(){

                  //獲取token

                  $token = $this->$getToken();

                  //api請求URL,這里用的是POST方法

                  $url  =  "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token;

                  //數據設置

                  /**

                     下面是微信公眾平台官方提供的數據格式

                      {
          "button":[
          {
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
          },
          {
          "name":"菜單",
          "sub_button":[
            {
              "type":"view",
              "name":"搜索",
              "url":"http://www.soso.com/"
            },
            {
              "type":"miniprogram",
              "name":"wxa",
              "url":"http://mp.weixin.qq.com",
              "appid":"wx286b93c14bbf93aa",
              "pagepath":"pages/lunar/index"
             },
            {
              "type":"click",
              "name":"贊一下我們",
              "key":"V1001_GOOD"
            }]
           }]
          }

                 **/

                 //數據設置

                 $arr = array(

                              "button"=>array(

                                       array("type"=>"click","name"=>"今日新聞","key"=>"item1"),

                                       array("name"=>"網紅新聞","sub_button"=>array(

                                               array("type"=>"view","name"=>"網紅天佑","url"=>"http://www.baidu.com"),

                                               array("type"=>"click","name"=>"網紅大事件","key"=>"item2"),

                                       ),

                                      array("type"=>"click","name"=>"關於我們","key"=>"item3")

                                );

                  );

                //把上面的數據的轉換為json個格式,這里需要注意一個問題,json_encode()函數在轉換時,中文的會亂碼,所以這里需要urlencode()函數

               $arr = urldecode(json_decode(urlencode($arr)));

               //使用curl的post請求,curl在微信開發中的使用非常的頻繁,可以寫一個方法封裝好,我這里為了方便大家學習就沒有封裝

               $ch = curl_init();

               curl_setopt($ch,CURLOPT_URL,$url);

               curl_setopt($ch,CURLOPT_HEADER,false);

               curl_setopt($ch,CURLOPT_POSTFILDS,$arr);

               curl_setopt($ch,CURLOPT_POST,true);

               curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

               $res = curl_exec();

               if(curl_errno($ch)){

                     return curl_error($ch);

              }else{

                     return json_decode($res,true);

               }

               curl_close();

       }

      這樣自定義菜單就實現了,其實還是非常簡單的,需要大家反復的聯系。

微信公眾號群發功能也是一個常見的功能,群發功能是訂閱號每天一次,服務號是一個月4次,所以開發的時候切記不要直接用群發接口,可以使用預覽接口,這樣可以防止錯誤后不能再發順。群發可以是文本,圖片,視頻,音頻等。這個功能實現起來也是非常簡單,話不多說,代碼如下:

<?php

          //這里我調用的接口是預覽接口,其實是一樣的,只是把請求的URL換掉就可以了

          public function qunfa(){

                   //獲取token

                   $token = $this->getToken();

                  //這是預覽接口的url,POST請求

                   $url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$token;

                  /**

                     這是文本的格式

                     {
        "touser":"OPENID",
        "text":{
          "content":"CONTENT"
         },
        "msgtype":"text"
       }

                 **/

                   //設置數據,按照文檔給的文本格式

                  $arr = array(

                          "touser"=>" 填寫用戶ID","text"=>array("content"=>"大家好,新年快樂!"),"msgtype"=>"text"  

                  );

                 //curl發順請求

                 $ch = curl_init();

                 //設置參數

                curl_setopt($ch,CURLOPT_URL,$url);

                curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

                curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);

                curl_setopt($ch,CURLOPT_POST,true);

                $res = curl_exec();

                if(curl_errno($ch)){

                        return curl_error($ch);

               }else{

                      return json_decode($res,true);

              }

         }

以上就是預覽群發功能,接下來是給大家講一講網頁授權的功能

網頁授權是微信開發非常重要的知識點,也是必須要掌握的,在公司的營銷,以及業務場景中是經常用到的,學習的時候建議結合開發文檔進行,應用場景:如果用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯。今天有點累了,后邊明天給大家分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM