必发bifa88手机客服端应用 Spring Boot Starter 封装 微信 SDK

微信对外提供了好多 API,不过这一个 API
使用起来十三分不便于,用户需求达成丰盛底层的操作;所以作者以
spring-boot-starter 的样式对其做了两回封装,形成了
wechat-spring-boot-starters
那些类型,尽量做到“零”配置运转;方今兑现了新闻部分的包裹,完毕全部项目音讯的统一处理,自动执行音信加解密而无需用户参加。以下将介绍
wechat-spring-boot-starters 的为主情况。

配置

前提

  • 此项目基于 Spring Boot,所以要接纳本项目,必须引入 Spring Boot
    的相干看重
  • JDK 1.8 及以上

必发bifa88手机客服端,引入 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());
    }
}

那边是透过监听系统事件得到相应的消息,此处 强烈提议
以异步的方法处理新闻,如需一并处理音信,请参见第一种办法。

第1种方法

@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

相关文章