微信公眾平臺開發(八) 自定義選單功能開發

Merlin_Tang發表於2013-08-26

一、簡介

微信公眾平臺服務號以及之前成功申請內測資格的訂閱號都具有自定義選單的功能。開發者可利用該功能為公眾賬號的會話介面底部增加自定義選單,使用者點選選單中的選項,可以調出相應的回覆資訊或網頁連結。自定義選單介面將為公眾賬號的資訊展示空間提供更多可能性。本文將針對自定義選單做簡單的開發應用,以供讀者參考。

二、官方說明

開發者獲取使用憑證後,可以使用該憑證對公眾賬號的自定義選單進行建立、查詢和刪除等操作。 自定義選單介面可實現以下型別按鈕:

click(點選事件):

使用者點選click型別按鈕後,微信伺服器會透過訊息介面(event型別)推送點選事件給開發者,並且帶上按鈕中開發者填寫的key值,開發者可以透過自定義的key值進行訊息回覆。

view(訪問網頁):

使用者點選view型別按鈕後,會直接跳轉到開發者指定的url中。

建立自定義選單後,由於微信客戶端快取,需要24小時微信客戶端才會展現出來。建議測試時可以嘗試取消關注公眾賬號後,再次關注,則可以看到建立後的效果。

文件地址:http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E6%8E%A5%E5%8F%A3

三、獲取使用憑證

3.1 獲取appid 和appsecret

在 微信公眾平臺 > 高階功能 > 開發模式中找到appid 和appsecret。

 

3.2 使用appid 和appsecret 向微信憑證獲取介面請求access_token

請求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

請求引數說明:

grant_type:獲取access_token填寫client_credential

appid:第三方使用者唯一憑證

secret:第三方使用者唯一憑證金鑰,既appsecret

返回說明:

正確的Json返回結果:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

返回引數說明:

access_token:獲取到的憑證

expires_in:憑證有效時間,單位:秒

3.3 具體實現

a. 列印出格式

<?php

$APPID="wxdxxxxxxxxxxxxxxx";
$APPSECRET="96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

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

$json=file_get_contents($TOKEN_URL);
$result=json_decode($json,true);
print_r($result);

?>

結果如下:

b. 獲取access_token

<?php

$APPID="wxdxxxxxxxxxxxxxxx";
$APPSECRET="96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

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

$json=file_get_contents($TOKEN_URL);
$result=json_decode($json,true);

$ACC_TOKEN=$result['access_token'];

echo $ACC_TOKEN;

?>

注:access_token對應於公眾號是全域性唯一的票據,重複獲取將導致上次獲取的access_token失效。 

四、建立選單

方法:透過POST一個特定結構體,實現在微信客戶端建立自定義選單。

請求地址:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

請求示例:

{
 "button":[
 {
       "name":"公共查詢",
       "sub_button":[
        {
           "type":"click",
           "name":"天氣查詢",
           "key":"tianQi"
        },
        {
           "type":"click",
           "name":"公交查詢",
           "key":"gongJiao"
        },
        {
           "type":"click",
           "name":"翻譯",
           "key":"fanYi"
        }]
  },
  {
       "name":"蘇州本地",
       "sub_button":[
        {
           "type":"click",
           "name":"愛上蘇州",
           "key":"loveSuzhou"
        },
        {
           "type":"click",
           "name":"蘇州景點",
           "key":"suzhouScenic"
        },
        {
           "type":"click",
           "name":"蘇州美食",
           "key":"suzhouFood"
        },
        {
           "type":"click",
           "name":"住在蘇州",
           "key":"liveSuzhou"
        }]
   },
   {
       "type":"click",
       "name":"聯絡我們",
       "key":"lianxiUs"
   }]
}

示例說明:

選單結構及說明:

{
 "button":[             //button定義該結構為一個選單
  {
       "name":"分支主選單名",  
       "sub_button":[    //sub_button定義子選單
        {
           "type":"click",  //按鈕型別
           "name":"分支子選單名1",  //選單名稱
           "key":"loveSuzhou"  //選單key值
        },
        {
           "type":"click",
           "name":"分支子選單名2",
           "key":"liveSuzhou"
        }]
   },    //選單之間用 , 分隔
   {
       "type":"click",
       "name":"獨立選單",
       "key":"lianxiUs"
   }]
}

返回說明:

正確的Json返回結果:

{"errcode":0,"errmsg":"ok"}

提交選單:

透過curl 提交以上的選單資料,程式碼如下:

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

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $MENU_URL); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$info = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Errno'.curl_error($ch);
}

curl_close($ch);

var_dump($info);

生成選單:

建立選單的程式碼提交到伺服器後,並不是自動就出來了,需要透過執行該程式碼檔案才能生成,所以,開啟瀏覽器,在位址列裡輸入完整的選單程式碼URL,執行結果如下:

測試結果:

選單建立成功。

五、查詢選單

查詢當前使用的自定義選單結構。

請求地址:https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN

curl 程式碼如下:

$MENU_URL="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=".$ACC_TOKEN;

$cu = curl_init();
curl_setopt($cu, CURLOPT_URL, $MENU_URL);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
$menu_json = curl_exec($cu);
$menu = json_decode($menu_json);
curl_close($cu);

echo $menu_json;

執行結果:

選單查詢成功。

六、刪除選單

取消當前使用的自定義選單。

請求地址:https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

curl 程式碼如下:

$MENU_URL="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$ACC_TOKEN;

$cu = curl_init();
curl_setopt($cu, CURLOPT_URL, $MENU_URL);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
$info = curl_exec($cu);
$res = json_decode($info);
curl_close($cu);

if($res->errcode == "0"){
    echo "選單刪除成功";
}else{
    echo "選單刪除失敗";
}

執行結果:

測試結果:

選單刪除成功。

七、完整程式碼獲取

請訪問 樂思樂享 官方網盤

URLhttp://pan.baidu.com/s/1c0s3Jby

八、關注

請關注 卓錦蘇州 微信公眾帳號,卓錦蘇州 基於BAE 平臺開發,針對於主流的微信功能進行開發測試。

您可以關注 卓錦蘇州 公眾帳號進行功能測試,以及獲取新的應用開發。

1. 登入微信客戶端,通訊錄 -> 新增朋友 -> 查詢公眾號 -> zhuojinsz,查詢並關注。

2. 掃描二維碼:

卓錦蘇州 選單功能:

 


David Camp

我們永遠相信,分享是一種美德 | We Believe, Great People Share Knowledge...

相關文章