Java微信公眾平臺開發(十)--微信自定義選單的建立實現
轉自:http://www.cuiyongzhi.com/post/48.html
自定義選單這個功能在我們普通的編輯模式下是可以直接在後臺編輯的,但是一旦我們進入開發模式之後我們的自定義選單就需要自己用程式碼實現,所以對於剛開始接觸的人來說可能存在一定的疑惑,這裡我說下平時我們在開發模式下常用的兩種自定義選單的實現方式:①不用寫實現程式碼,直接用網頁測試工具Post json字串生成選單;②就是在我們的開發中用程式碼實現選單生成!(參考文件:http://mp.weixin.qq.com/wiki/10/0234e39a2025342c17a7d23595c6b40a.html )在自定義選單中選單的型別分為兩種,一種為view的檢視選單,點選之後直接跳轉到url頁面;還有一種是click型別的點選型,後端通過點選事件型別給與不同的相應;後面新增了各種特色功能的選單其本質都還是Click型別的選單,所以生成的規則都是一樣的,其生成選單的方式都是向微信伺服器post json字串生成選單,下面講述選單生成的方法和規則!
(一)使用網頁除錯工具生成選單
我們通過連線(https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95&form=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E5%88%9B%E5%BB%BA%E6%8E%A5%E5%8F%A3%20/menu/create )進入到網頁除錯工具,如下圖:
在這裡我們生成選單的時候只需要我們賬號的有效token和json字串即可,這裡的json字串可以參照文件中的案例做出修改得到,我這裡給出的一個案例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
{
"button": [
{
"name": "部落格",
"type": "view",
"url": "http://www.cuiyongzhi.com"
},
{
"name": "選單",
"sub_button": [
{
"key": "text",
"name": "回覆圖文",
"type": "click"
},
{
"name": "部落格",
"type": "view",
"url": "http://www.cuiyongzhi.com"
}
]
},
{
"key": "text",
"name": "回覆圖文",
"type": "click"
}
]
}
|
我們填入響應的token,點選檢查問題如果返回結果Ok就可以了,如下:
到這裡我們採用web測試工具生成選單的方式就完成了,下面接著介紹用程式碼生成選單!
(二)採用程式碼實現選單的生成
前面我們有說道在選單中有view和click兩種型別的事件,這裡我們首先在程式碼中建立兩種型別對應的java實體,view型別建立實體ViewButton.java如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package
com.cuiyongzhi.wechat.menu;
/**
* ClassName: ViewButton
* @Description: 檢視型選單事件
* @author dapengniao
* @date 2016年3月14日 下午5:31:38
*/
public
class
ViewButton {
private
String type;
private
String name;
private
String url;
public
String getType() {
return
type;
}
public
void
setType(String type) {
this
.type = type;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
String getUrl() {
return
url;
}
public
void
setUrl(String url) {
this
.url = url;
}
}
|
同樣的建立click的實體ClickButton.java如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package
com.cuiyongzhi.wechat.menu;
/**
* ClassName: ClickButton
* @Description: 點選型選單事件
* @author dapengniao
* @date 2016年3月14日 下午5:31:50
*/
public
class
ClickButton {
private
String type;
private
String name;
private
String key;
public
String getType() {
return
type;
}
public
void
setType(String type) {
this
.type = type;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
String getKey() {
return
key;
}
public
void
setKey(String key) {
this
.key = key;
}
}
|
這裡建立兩個實體也是為了方便我們在自定義選單中對json的封裝,在這裡我用程式碼的形式封裝了上面給出的同樣的json格式,並呼叫生成自定義選單的介面傳送到微信伺服器,簡單程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package
com.cuiyongzhi.wechat.menu;
import
com.alibaba.fastjson.JSONObject;
import
com.cuiyongzhi.wechat.util.HttpUtils;
import
net.sf.json.JSONArray;
public
class
MenuMain {
public
static
void
main(String[] args) {
ClickButton cbt=
new
ClickButton();
cbt.setKey(
"image"
);
cbt.setName(
"回覆圖片"
);
cbt.setType(
"click"
);
ViewButton vbt=
new
ViewButton();
vbt.setUrl(
"http://www.cuiyongzhi.com"
);
vbt.setName(
"部落格"
);
vbt.setType(
"view"
);
JSONArray sub_button=
new
JSONArray();
sub_button.add(cbt);
sub_button.add(vbt);
JSONObject buttonOne=
new
JSONObject();
buttonOne.put(
"name"
,
"選單"
);
buttonOne.put(
"sub_button"
, sub_button);
JSONArray button=
new
JSONArray();
button.add(vbt);
button.add(buttonOne);
button.add(cbt);
JSONObject menujson=
new
JSONObject();
menujson.put(
"button"
, button);
System.out.println(menujson);
//這裡為請求介面的url +號後面的是token,這裡就不做過多對token獲取的方法解釋
String url=
"https://api.weixin.qq.com/cgi-bin/menu/create?access_token="
+
"upeDW-2pWrHgLx3fGqgsvAvf-HkQBA--5uHOo9OW16uNdL9zNPnnuIN01UDFXh_5d-QdcnBxux9tXigFwm1z0SInbdkXEKa1pMhTqaZVxK7sCPj7421YQGI0v3evwiwiWALjAHASWH"
;
try
{
String rs=HttpUtils.sendPostBuffer(url, menujson.toJSONString());
System.out.println(rs);
}
catch
(Exception e){
System.out.println(
"請求錯誤!"
);
}
}
}
|
上面程式碼的基本流程就是呼叫view和click兩個實體封裝json字串menujson,最後呼叫傳送方法將json傳送給騰訊伺服器,但是這裡需要用到賬號生成的token,我這裡是直接寫死的(token的獲取方式可以參見http://www.cuiyongzhi.com/?id=44 ),最終執行返回結果ok即可,如下:
自定義選單的功能實現基本就是這些,下一篇將講述【微信公眾平臺(map.weixin.qq.com)/開放平臺(open.weixin.qq.com)/商戶平臺(pay.weixin.qq.com)之間的關聯關係】希望可以對你給出幫助,感謝你的翻閱,如有疑問可以留言討論!