一、 验证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验证
从文档可以知道,咱们再应用管理配置的接收消息服务期配置的url,企业微信会发送一个get请求携带4个参数(msg_signature、timestamp、nonce、echostr)来验证URL有效性
点击进入 加解密方案说明
鉴于加解密算法相对复杂,企业微信提供了算法库,目前已有c++/python/php/java/golang/c#等语言版本。均提供了解密、加密、验证URL三个接口,企业可根据自身需要下载,下载下载地址
5. 案例分析打开Readme.txt
注意事项 1.comqqweixinmpaes目录下是用户需要用到的接入企业微信的接口,其中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%libsecurity目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%jrelibsecurity目录下覆盖原来文件
从Readme.txt文件内容我们分析如下:
1.comqqweixinmpaes目录下提供了一些加解密的工具类
2.WXBizMsgCrypt用途在于回调url,收到用户回复消息的解密以及开发者回复消息的加密过程。Sample.java文件为案例代码
3.commons-codec-1.9的依赖
将comqqweixinmpaes目录下的工具类复制到项目的com.gblfy.qywxinner.qywxdecode包下面
在项目的pom.xml文件中引入commons-codec依赖
在项目com.gblfy.qywxinner.controller包下的MessageController类中添加callback方法,将Sample.java类中将案例1代码复制过来,将sToken、sCorpID、sEncodingAESKey配置信息替换为自己的
由于企业微信会携带4个参数(msg_signature、timestamp、nonce、echostr)请求咱们的配置验证url有效性的地址(http://4663588nl3.zicp.vip/message/callback),因此,咱们需要从callback方法中接收企业微信传过来的参数sVerifyMsgSig、sVerifyTimeStamp、sVerifyNonce、sVerifyEchoStr
写法如图
略
2.6. 验证URL有效性然后,执行以下操作,重新保存
点击保存机会请求咱们的配置的url地址,进入咱们callback的方法中,进行加解密操作,然后,返回。
接收企业微信传递过来的参数和回复
请求方式为POST,同一个地址(http://4663588nl3.zicp.vip/message/callback)
在项目com.gblfy.qywxinner.controller包下的MessageController类中添加callbackData方法,将Sample.java类中将案例2代码复制过来,将sToken、sCorpID、sEncodingAESKey配置信息替换为自己的
由于企业微信会携带4个参数(msg_signature、timestamp、nonce)请求咱们的配置验证url有效性的地址(http://4663588nl3.zicp.vip/message/callback),因此,咱们需要从callback方法中接收企业微信传过来的参数sVerifyMsgSig, sReqTimeStamp, sReqNonce, sRespData,其中sRespData是咱们的消息体
写法如图
略
3.5. 发送消息 3.6. 验证 3.7. 日志监控控制台日志
解密decrypt企业微信推送的消息->sMsg:3.8. 收到回复消息 四、源码分享 4.1. 后端源码Content:你好,测试企业微信处理消息 回复->data: 1646043916 7069704788922636053 1000002 1646043916
后端:https://gitee.com/gblfy/qywx-inner-java
前端:https://gitee.com/gblfy/qywx-vuejs



