运用 Spring Boot Starter 封装 微信 SDK

By admin in 亚洲必赢app在哪下载 on 2019年2月26日

微信对外提供了不少 API,但是那么些 API
使用起来尤其不便宜,用户要求达成足够底层的操作;所以小编以
spring-boot-starter 的样式对其做了1回封装,形成了
wechat-spring-boot-starters
这些种类,尽量做到“零”配置运营;近期兑现了音信部分的包装,达成有着类型新闻的集合处理,自动执行音讯加解密而无需用户参与。以下将介绍
wechat-spring-boot-starters 的大旨情状。

配置

前提

  • 此项目基于 Spring Boot,所以要动用本项目,必须引入 Spring Boot
    的相干正视
  • JDK 1.8 及以上

引入 maven 依赖

<dependency>
    <groupId>me.javaroad.openapi.wechat</groupId>
    <artifactId>wechat-spring-boot-starters</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

因为近日是 snapshot 版本,所以还亟需引入 snapshot repository :

<repositories>
  <repository>
      <snapshots />
      <id>sonatype snapshots</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
  </repository>
</repositories>

基础配置

在 application.yml 中新增以下配置:

weixin:
  mp:
    endpoint:
      # 微信回调地址,默认为 /weixin/callback,如需自定义,请修改以下配置项
      callback-url: /weixin/callback
    security:
      # 微信后台配置的 token
      token: 1234567890
      # 微信后台配置的消息加解密 aeskey
      encodingAesKey: abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG
      # #############################################################
      # 微信 access token 过期刷新阈值,计算方法:
      # 当前时间 - (获得token时间 + token 有效期 + 阈值) < 0 则刷新 token
      # 默认为 token 失效前 5 分钟刷新
      # #############################################################
      refresh-token-threshold: 300
    auth:
      # APPID
      appid: appid
      # APP secret
      secret: secret

至于新闻加密解密

系统会自动判断微信服务器推送给用户的音讯是不是经过加密,若是经过加密,将会自行解密,并在用户服务器重临给微信服务器时自动加密数据,那个进程不要求用户做其余操作。

音讯处理 – MessageHandler

当系统接受到微信服务器推送的音讯随后,做了两件工作:

  1. 发布了 ReceiveMessageEvent 类型的轩然大波
  2. 将接收的新闻分发到 MessageHandler

为此用户能够通过上述三种办法取得微信服务器推送的音讯。

首先种方法:

@Component
public class ReceiveMessageEventListener implements ApplicationListener<ReceiveMessageEvent> {

    @Async
    @Override
    public void onApplicationEvent(ReceiveMessageEvent event) {
        System.out.println(event.getSource());
    }
}

那边是通过监听系统事件得到相应的消息,此处 亚洲必赢app在哪下载,强烈建议
以异步的点子处理新闻,如需共同处理音信,请参见第三种办法。

第二种情势

@Component
public class TextMessageHandler extends AbstractMessageHandler<TextMessage> {

    public TextMessageHandler(MessageHandlerFactory messageHandlerFactory) {
        super(messageHandlerFactory);
    }

    @Override
    public ResponseMessage handleMessage(TextMessage message) {
        // 此处根据业务对收到的消息做处理,注意,处理时间不能超过 5s,否则会导致微信对用户给出严重错误的提示
        // 如果时间很可能超过 5s, 需要在新线程中处理
        // 如果不需要对用户返回任何消息,则请在此处返回 EmptyResponseMessage
        return new TextResponseMessage();
    }

}

那种方法会共同实施,所以拍卖时间必须不可能当先 5 s .

系统中提供了以下种类的音信,在那之中 普普通通音信事件推送消息
是微信服务器推送给用户服务器的音讯,它将用作 MessageHandler
的参数传给对应的 Handler, 被动回复音信新鲜音讯
为用户服务器重返给微信服务器的音信, 它将用作 MessageHandler
的重临值。

普普通通新闻

  • TextMessage 文本音讯

  • ImageMessage 图片音讯

  • VoiceMessage 语音新闻

  • VideoMessage 录像音讯

  • ShortVideoMessage 小录像新闻

  • LocationMessage 地理地点新闻

  • LinkMessage 链接信息

事件推送音信

  • SubscribeEventMessage 关切/裁撤关切 事件
  • QrCodeEventMessage 扫二维码事件
  • CustomMenuEventMessage 自定义菜单事件
  • LocationEventMessage 上报地理地点事件

被动回复新闻

  • TextResponseMessage 文本音讯

  • ImageResponseMessage 图片消息

  • VoiceResponseMessage 语音音讯

  • VideoResponseMessage 录制新闻

  • MusicResponseMessage 音乐新闻

  • NewsResponseMessage 图像和文字音信

特殊新闻

  • EmptyResponseMessage
    那几个音信仅用于被动回复用户时,倘若接到了用户的音信而不希望给用户回复的话,请回来此新闻

结语

如上就是眼下促成的消息管理的一部分接口,后续会延续完善。

终极附上源码:GitHub

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢app官方下载 版权所有