0
点赞
收藏
分享

微信扫一扫

企业微信H5_集成消息解密类,消息推送Get及Post回调处理


企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信

文章目录

  • ​​一、 验证URL有效性​​
  • ​​1. 阅读文档​​
  • ​​2. 文档分析​​
  • ​​3. 加解密方案说明​​
  • ​​4. 下载加解密算法​​
  • ​​5. 案例分析​​
  • ​​二、实战集成​​
  • ​​2.1. 工具类拷贝​​
  • ​​2.2. 依赖引入​​
  • ​​2.3. 案例1集成​​
  • ​​2.4. 参数处理​​
  • ​​2.5. 重启项目​​
  • ​​2.6. 验证URL有效性​​
  • ​​2.7. 验证​​
  • ​​三、消息接收与处理​​
  • ​​3.1. 文档阅读​​
  • ​​3.2. 案例2拷贝​​
  • ​​3.3. 参数处理​​
  • ​​3.4. 重启项目​​
  • ​​3.5. 发送消息​​
  • ​​3.6. 验证​​
  • ​​3.7. 日志监控​​
  • ​​3.8. 收到回复消息​​
  • ​​四、源码分享​​
  • ​​4.1. 后端源码​​
  • ​​4.2. 前端源码​​
一、 验证URL有效性

官网文档:​​https://developer.work.weixin.qq.com/document/path/90238​​

1. 阅读文档

当点击“保存”提交以上信息时,企业微信会发送一条验证消息到填写的URL,请求方式为GET。

企业的接收消息服务器接收到验证请求后,需要作出正确的响应才能通过URL验证

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_java_02

2. 文档分析

从文档可以知道,咱们再应用管理配置的接收消息服务期配置的url,企业微信会发送一个get请求携带4个参数(msg_signature、timestamp、nonce、echostr)来验证URL有效性

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信_03

3. 加解密方案说明

点击进入 ​​加解密方案说明​​

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_java_04

4. 下载加解密算法

鉴于加解密算法相对复杂,企业微信提供了算法库,目前已有c++/python/php/java/golang/c#等语言版本。均提供了解密、加密、验证URL三个接口,企业可根据自身需要下载,下载​​下载地址​​

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_加解密_05

5. 案例分析

打开Readme.txt

注意事项
1.com\qq\weixin\mp\aes目录下是用户需要用到的接入企业微信的接口,其中WXBizMsgCrypt.java文件提供的WXBizMsgCrypt类封装了用户接入企业微信的三个接口,其它的类文件用户用于实现加解密,用户无须关心。sample.java文件提供了接口的使用求例。
2.WXBizMsgCrypt封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url,收到用户回复消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.java文件。
3.加解密协议请参考企业微信官方文档。
4.请开发者使用jdk1.6以上的版本。针对org.apache.commons.codec.binary.Base64,需要导入架包commons-codec-1.9(或commons-codec-1.8等其他版本),我们有提供,官方下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi

****请特别注意******
5.异常java.security.InvalidKeyException:illegal Key Size的解决方案:
在官方网站下载JCE无限制权限策略文件(JDK7的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件

从Readme.txt文件内容我们分析如下:

1.com\qq\weixin\mp\aes目录下提供了一些加解密的工具类

2.WXBizMsgCrypt用途在于回调url,收到用户回复消息的解密以及开发者回复消息的加密过程。Sample.java文件为案例代码

3.commons-codec-1.9的依赖

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_消息处理_06

二、实战集成
2.1. 工具类拷贝

将com\qq\weixin\mp\aes目录下的工具类复制到项目的com.gblfy.qywxinner.qywxdecode包下面

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_加解密_07

2.2. 依赖引入

在项目的pom.xml文件中引入commons-codec依赖

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信_08

2.3. 案例1集成

在项目com.gblfy.qywxinner.controller包下的MessageController类中添加callback方法,将Sample.java类中将案例1代码复制过来,将sToken、sCorpID、sEncodingAESKey配置信息替换为自己的

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_java_09

2.4. 参数处理

由于企业微信会携带4个参数(msg_signature、timestamp、nonce、echostr)请求咱们的配置验证url有效性的地址(http://4663588nl3.zicp.vip/message/callback),因此,咱们需要从callback方法中接收企业微信传过来的参数sVerifyMsgSig、sVerifyTimeStamp、sVerifyNonce、sVerifyEchoStr

写法如图

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_加解密_10

2.5. 重启项目

2.6. 验证URL有效性

然后,执行以下操作,重新保存

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_消息处理_11

2.7. 验证

点击保存机会请求咱们的配置的url地址,进入咱们callback的方法中,进行加解密操作,然后,返回。

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信_12


企业微信H5_集成消息解密类,消息推送Get及Post回调处理_加解密_13

三、消息接收与处理
3.1. 文档阅读

接收企业微信传递过来的参数和回复

请求方式为POST,同一个地址(http://4663588nl3.zicp.vip/message/callback)

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信_14

3.2. 案例2拷贝

在项目com.gblfy.qywxinner.controller包下的MessageController类中添加callbackData方法,将Sample.java类中将案例2代码复制过来,将sToken、sCorpID、sEncodingAESKey配置信息替换为自己的

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_java_15

3.3. 参数处理

由于企业微信会携带4个参数(msg_signature、timestamp、nonce)请求咱们的配置验证url有效性的地址(http://4663588nl3.zicp.vip/message/callback),因此,咱们需要从callback方法中接收企业微信传过来的参数sVerifyMsgSig, sReqTimeStamp, sReqNonce, sRespData,其中sRespData是咱们的消息体

写法如图

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_java_16

3.4. 重启项目

3.5. 发送消息

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_java_17

3.6. 验证

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_加解密_18

3.7. 日志监控

控制台日志

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信_19

解密decrypt企业微信推送的消息->sMsg:<xml><ToUserName><![CDATA[wwea98220fdcd8a38d]]></ToUserName><FromUserName><![CDATA[ZeXin]]></FromUserName><CreateTime>1646043916</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好,测试企业微信处理消息]]></Content><MsgId>7069704788922636053</MsgId><AgentID>1000002</AgentID></xml>
Content:你好,测试企业微信处理消息
回复->data:<xml><ToUserName><![CDATA[ZeXin]]></ToUserName><FromUserName><![CDATA[ZeXin]]></FromUserName><CreateTime>1646043916</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[this is a test]]></Content></xml>

3.8. 收到回复消息

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信

四、源码分享
4.1. 后端源码

后端:​​https://gitee.com/gblfy/qywx-inner-java​​

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_微信_21

4.2. 前端源码

前端:​​https://gitee.com/gblfy/qywx-vuejs​​

企业微信H5_集成消息解密类,消息推送Get及Post回调处理_消息处理_22


举报

相关推荐

0 条评论