一,、簡介 微信公眾平臺服務(wù)號以及之前成功申請內(nèi)測資格的訂閱號都具有自定義菜單的功能,。開發(fā)者可利用該功能為公眾賬號的會話界面底部增加自定義菜單,,用戶點(diǎn)擊菜單中的選項(xiàng),,可以調(diào)出相應(yīng)的回復(fù)信息或網(wǎng)頁鏈接,。自定義菜單接口將為公眾賬號的信息展示空間提供更多可能性,。本文將針對自定義菜單做簡單的開發(fā)應(yīng)用,,以供讀者參考,。 二,、官方說明 開發(fā)者獲取使用憑證后,可以使用該憑證對公眾賬號的自定義菜單進(jìn)行創(chuàng)建,、查詢和刪除等操作,。 自定義菜單接口可實(shí)現(xiàn)以下類型按鈕: click(點(diǎn)擊事件): 用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會通過消息接口(event類型)推送點(diǎn)擊事件給開發(fā)者,,并且?guī)习粹o中開發(fā)者填寫的key值,,開發(fā)者可以通過自定義的key值進(jìn)行消息回復(fù)。 view(訪問網(wǎng)頁): 用戶點(diǎn)擊view類型按鈕后,,會直接跳轉(zhuǎn)到開發(fā)者指定的url中,。 創(chuàng)建自定義菜單后,由于微信客戶端緩存,,需要24小時微信客戶端才會展現(xiàn)出來,。建議測試時可以嘗試取消關(guān)注公眾賬號后,再次關(guān)注,,則可以看到創(chuàng)建后的效果,。 三、獲取使用憑證 3.1 獲取appid 和appsecret 在 微信公眾平臺 > 高級功能 > 開發(fā)模式中找到appid 和appsecret,。
3.2 使用appid 和appsecret 向微信憑證獲取接口請求access_token 請求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 請求參數(shù)說明: grant_type:獲取access_token填寫client_credential appid:第三方用戶唯一憑證 secret:第三方用戶唯一憑證密鑰,,既appsecret 返回說明: 正確的Json返回結(jié)果: {"access_token":"ACCESS_TOKEN","expires_in":7200} 返回參數(shù)說明: access_token:獲取到的憑證 expires_in:憑證有效時間,單位:秒 3.3 具體實(shí)現(xiàn) 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); ?> 結(jié)果如下: 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對應(yīng)于公眾號是全局唯一的票據(jù),,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效,。 四、創(chuàng)建菜單 方法:通過POST一個特定結(jié)構(gòu)體,,實(shí)現(xiàn)在微信客戶端創(chuàng)建自定義菜單,。 請求地址: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":"蘇州景點(diǎn)",
"key":"suzhouScenic"
},
{
"type":"click",
"name":"蘇州美食",
"key":"suzhouFood"
},
{
"type":"click",
"name":"住在蘇州",
"key":"liveSuzhou"
}]
},
{
"type":"click",
"name":"聯(lián)系我們",
"key":"lianxiUs"
}]
} 示例說明: 菜單結(jié)構(gòu)及說明: {
"button":[ //button定義該結(jié)構(gòu)為一個菜單
{
"name":"分支主菜單名",
"sub_button":[ //sub_button定義子菜單
{
"type":"click", //按鈕類型
"name":"分支子菜單名1", //菜單名稱
"key":"loveSuzhou" //菜單key值
},
{
"type":"click",
"name":"分支子菜單名2",
"key":"liveSuzhou"
}]
}, //菜單之間用 , 分隔
{
"type":"click",
"name":"獨(dú)立菜單",
"key":"lianxiUs"
}]
} 返回說明: 正確的Json返回結(jié)果: {"errcode":0,"errmsg":"ok"} 提交菜單: 通過curl 提交以上的菜單數(shù)據(jù),,代碼如下: $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); 運(yùn)行結(jié)果: 測試結(jié)果: 菜單創(chuàng)建成功。 五,、查詢菜單 查詢當(dāng)前使用的自定義菜單結(jié)構(gòu),。 請求地址: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; 運(yùn)行結(jié)果: 菜單查詢成功。 六,、刪除菜單 取消當(dāng)前使用的自定義菜單,。 請求地址: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 "菜單刪除失敗"; } 運(yùn)行結(jié)果: 測試結(jié)果: 菜單刪除成功。 |
|