1、簡介php
微信公衆平臺服務號以及以前成功申請內測資格的訂閱號都具備自定義菜單的功能。開發者可利用該功能爲公衆帳號的會話界面底部增長自定義菜單,用戶點擊菜單中的選項,能夠調出相應的回覆信息或網頁連接。自定義菜單接口將爲公衆帳號的信息展現空間提供更多可能性。本文將針對自定義菜單作簡單的開發應用,以供讀者參考。web
2、官方說明json
開發者獲取使用憑證後,可使用該憑證對公衆帳號的自定義菜單進行建立、查詢和刪除等操做。 自定義菜單接口可實現如下類型按鈕:api
click(點擊事件):瀏覽器
用戶點擊click類型按鈕後,微信服務器會經過消息接口(event類型)推送點擊事件給開發者,而且帶上按鈕中開發者填寫的key值,開發者能夠經過自定義的key值進行消息回覆。緩存
view(訪問網頁):服務器
用戶點擊view類型按鈕後,會直接跳轉到開發者指定的url中。微信
建立自定義菜單後,因爲微信客戶端緩存,須要24小時微信客戶端纔會展示出來。建議測試時能夠嘗試取消關注公衆帳號後,再次關注,則能夠看到建立後的效果。app
3、獲取使用憑證
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失效。
4、建立菜單
方法:經過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,運行結果以下:
測試結果:
菜單建立成功。
5、查詢菜單
查詢當前使用的自定義菜單結構。
請求地址: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;
運行結果:
菜單查詢成功。
6、刪除菜單
取消當前使用的自定義菜單。
請求地址: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 "菜單刪除失敗"; }
運行結果:
測試結果:
菜單刪除成功。
7、完整代碼獲取
請訪問 樂思樂享 官方網盤
URL:http://pan.baidu.com/s/1c0s3Jby
8、關注
請關注 卓錦蘇州 微信公衆賬號,卓錦蘇州 基於BAE 平臺開發,針對於主流的微信功能進行開發測試。
您能夠關注 卓錦蘇州 公衆賬號進行功能測試,以及獲取新的應用開發。
1. 登陸微信客戶端,通信錄 -> 添加朋友 -> 查找公衆號 -> zhuojinsz,查找並關注。
2. 掃描二維碼:
卓錦蘇州 菜單功能:
David Camp
咱們永遠相信,分享是一種美德 | We Believe, Great People Share Knowledge...