Java Springboot自定义微信公众号菜单

面向百度编程,代码拿来即用

自己做自定义微信公众号菜单是遇到了一些坑,现在已经把坑填平,拿来即用。

自定义菜单类型(实体类)

Button

/**
 * 
 * 类名称: Button
 * 类描述: 按钮
 */
public class Button {
   
   
	
	private String name;//菜单标题
	
	private String type;//菜单的响应动作类型
	
	private Button[] sub_button;
 
	public String getName() {
   
   
		return name;
	}
 
	public void setName(String name) {
   
   
		this.name = name;
	}
 
	public String getType() {
   
   
		return type;
	}
 
	public void setType(String type) {
   
   
		this.type = type;
	}
 
	public Button[] getSub_button() {
   
   
		return sub_button;
	}
 
	public void setSub_button(Button[] sub_button) {
   
   
		this.sub_button = sub_button;
	}
	
}

ClickButton

/**
 * 
 * 类名称: ClickButton
 * 类描述: 点击类型
 */
public class ClickButton extends Button{
   
   
	
	private String key;//菜单KEY值
 
	public String getKey() {
   
   
		return key;
	}
 
	public void setKey(String key) {
   
   
		this.key = key;
	}
		
}

ViewButton

public class ViewButton extends Button{
   
   
	
	private String url;//网页链接
 
	public String getUrl() {
   
   
		return url;
	}
 
	public void setUrl(String url) {
   
   
		this.url = url;
	}
	
}

Menu

/**
 * 
 * 类名称: Menu
 * 类描述: 菜单
 */
public class Menu {
   
   
	
	private Button[] button;
 
	public Button[] getButton() {
   
   
		return button;
	}
 
	public void setButton
### 使用 Spring Boot 开发微信公众号应用 #### 集成准备 为了实现基于Spring Boot的微信公众号开发,需先完成必要的准备工作。这包括注册微信公众平台账号并创建相应的公众号,在此过程中会获得`AppID`和`AppSecret`两个重要参数[^1]。 #### 授权流程解析 当用户访问链接时,通过OAuth2.0授权机制来获取用户的同意授权。具体来说,就是构建一个带有特定参数(如`appid`, `redirect_uri`, `response_type`, `scope`, 和`state`)的URL请求发送给微信服务器。一旦用户确认授权,则会被重定向到指定页面,并附带授权码作为查询字符串的一部分。 ```java @GetMapping("/auth") public String auth(@RequestParam(value="code") String code){ // 处理接收到的授权码... } ``` #### 获取用户信息 利用上一步得到的授权码可以向微信接口申请换取access_token以及openid。之后再凭借这些凭证调用微信API取得更详细的用户资料,比如昵称、头像等个人信息。 ```json { "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" } ``` ```java // 假设已经成功获得了 access_token 和 openid String accessToken = "..."; String openId = "..."; RestTemplate restTemplate = new RestTemplate(); Map<String, Object> params = Map.of( "access_token", accessToken, "openid", openId, "lang", "zh_CN" ); ResponseEntity<Map> response = restTemplate.getForEntity( "https://api.weixin.qq.com/sns/userinfo?" + "access_token={access_token}&openid={openid}&lang={lang}", Map.class, params ); System.out.println(response.getBody()); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值