`
tuposky
  • 浏览: 84539 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

微信公众平台开发教程Java版(五) 自定义菜单创建

阅读更多

前言:

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。

目前菜单创建的权限只有服务号或者是通过认证过的账号。未认证的订阅号暂不支持自定义

 

自定义菜单的账号样子如图:

 

【题外话】

这是我申请的测试号,里面有所有的接口权限,怎么申请看下图



 

自定义菜单基本介绍:

目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。

目前自定义菜单接口可实现两种类型按钮,如下:

click:
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event	的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
view:
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值	(即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。

接口调用请求说明

 

http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

自定义菜单的请求是一个json格式的请求内容

官网的请求示例

 {
     "button":[
     {	
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "type":"click",
           "name":"歌手简介",
           "key":"V1001_TODAY_SINGER"
      },
      {
           "name":"菜单",
           "sub_button":[
           {	
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"view",
               "name":"视频",
               "url":"http://v.qq.com/"
            },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }

参数说明



 

返回结果

正确时的返回JSON数据包如下:

{"errcode":0,"errmsg":"ok"}

错误时的返回JSON数据包如下(示例为无效菜单名长度):

{"errcode":40018,"errmsg":"invalid button name size"}

 

通过json格式创建菜单

 

package com.ifp.weixin.biz.core.impl;

import net.sf.json.JSONObject;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import com.ifp.weixin.biz.core.MenuService;
import com.ifp.weixin.util.WeixinUtil;

@Service("menuService")
public class MenuServiceImpl implements MenuService {

	public static Logger log = Logger.getLogger(MenuServiceImpl.class);

	// 菜单创建(POST) 限100(次/天)
	public static String MENU_CREATE = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";

	@Override
	public String CreateMenu(String jsonMenu) {
		String resultStr = "";
		// 调用接口获取token
		String token = WeixinUtil.getToken();
		if (token != null) {
			// 调用接口创建菜单
			int result = createMenu(jsonMenu, token);
			// 判断菜单创建结果
			if (0 == result) {
				resultStr = "菜单创建成功";
				log.info(resultStr);
			} else {
				resultStr = "菜单创建失败,错误码:" + result;
				log.error(resultStr);
			}
		}

		return resultStr;
	}


	/**
	 * 创建菜单
	 * 
	 * @param jsonMenu
	 *            菜单的json格式
	 * @param accessToken
	 *            有效的access_token
	 * @return 0表示成功,其他值表示失败
	 */
	public static int createMenu(String jsonMenu, String accessToken) {

		int result = 0;
		// 拼装创建菜单的url
		String url = MENU_CREATE.replace("ACCESS_TOKEN", accessToken);
		// 调用接口创建菜单
		JSONObject jsonObject = WeixinUtil.httpRequest(url, "POST", jsonMenu);

		if (null != jsonObject) {
			if (0 != jsonObject.getInt("errcode")) {
				result = jsonObject.getInt("errcode");
				log.error("创建菜单失败 errcode:" + jsonObject.getInt("errcode")
						+ ",errmsg:" + jsonObject.getString("errmsg"));
			}
		}

		return result;
	}

	public static void main(String[] args) {
		// 这是一个符合菜单的json格式,“\”是转义符
		String jsonMenu = "{\"button\":[{\"name\":\"生活助手\",\"sub_button\":[{\"key\":\"11\",\"name\":\"天气预报\",\"type\":\"click\"},{\"key\":\"12\",\"name\":\"公交查询\",\"type\":\"click\"}]},{\"name\":\"音智达\",\"sub_button\":[{\"key\":\"21\",\"name\":\"好东西哦\",\"type\":\"click\"},{\"key\":\"22\",\"name\":\"人脸识别\",\"type\":\"click\"}]},{\"name\":\"更多体验\",\"sub_button\":[{\"key\":\"33\",\"name\":\"幽默笑话\",\"type\":\"click\"},{\"name\":\"View类型的\",\"type\":\"view\",\"url\":\"http://m.baidu.com\"}]}]}";
		MenuServiceImpl impl = new MenuServiceImpl();
		impl.CreateMenu(jsonMenu);
	}

}

ok,运行main方法后,菜单就创建好了,

由于微信会缓存菜单24小时,建议先取消关注,再关注,菜单就会显示出来了。

 

 (ps:也可以建立菜单实体类,再由实体类转换成json,也可以实现创建菜单,

  我直接用json,是因为第一:简单,第二:我会开发后台管理系统,要在后台管理菜单,传json方便)

 

可加我的微信公众号一起讨论

微信公众号:andedaohang

或扫描二维码



 

 

我所有的博客都搬到csdn了,以后所有的博客都会在csdn上更新,

CSDN博客地址:http://blog.csdn.net/tuposky

 

 

 

  • 大小: 117.7 KB
  • 大小: 61.8 KB
  • 大小: 48.3 KB
分享到:
评论
2 楼 tuposky 2014-06-11  
xiahuawuyu 写道
楼主能分享下源码么,一起学习下哈


git 地址:
https://github.com/caspar-chen/WechatSDK
1 楼 xiahuawuyu 2014-06-05  
楼主能分享下源码么,一起学习下哈

相关推荐

    手把手教会你微信公众平台自定义菜单开发——创建菜单

    文档里面是详细教程和代码,不用什么基础都可以看懂,代码复制就可以用,立马解决你创建菜单的问题。这部分是微信公众账号自定义菜单的创建【完整的】。下一次教你高级进阶,内容在文档里底部。

    微信公众帐号开发教程

    [038] 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应 - 柳峰的专栏 - 博客频道 - CSDN.NET [040] 微信公众帐号开发教程第16篇-应用实例之历史上的今天 - 柳峰的专栏 - 博客频道 - CSDN.NET [041] 微信...

    JAVA微信开发资料

    微信公众帐号开发教程第 14 篇-自定义菜单的创建及菜单事件响应..95 微信公众帐号开发教程第 15 篇-自定义菜单的 view 类型(访问网页).. 117 微信公众帐号开发教程第 16 篇-应用实例之历史上的今天.123 微信公众...

    微信公众平台开发视频

    3. 微信公众平台开发之Struts2 (免费) 25:31 4. 微信公众平台开发之Spring MVC 27:12 5. 识别微信浏览器 24:40 6. 限制只允许微信浏览器访问 23:30 7. 一套程序服务多个账号---原始ID 17:46 8. 一套程序服务多个账号...

    微信公众平台开发视频教程,配套php代码(孟祥磊主讲)

    适合于初学者的微信公众平台开发视频教程,包括如何接入开发者模式,自定义菜单创建,多客服接入,自定义回复,还有天气查询实例教材等

    html+css仿微信底部自定义菜单

    在网页设计中,为了提供与微信应用相似的用户体验,我们可以使用HTML和CSS技术来创建一个类似于微信底部的自定义菜单。这个菜单通常包含几个固定的选项,如“首页”、“发现”、“聊天”和“我”,方便用户快速访问...

    微信公众号开发教程 微信公众平台应用开发实践.zip

    微信公众平台应用开发实践教程.zip 1.php+html5+xml 第2章 微信公众平台API 第3章 第一个微信应用 第4章 带自定义菜单的微信应用 第5章 实战案例1 每日十幅图 第6章 实战案例2 人脸识别 第7章 实战案例3 游戏命运...

    WeiXinMPSDK-NET4.0

    Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明 Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明 Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明 ...

    微信公众平台开发教程(含java代码)

    本文档对如何使用java进行公众号开发接入、消息与事件处理、自定义菜单处理等内容进行了代码示例。对于微信公众号开发的新手具有指导和借鉴意义。

    手机微信公众平台开发视频教程

    微信公众平台开发视频教程全套API接口自定义微信菜单 百度网盘链接下载

    微信服务号java版开发教程

    微信服务号是一个为企业和组织提供更强大的业务服务与用户管理能力的公众平台,它允许开发者通过API接口实现各种功能,例如自定义菜单、消息推送、用户管理等。本教程将深入探讨如何利用Java实现这些功能。 首先,...

    Java微信公众号开发 源码下载

    微信公众平台开发教程(java版本含代码),包含消息接收与发送、自定义菜单等。

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

    他还是一位资深的Java软件开发工程师和Android/iOS移动应用开发工程师,活跃于CocoaChina、开源中国、CSDN等社区,CSDN博客专家,在CSDN博客撰写了系列微信公众平台二次开发的教程,深受欢迎并被广泛传播,也因此...

    微信公众号开发视频教程(附有配套php代码)

    网盘地址 微信公众平台开发视频教程,还附有相关配套php代码,api接口,自定义菜单,等等

    企业微信开发.net版[盛派微信SDK]

    微信公众平台SDK Senparc.Weixin for C#,支持.NET Framework及.NET Core。已支持微信公众号、小程序、小游戏、企业号、企业微信、开放平台、微信支付、JSSDK、微信周边等全平台。 WeChat SDK for C#. Senparc....

    android 自定义仿微信底部菜单栏

    本教程将详细讲解如何创建一个仿微信底部菜单栏,实现类似微信聊天界面底部菜单的功能,包括菜单字体的显示与隐藏、菜单项的动态缩放等效果。 一、底部菜单栏设计 底部菜单栏(Bottom Navigation Bar)通常包含3到5...

    Android仿微信底部菜单栏+顶部菜单栏(附源码)

    本教程将深入探讨如何在Android项目中实现微信式的底部菜单栏和顶部菜单栏,提供良好的导航功能和用户体验。 首先,底部菜单栏是Android应用中常见的组件,它通常包含3到5个图标,每个图标对应一个主要的功能模块。...

Global site tag (gtag.js) - Google Analytics