# 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. 普通消息接收基类