使用WxJava快速接入微信公众号

环境准备

2.外网服务准备以及配置

配置:

“注意: URL配置以及代码中的RequestMapping中的对应关系。

服务接口开发:

用于验证服务接入和接口回调的。

参照快速开始-服务接入认证章节

3.常用开发工具及网站

快速开始

    Github:https://github.com/Wechat-Group/WxJava Gitee:https://gitee.com/binary/weixin-java-tools

依赖导入

非Spring Boot:

<dependency> 
  <groupId>com.github.binarywang</groupId> 
  <artifactId>weixin-java-mp</artifactId> 
  <version>4.0.0</version> 
</dependency> 

Spring Boot:

<dependency> 
   <groupId>com.github.binarywang</groupId> 
   <artifactId>wx-java-mp-spring-boot-starter</artifactId> 
   <version>4.0.0</version> 
</dependency> 

配置文件

服务接入认证

服务接入认证流程图:

到这里就接入成功了。

常用功能

String nextOpenid = null;// 可选,第一个拉取的OPENID,null为从头开始拉取 
WxMpUserList wxMpUserList = wxMpService.getUserService().userList(nextOpenid); 

结果:

{ 
    "total": 1, 
    "count": 1, 
    "openids": [ 
      "xxxx" 
    ], 
    "nextOpenid": "xxxx" 
  } 

获取用户信息

结果:

{ 
   "subscribe": true, 
   "openId": "xxx", 
   "nickname": "laker", 
   "sexDesc": "男", 
   "sex": 1, 
   "language": "zh_CN", 
   "city": "合肥", 
   "province": "安徽", 
   "country": "中国", 
   "headImgUrl": "http://xxx", 
   "subscribeTime": 1618311163, 
   "unionId": null, 
   "remark": "", 
   "groupId": 0, 
   "tagIds": [], 
   "privileges": null, 
   "subscribeScene": "ADD_SCENE_QR_CODE", 
   "qrScene": "0", 
   "qrSceneStr": "" 
 } 

1.配置网页授权回调域名

注意事项:

3.构造网页授权url

首先构造网页授权url,然后构成超链接让用户点击,例如构建自定义菜单中的跳转URL按钮类型(VIEW)。

WxMpService wxMpService = ...; 
String url = ...; 
wxMpService.getOauth2Service().buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null) 

4.获得用户基本信息

当用户同意授权后,会回调所设置的url并把authorization code传过来,然后用这个code获得access token,其中也包含用户的openid等信息。

WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code); 
WxMpUser wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null); 

更新用户备注名

wxMpService.getUserService().userUpdateRemark(openid, "测试备注名"); 

创建自定义菜单

包括新增和修改,修改相当于覆盖之前的菜单。

WxMenu wxMenu = new WxMenu(); 
// 设置菜单 
wxMpService.getMenuService().menuCreate(wxMenu); 

删除自定义菜单

wxMpService.getMenuService().menuDelete(); 

获得自定义菜单

WxMenu wxMenu = wxMpService.getMenuService().menuGet(); 

其他功能

可去wiki页查看

总结

总体来说集成还是比较顺利,但是有几个点还是要重点说下:

关于外网服务可以去百度内网穿透,免费的有很多直接拿来用就行。

配置服务接口认证的URL,一定要是能具体到我们的接口的。

网页授权填写域名时,域名不要添加http:// 等协议头 ,直接www.xxx.com 即可。

参考:

https://github.com/Wechat-Group/WxJava

经验分享 程序员 微信小程序 职场和发展