微网站在哪制作的,iis网站建设中,开网店咨询,wordpress问题插件1、企微配置可信域名 2、企微获取成员userID 3、企微获取用户敏感数据 4、企微配置回调服务 文章目录 一、简介1、概述2、相关文档地址 二、企微配置消息服务器1、配置消息接收参数2、参数解析3、参数拼接规则 三、代码编写—使用已有库1、代码下载2、代码修改3、服务代码编写 …1、企微配置可信域名 2、企微获取成员userID 3、企微获取用户敏感数据 4、企微配置回调服务 文章目录 一、简介1、概述2、相关文档地址 二、企微配置消息服务器1、配置消息接收参数2、参数解析3、参数拼接规则 三、代码编写—使用已有库1、代码下载2、代码修改3、服务代码编写 四、测试 一、简介
1、概述
什么时候需要回调服务
在集成企业微信与内部系统时我们往往需要搭建一个回调服务。回调服务可以实现
自定义丰富的服务行为。比如用户向应用发消息时识别消息关键词回复不同的消息内容用户点击应用菜单时转化为指令执行自动化任务。可以及时获取到状态变化。比如通讯录发生变化时不需要定时去拉取通讯录对比而是实时地获取到变化的通讯录结点进行同步。
回调流程
企业微信会先判断URL服务是否具备解析企业微信推送消息的能力。 具体方式是企业微信往URL服务上发一条Get请求带签名及密文参数到URL服务上如果URL服务检查签名通过并能正确返回密文参数对应的明文字符串则验证通过。此时在企业微信的配置就开始生效。后续的业务请求比如应用菜单的点击事件用户消息等都会类似的方式签名密文向服务URL推送消息。URL服务验证签名通过后需要将POST数据解密就可以得到对应的业务消息明文。 企业收到消息后需要作如下处理
对msg_signature进行校验解密Encrypt得到明文的消息结构体消息结构体后面章节会详说如果需要被动回复消息构造被动响应包正确响应本次请求 · 企业微信服务器在五秒内收不到响应会断掉连接并且重新发起请求总共重试三次 · 当接收成功后http头部返回200表示接收ok其他错误码企业微信后台会一律当做失败并发起重试
2、相关文档地址
1、回调配置
https://developer.work.weixin.qq.com/document/path/909302、接收消息与事件
https://developer.work.weixin.qq.com/document/105143、加解密方案说明
https://developer.work.weixin.qq.com/document/path/909684、加解密库下载与返回码
https://developer.work.weixin.qq.com/document/path/90307二、企微配置消息服务器
1、配置消息接收参数 URLhttp://8.131.239.157
TokenUPN8pOCL
EncodingAESKeyWz0cWqM7VcqPOLpNrMCaaxMMif3USVLOjhvK19tEQaX[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZwjp3T2-1692458157388)(/Users/liyangda/Library/Application Support/typora-user-images/image-20230819222344569.png)]
2、参数解析
整体会用到8个参数。
参数必须说明urlURL是企业后台接收企业微信推送请求的访问协议和地址支持http或https协议。tokenToken可由企业任意填写用于生成签名。encodingAesKeyEncodingAESKey用于消息体的加密是AES密钥的Base64编码。receiveid加解密库里ReceiveId 在各个场景的含义不同1. 企业应用的回调表示corpid。 2. 第三方事件的回调表示suiteid。 3. 个人主体的第三方应用的回调ReceiveId是一个空字符串msg_signature是企业微信加密签名msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体timestamp是时间戳nonce是随机数echostr是加密的字符串。需要解密得到消息内容明文。
3、参数拼接规则
请求方式GET 请求地址
http://api.3dept.com/?msg_signatureASDFQWEXZCVAQFASDFASDFSStimestamp13500001234nonce123412323echostrENCRYPT_STRhttp://8.131.239.157?msg_signatureed7c74fcb19645d3c8312e703063539fe96a532ctimestamp1692450209nonce1693051991echostr9fGqlXxePufd9E71gh4kXooAJJPtxH3MwwZWzxFNdZwTT3qccs6zHxFEDtGuaxJHWktTV97BiKkJIrOhcPw三、代码编写—使用已有库
这次采用的是企微提供的已由库方式进行验证。
1、代码下载
源代码地址https://developer.work.weixin.qq.com/document/path/90307 2、代码修改
因为参数执行有一些问题需要对提供的工具类进行修改。 修改内容 // 密钥公众账号的app secret// 提取密文
// Object[] encrypt JsonParse.extract(postData);Object[] encrypt new Object[]{postData,postData};3、服务代码编写
dependencygroupIdcommons-codec/groupIdartifactIdcommons-codec/artifactIdversion1.9/version
/dependency
dependencygroupIdorg.json/groupIdartifactIdjson/artifactIdversion20180813/version
/dependency代码编写
import com.lydms.demowechat0.WechatUtils.AesException;
import com.lydms.demowechat0.WechatUtils.WXBizJsonMsgCrypt;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;Slf4j
RestController
public class AllTwoController {RequestMapping(/*)public String getCheckInfo(String msg_signature, String timestamp, String nonce, String echostr) throws AesException {String token UPN8pOCL;String encodingAesKey Wz0cWqM7VcqPOLpNrMCaaxMMif3USVLOjhvK19tEQaX;String receiveid ww3e40cde07cc21a01;log.info(msg_signature:{},timestamp:{},nonce:{},echostr:{}, msg_signature, timestamp, nonce, echostr);log.info(token:{},encodingAesKey:{},receiveid:{}, token, timestamp, receiveid);WXBizJsonMsgCrypt wxBizJsonMsgCrypt new WXBizJsonMsgCrypt(token, encodingAesKey, receiveid);String str wxBizJsonMsgCrypt.DecryptMsg(msg_signature, timestamp, nonce, echostr);log.info(return:{}, str);return str;}
}测试代码
/*** 测试代码** param args* throws AesException*/
public static void main(String[] args) throws AesException {// TokenString token UPN8pOCL;//String encodingAesKey Wz0cWqM7VcqPOLpNrMCaaxMMif3USVLOjhvK19tEQaX;//String receiveid ww3e40cde07cc21a01;// 企业微信加密签名String msgSignature 359410caca920fe74a426f5a3057ad437b3b9fa4;// 时间戳String timeStamp 1692448043;// 随机数String nonce 1692495025;// 加密的字符串String echostr BrO11qZxqM8TBczJq17VRzSnhJff5aGXgnTvWlyGaoAZdd5xg1VxbmmPzMJMmkNPv6DSlpMQ6vz4lwoCXMjg;WXBizJsonMsgCrypt wxBizJsonMsgCrypt new WXBizJsonMsgCrypt(token, encodingAesKey, receiveid);// 解析后的值7695278663958312959String s wxBizJsonMsgCrypt.DecryptMsg(msgSignature, timeStamp, nonce, echostr);System.out.println(s);
}四、测试
将服务部署到配置的URL地址后http://8.131.239.157。点击保存 保存成功 查看用户消息