# wechat-spring-boot-starter
**Repository Path**: seasonszx/wechat-spring-boot-starter
## Basic Information
- **Project Name**: wechat-spring-boot-starter
- **Description**: 该项目虽是个体力活,但还是希望有同道中人,陪同一起去完善它,让与微信的交互更加简单
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2022-02-21
- **Last Updated**: 2022-05-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# wechat-spring-boot-starter
#### 介绍
该项目是微信公众号与微信小程序的交互封装,主要是因为在本人的工作过程中,每开始一个项目基本微信的这套东西都要再写一次,自己觉得麻烦,所以决定封装一个stater直接作为导包使用
该starter并非集成了所有的微信交互,只是一部分,基本包含了常用的
#### 注意事项
本项目提供了可以直接依赖的pom,
1.如果是企业使用,不建议直接依赖pom,建议下载源码后,安装在企业私服中自行依赖使用,
2.如果是个人练习,学习 可直接依赖使用
如果需要增加一些与微信交互的功能,需要下载源码自行增加,或者邮箱联系我
#### 软件架构
就一个普通的spring boot starter
#### 安装教程
1. ```markup
com.gitee.zhaoxuan734
wechat-spring-boot-starter
c7b86a8a93
jitpack.io
https://jitpack.io
```
#### 使用说明
1. 配置文件中配置
```java
wechat.app.app-id
wechat.app.app-secret
wechat.pub.app-id
wechat.pub.app-secret
```
2. 直接注入两个类使用
```java
@Autowired
private WeChatAppService weChatAppService;
@Autowired
private WeChatPubService weChatPubService;
```
如果只配置了一个。例如小程序的配置,只能注入weChatAppService,注入没有配置的service,项目启动会报错.
3. 提供消息接收基类, 需要使用者自行创建Service或者Controller去实现它
(当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上)
```java
public interface MsgReceiveService {
default void receiveMsg(String msgXml){
MsgContent content = XmlUtil.xmlToBean(msgXml, MsgContent.class);
PubMsgType msgType = PubMsgType.getByName(content.getMsgType());
switch (msgType) {
case TEXT:
MsgTextContent textContent = XmlUtil.xmlToBean(msgXml, MsgTextContent.class);
afterTextMsg(textContent);
break;
case IMAGE:
MsgImageContent imageContent = XmlUtil.xmlToBean(msgXml, MsgImageContent.class);
afterImageMsg(imageContent);
break;
case VOICE:
MsgVoiceContent voiceContent = XmlUtil.xmlToBean(msgXml, MsgVoiceContent.class);
afterVoiceMsg(voiceContent);
break;
case VIDEO:
MsgVideoContent videoContent = XmlUtil.xmlToBean(msgXml, MsgVideoContent.class);
afterVideoMsg(videoContent);
break;
case SHORT_VIDEO:
MsgVideoContent shortVideoContent = XmlUtil.xmlToBean(msgXml, MsgVideoContent.class);
afterShortVideoMsg(shortVideoContent);
break;
case LINK:
MsgLinkContent linkContent = XmlUtil.xmlToBean(msgXml, MsgLinkContent.class);
afterLinkMsg(linkContent);
break;
case LOCATION:
MsgLocationContent locationContent = XmlUtil.xmlToBean(msgXml, MsgLocationContent.class);
afterLocationMsg(locationContent);
break;
default:
break;
}
}
//需要自行实现的接口
default void afterTextMsg(MsgTextContent content){
return;
}
//根据需要自行实现
default void afterImageMsg(MsgImageContent content){
return;
}
//根据需要自行实现
default void afterVoiceMsg(MsgVoiceContent content){
return;
}
//根据需要自行实现
default void afterVideoMsg(MsgVideoContent content){
return;
}
//根据需要自行实现
default void afterShortVideoMsg(MsgVideoContent content){
return;
}
//根据需要自行实现
default void afterLocationMsg(MsgLocationContent content){
return;
}
//根据需要自行实现
default void afterLinkMsg(MsgLinkContent content){
return;
}
}
```
#### 已集成功能
##### 小程序
1. 获取小程序全局唯一后台接口调用凭据
2. 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程
3. 用户支付完成后,获取该用户的 UnionId,无需用户授权。本接口支持第三方平台代理查询。
4. 获取用户访问小程序日留存
5. 获取用户访问小程序月留存
6. 获取用户访问小程序周留存
7. 获取用户访问小程序数据概况
8. 获取用户访问小程序数据日趋势
9. 获取用户访问小程序数据月趋势
10. 获取用户访问小程序数据周趋势
11. 获取小程序二维码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制
注意:
接口只能生成已发布的小程序的二维码;
该接口总共生成的码数量限制为 100,000,请谨慎调用
12. 获取小程序二维码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制
注意:
接口只能生成已发布的小程序的二维码;
该接口总共生成的码数量限制为 100,000,请谨慎调用;
该接口与接口11相比,增加了上送参数,可配置二维码颜色等, 参考[微信文档](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.get.html)
13. 获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。
注意:
接口只能生成已发布的小程序的二维码;
调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成
14. 获取小程序 scheme 码,适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。
15. 获取小程序 URL Link,适用于短信、邮件、网页、微信内等拉起小程序的业务场景。
16. 发送客服消息给用户
17. 发送订阅消息
##### 公众号
1. 基础获取accessToken
2. 发送模板消息
3. 通过code换取网页授权access_token
4. 刷新网页授权access_token
5. 拉取用户信息(需scope为snsapi_userinfo)
6. 检验授权凭证(access_token)是否有效
7. 普通消息接收基类