最近微信公众号开发了菜单关联小程序功能,实现代码如下
/**
* 自定义菜单工具类
* @author why
*
*/
public class MenuUtil {
private static Logger logger = Logger.getLogger(MenuUtil.class);// 日志
//创建菜单接口地址
public final static String menu_create_url = "https://api./cgi-bin/menu/create?access_token=ACCESS_TOKEN";
/**
*创建菜单
* @param menu 菜单实例
* @param accessToken 凭证
* @return true 成功 false 失败
*/
public static boolean createMenu(Menu menu, String accessToken){
boolean result = false;
String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
//将菜单对象转换成JSON字符串
String jsonMenu = JSONObject.fromObject(menu).toString();
//发起post请求创建菜单
JSONObject jsonObject = WeixinUtil.httpRequest(url, "POST", jsonMenu);
if(null != jsonObject){
int errorCode = jsonObject.getInt("errcode");
String errorMsg = jsonObject.getString("errmsg");
System.out.println("====================="+errorCode+" "+errorMsg);
if(0 == errorCode){
result = true;
}else{
result = false;
logger.error("创建菜单失败errorCode:{"+errorCode+"} errorMsg:{"+errorMsg+"}");
System.out.println(errorCode+" "+errorMsg);
}
}
return result;
}
}
/**
* 类名称:ToXcx.java
* 类描述:小程序菜单实体类
* 作 者:why
* 时 间:4月21日
*/
public class ToXcx extends Button {
private String type;//类型
private String name;//菜单名称
private String url;//不支持小程序跳转地址
private String appid;//小程序appid
private String pagepath;//小程序页面路径
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;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getPagepath() {
return pagepath;
}
public void setPagepath(String pagepath) {
this.pagepath = pagepath;
}
}
创建菜单
ToXcx xcxBtn1 = new ToXcx();
xcxBtn1.setName("我要寄件");
xcxBtn1.setType("miniprogram");
xcxBtn1.setUrl("");
xcxBtn1.setAppid("");
xcxBtn1.setPagepath("pages/send/send");
调用
MenuUtil.createMenu(菜单json, token);