簡介
開發者獲取使用憑證(如何獲取憑證)后,可以使用該憑證對公眾賬號的自定義菜單進行創建、查詢和刪除等操作。 自定義菜單接口可實現以下類型按鈕:
click(點擊事件):
用戶點擊click類型按鈕后,微信服務器會通過消息接口(event類型)推送點擊事件給開發者,並且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值進行消息回復。
創建自定義菜單后,由於微信客戶端緩存,需要24小時微信客戶端才會展現出來。建議測試時可以嘗試取消關注公眾賬號后,再次關注,則可以看到創建后的效果。
菜單創建
接口說明
通過POST一個特定結構體,實現在微信客戶端創建自定義菜單。
請求說明
http請求方式:POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
請求示例
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"歌手簡介",
"key":"V1001_TODAY_SINGER"
},
{
"name":"菜單",
"sub_button":[
{
"type":"click",
"name":"hello word",
"key":"V1001_HELLO_WORLD"
},
{
"type":"click",
"name":"贊一下我們",
"key":"V1001_GOOD"
}]
}]
}
創建后效果:
參數說明
參數 | 是否必須 | 說明 |
---|---|---|
button | 是 | 按鈕數組,按鈕個數應為1~3個 |
sub_button | 否 | 子按鈕數組,按鈕個數應為1~5個 |
type | 是 | 按鈕類型,目前有click類型 |
name | 是 | 按鈕描述,既按鈕名字,不超過16個字節,子菜單不超過40個字節 |
key | 類型為click必須 | 按鈕KEY值,用於消息接口(event類型)推送,不超過128字節 |
返回說明
正確的Json返回結果:
{"errcode":0,"errmsg":"ok"}
錯誤的Json返回結果
{"errcode":40018,"errmsg":"invalid button name size"}
菜單查詢
接口說明
查詢當前使用的自定義菜單結構。
請求說明
http請求方式:GET https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
返回說明
對應創建接口,正確的Json返回結果: {"menu":{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","sub_button":[]},{"type":"click","name":"歌手簡介","key":"V1001_TODAY_SINGER","sub_button":[]},{"name":"菜單","sub_button":[{"type":"click","name":"hello word","key":"V1001_HELLO_WORLD","sub_button":[]},{"type":"click","name":"贊一下我們","key":"V1001_GOOD","sub_button":[]}]}]}}
菜單刪除
接口說明
取消當前使用的自定義菜單。
請求說明
http請求方式:GET https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
返回說明
對應創建接口,正確的Json返回結果: {"errcode":0,"errmsg":"ok"}
請先確保公眾賬號已經擁有接口調用權限。
默認每個公眾帳號都不能超過下面的頻率限制。 當超出調用接口頻率限制,調用對應接口將會收到如下錯誤信息:
{"errcode":45009,"errmsg":"api freq out of limit"}
接口調用頻率限制
接口名稱 | 頻率限制 |
---|---|
獲取憑證接口 | 200(次/天) |
自定義菜單創建接口 | 100(次/天) |
自定義菜單查詢接口 | 1000(次/天) |
自定義菜單刪除接口 | 100(次/天) |
返回碼說明
返回碼 | 說明 |
---|---|
-1 | 系統繁忙 |
0 | 請求成功 |
40001 | 驗證失敗 |
40002 | 不合法的憑證類型 |
40003 | 不合法的OpenID |
40004 | 不合法的媒體文件類型 |
40005 | 不合法的文件類型 |
40006 | 不合法的文件大小 |
40007 | 不合法的媒體文件id |
40008 | 不合法的消息類型 |
40009 | 不合法的圖片文件大小 |
40010 | 不合法的語音文件大小 |
40011 | 不合法的視頻文件大小 |
40012 | 不合法的縮略圖文件大小 |
40013 | 不合法的APPID |
40014 | 不合法的access_token |
40014 | 不合法的access_token |
40015 | 不合法的菜單類型 |
40016 | 不合法的按鈕個數 |
40017 | 不合法的按鈕個數 |
40018 | 不合法的按鈕名字長度 |
40019 | 不合法的按鈕KEY長度 |
40020 | 不合法的按鈕URL長度 |
40021 | 不合法的菜單版本號 |
40022 | 不合法的子菜單級數 |
40023 | 不合法的子菜單按鈕個數 |
40024 | 不合法的子菜單按鈕類型 |
40025 | 不合法的子菜單按鈕名字長度 |
40026 | 不合法的子菜單按鈕KEY長度 |
40027 | 不合法的子菜單按鈕URL長度 |
40028 | 不合法的自定義菜單使用用戶 |
41001 | 缺少access_token參數 |
41002 | 缺少appid參數 |
41003 | 缺少refresh_token參數 |
41004 | 缺少secret參數 |
41005 | 缺少多媒體文件數據 |
41006 | 缺少media_id參數 |
41007 | 缺少子菜單數據 |
42001 | access_token超時 |
43001 | 需要GET請求 |
43002 | 需要POST請求 |
43003 | 需要HTTPS請求 |
44001 | 多媒體文件為空 |
44002 | POST的數據包為空 |
44003 | 圖文消息內容為空 |
45001 | 多媒體文件大小超過限制 |
45002 | 消息內容超過限制 |
45003 | 標題字段超過限制 |
45004 | 描述字段超過限制 |
45005 | 鏈接字段超過限制 |
45006 | 圖片鏈接字段超過限制 |
45007 | 語音播放時間超過限制 |
45008 | 圖文消息超過限制 |
45009 | 接口調用超過限制 |
45010 | 創建菜單個數超過限制 |
46001 | 不存在媒體數據 |
46002 | 不存在的菜單版本 |
46003 | 不存在的菜單數據 |
47001 | 解析JSON/XML內容錯誤 |