//創建一個自定義菜單的json字元串
$jsonmenu = '{
"button":[
{
"name":"關於我們",
"sub_button":[
{
"type":"click",
"name":"公司簡介",
"key":"公司簡介"
},
{
"type":"click",
"name":"社會責任",
"key":"社會責任"
},
{
"type":"click",
"name":"聯系我們",
"key":"聯系我們"
}]
},
{
"name":"產品服務",
"sub_button":[
{
"type":"click",
"name":"微信平台",
"key":"微信平台"
},
{
"type":"click",
"name":"微博應用",
"key":"微博應用"
},
{
"type":"click",
"name":"手機網站",
"key":"手機網站"
}]
},
{
"name":"技術支持",
"sub_button":[
{
"type":"click",
"name":"文檔下載",
"key":"文檔下載"
},
{
"type":"click",
"name":"技術社區",
"key":"技術社區"
},
{
"type":"click",
"name":"服務熱線",
"key":"服務熱線"
}]
}]
}';
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;//介面地址
$result = https_request($url, $jsonmenu);//與介面建立會話
var_mp($result);
function https_request($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
//把這段代碼加入到上面的調用Access Token介面的代碼中就可以實現在微信公眾號界面添加菜單的功能。
B. 用微發網定義微信自定義菜單返回值「invalid button key size」是怎麼回事,怎麼解決
在微信客戶端創建自定義菜單是通過http的POST請求發送一個JSON格式的特定結構體來實現的,返回「invalid button key size」通常可能是以下原因:
不符合JSON數據格式;
不符合結構體參數限制;
在.net平台下,有可能用指定編碼的StreamWriter寫入流和用指定編碼轉換為位元組數組再寫入流的過程存在不兼容情況。
對於前兩種原因,請參考以下示例及參數說明,或參考微信公眾平台開發者文檔重新構造數據:
{ "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個;type是按鈕類型,目前有click,view等類型;name是按鈕描述,即按鈕名字,不超過16個位元組,子菜單name不超過40個位元組;sub_button是子按鈕數組,按鈕個數應為1~5個;菜單KEY值,用於消息介面推送,不超過128位元組。
對於第3種原因,請嘗試為StreamWriter設置不同的Encoding參數,即嘗試不同的編碼。
C. 微信菜單開發怎麼做
微信菜單開發一般是指微信自定義菜單開發,微信自定義菜單的創建步驟:
1、找到AppId和AppSecret。自定義菜單申請成功後,在「高級功能」-「開發模式」-「介面配置信息」的最後兩項就是;
2、根據AppId和AppSecret,以https get方式獲取訪問特殊介面所必須的憑證access_token;
3、根據access_token,將json格式的菜單數據通過https post方式提交。
難度最大的步驟是https post,需要看懂API文檔與通過POST方式提交json格式的菜單數據。此外https的請求與http要復雜一些,有些開發可能並不知道如何發起。
假若你不是上面介紹兩眼一抹黑,那麼就當屁放了吧,還是找第三方開發服務商幫忙解決。國內第三方開發服務商有1000多家,不同平台有各自的產品特點。當然,也有些存在產品同質化嚴重、研發能力弱等問題,需要用戶仔細甄別。從用戶數量上來說,企業使用最多的微盟(weimob),2015年6月上旬入駐企業已經達到1,126,000戶。