前言:最近接触的新项目是关于微信公众号的相关开发,其中会涉及到菜单栏的创建,配置跳转页面等等,在这过程中也是一边查资料一边摸索,也遇到一些坑,在这里分享下,如果有错误的地方或者写的不好的还请指点,也欢迎有疑问可以一起探讨。
一、准备工作
1. 微信SDK的选择
开发不一定就是自己造轮子,有优秀的开源的SDK那我们完全可以使用,这样可以避免采坑,还有繁杂的封装,从而提高开发效率 。这里我选择的是一位大佬的优秀SDK,作者一直在更新,目前已经来到了3.8.0版本。
1.1. SDK源码地址: github.
1.2. SDK部分Maven 依赖,可根据需求引入参考
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>(根据不同需求引入参考以下模板)</artifactId>
<version>3.8.0</version>
</dependency>
-
ArtifactId
- 微信小程序:weixin-java-miniapp
- 微信支付:weixin-java-pay
- 微信开放平台:weixin-java-open
- 公众号(包括订阅号和服务号):weixin-java-mp
-
企业号/企业微信:weixin-java-cp
(由于我是公众号开发,这里用到的是 weixin-java-mp)
1.3. JAVA项目相关配置
1.3.1. 配置application.yml(详细信息及对应公众平台配置值见目录 2.公众平台相关配置)
business:
config:
wechat:
appId: # 公众号appid
secret: # 公众号的appsecret
token: # 接口配置里的Token值
aesKey: # 接口配置里的EncodingAESKey值
authUrl:
1.3.2. 配置SDK相关配置类
WeChatAppConfig.java 用来加载yml中的配置信息
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = "business.config.wechat")
public class WeChatAppConfig {
/**
* 设置微信公众号的appId
*/
private String appId;
/**
* 设置微信公众号的app secret
*/
private String secret;
/**
* 设置微信公众号的token
*/
private String token;
/*
* 设置微信公众号的 EncodingAESKey
*/
private String aesKey;
/**
* 权限URL
*/
private String authUrl;
}
SDK微信服务核心配置 WeChatMpConfig.java
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org