JAVA对接公众号(一、验证公众号配置的服务器信息)

JAVA对接公众号(二、处理微信服务器发来的消息)

官方文档:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html

请注意:自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分将会以“…”代替。
接口类型:post
接口地址:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

自定义菜单分为10种,我这里使用的是view类型,打开网页url。

下面为chick和view的数据格式

 {"button":[{  "type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC"},{"name":"菜单","sub_button":[{  "type":"view","name":"搜索","url":"http://www.soso.com/"},{"type":"miniprogram","name":"wxa","url":"http://mp.weixin.qq.com","appid":"wx286b93c14bbf93aa","pagepath":"pages/lunar/index"},{"type":"click","name":"赞一下我们","key":"V1001_GOOD"}]}]}

service实现类

/*** @Description: 创建自定义菜单* @Param: [name, url]* @return: java.lang.Object* @Author: XQD* @Date:2021/9/26 10:19*/@Overridepublic Object ceateMenu() {String requestUrl = ceateMenuUrl.replace("ACCESS_TOKEN", getAccessToken());JSONObject menu = new JSONObject();JSONArray buttonAry = new JSONArray();Map map1 = new HashMap<>();map1.put("type", "click");map1.put("name", "今日歌曲");map1.put("key", "V1001_TODAY_MUSIC");Map map2 = new HashMap<>();map2.put("name", "菜单");JSONArray subButtonAry = new JSONArray();Map subMap1 = new HashMap<>();subMap1.put("type", "view");subMap1.put("name", "搜索");subMap1.put("url", "www.baidu.com");subButtonAry.add(subMap1);Map subMap2 = new HashMap<>();subMap2.put("type", "click");subMap2.put("name", "赞一下我们");subMap2.put("key", "V1001_GOOD");subButtonAry.add(subMap2);map2.put("sub_button", subButtonAry);buttonAry.add(map1);buttonAry.add(map2);menu.put("button", buttonAry);String post = HttpClientUtil.post(requestUrl, menu.toString());Map<String, Object> map = null;try {map = objectMapper.readValue(post, Map.class);} catch (IOException e) {log.error("公众号异常通知-创建自定义菜单异常", e);}if (map.get("errcode") != null || map.get("errmsg") != null) {String errcode = String.valueOf(map.get("errcode"));String errmsg = String.valueOf(map.get("errmsg"));if (!errcode.equals("0")) {log.error("创建自定义菜单失败:code=" + errcode + "msg=" + errmsg);return "创建失败";}}return "创建成功";}

其中的工具类HttpClientUtil去我资源中下载,getAccessToken()获取token的方法去我上一篇文章中查看(二、处理微信服务器发来的消息)

JAVA对接公众号(三、创建自定义菜单)相关推荐

  1. 微信公众号之创建自定义菜单

    微信公众号菜单等功能如何开通 自定义菜单最大的优点是减少了用户的认知门槛,可以将公众账号里的重点信息入口直观的暴露给用户.当用户进入到公众账号时,可以一目了然的了解相关的服务,只需要点击,不需要再通过 ...

  2. 微信公众号编辑底部自定义菜单解决方案

    微信公众号编辑底部自定义菜单解决方案 1.需求背景 最近开发公众号项目,关于公众号里面底部的菜单栏设置一般常用有两种方法. 1,是进入公众号后台,找到自定义菜单,点击后进入编辑页面,进行编辑即可. 2 ...

  3. 微信公众号开发:自定义菜单

    前言: 回顾之前的微信公众号配置和消息处理的内容,我们已经掌握了如何配置服务器与微信公众号建立连接,也掌握了通过消息管理的方式,对用户的信息进行处理,完成公众号消息回复功能,实现公众号与用户之间的完整 ...

  4. JAVA对接公众号(二、处理微信服务器发来的消息)

    一.验证公众号配置的服务器信息. 须知:处理微信服务器发来的消息之前必须先通过公众号配置的服务器验证 获取AccessToken,里面的HttpClientUtil类可以从我csdn资源中找 /*** ...

  5. 公众号 mysql数据库设计_微信公众号之灵活自定义菜单显示包含数据库结构设计...

    package com.ihaidou.entity.db.wechat; import io.swagger.annotations.ApiModelProperty; import lombok. ...

  6. 仿微信公众号后台管理-自定义菜单

    最近在做后台管理界面 这是自定义菜单的页面笔记 (也不知道我的思路对不对) 点击菜单出现 创建第一个菜单,并在该菜单上方出现可添加子菜单的添加按钮, 并展示修改该菜单的相关内容 右侧展示有两个 一个关 ...

  7. 【微信公众号】创建自定义code的会员卡流程

    大致流程如下:

  8. php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID

    关键字 微信公众平台 自定义菜单 OpenID 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-menu-get-openid.html 在这篇 ...

  9. 公众号怎样设置花式菜单

    盆友们好,国庆已经过完了 今天跟大家分享公众号的[自定义菜单]功能 想要花式菜单样式就得借助微信公众号的编辑器来完成 在编辑器或者微信后台设置,将emoji表情放置在菜单栏中 下面直接上教程喽~ 一. ...

  10. Vue微信公众号 创建自定义菜单

    创建菜单的程序之前需配置: 1.申请一个测试公众号并设置接口信息,JS接口安全域名以及网页授权获取用户基本信息,这三项都要设置为自己的程序映射的公网地址 网页服务->网页帐号->网页授权获 ...

最新文章

  1. matlab 基础知识class lt; superclass_name
  2. springboot配置index
  3. 怎么使用socket在云服务上通信步骤(可支持TCP或UDP)
  4. 『Python』python 弹窗、提示和警告框MessageBox部件
  5. net下的高性能轻量化半自动orm+linq的《SqlBatis》
  6. 光纤收发器常见的一些问题和检测方法
  7. C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf
  8. TurboMail手机客户端—强大的附件文档阅读能力
  9. 惠普打印机136w硒鼓芯片怎么清零_关于惠普彩激升级后无法识别硒鼓的处理方案...
  10. usermod命令,用户密码管理,mkpasswd命令
  11. Docker拉取Redis镜像安装运行
  12. rsync 删除大量小文件
  13. SQL注入攻击与防御
  14. Github上热搜的Java开源商城项目合集,这个是真的好
  15. bjui—关闭dialog以及当前标签
  16. 论文课程设计--CRM客户管理系统
  17. ioncube php encode,ioncube 加密
  18. 大数据与云计算物联网的关系
  19. 807. 区间求和(acwing水题记)
  20. 内网搭建代理DNS使用内网域名代替ip地址

热门文章

  1. 华为往事(十四)---第一次去美国
  2. unity 裙子摆动_【Unity Shader】摇摆的小草——顶点动画
  3. 记录项目中遇到的坑(二)
  4. 初探巨杉分布式数据库
  5. css 毛玻璃: backdrop-filter
  6. 打印机有关术语及解释
  7. html省市插件,省市区三级联动:非常好用的纯js插件
  8. 平行四边形 java_Java编写三角形和平行四边形
  9. 俄罗斯互联网的BAT
  10. 在多级NAT上做回程静态路由——实现访问inside内的主机