采取 Spring Boot Starter 封装 微信 SDK

By admin in 亚洲必赢app在哪下载 on 2018年11月16日

微信对外提供了多 API,但是这些 API
使用起来特别勿便宜,用户要实现深底层的操作;所以我以
spring-boot-starter 的款式对那个开了一样浅封装,形成了
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());
    }
}

此地是透过监听系统事件得到相应之信息,此处 强烈建议
以异步的措施处理消息,如要共同处理消息,请参见第二种方式。

次种方法

@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 小视频消息亚洲必赢app在哪下载

  • LocationMessage 地理位置信息

  • LinkMessage 链接消息

事件推送消息

  • SubscribeEventMessage 关注/取消关注 事件
  • QrCodeEventMessage 扫二维码事件
  • CustomMenuEventMessage 自定义菜单事件
  • LocationEventMessage 上报地理位置事件

被动回复消息

  • TextResponseMessage 文以消息

  • ImageResponseMessage 图片信息

  • VoiceResponseMessage 语音消息

  • VideoResponseMessage 视频音

  • MusicResponseMessage 音乐消息

  • NewsResponseMessage 图文信息

特信息

  • EmptyResponseMessage
    这个消息就用于被动回复用户时时,如果接受了用户的音信而无期望让用户回复的话,请回来此音

结语

以上就是眼下实现之信管理的片接口,后续会连续完善。

终极附上源码:GitHub

发表评论

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

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