企业微信会话内容存档:从零开始的完整演示及服务器配置教程
最编程
2024-08-02 15:38:16
...
a.接收事件服务器配置
1)token、sEncodingAESKey 随机获取即可,保存好下面会用到;
2)url,需要后台部署服务,外网可以访问,接口如下;
/**
* 验证回调URL
* 企业开启回调模式时,企业微信会向验证url发送一个get请求
* 假设点击验证时,企业收到类似请求:
* * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D
* * HTTP/1.1 Host: qy.weixin.qq.com
* <p>
* 接收到该请求时,企业应 1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr),
* 这一步注意作URL解码。
* 2.验证消息体签名的正确性
* 3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信
* 第2,3步可以用企业微信提供的库函数VerifyURL来实现。
*/
@Override
@GetMapping("weChatPush")
public String weChatPush() throws AesException {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// String sToken = "QDG6xxx";
String sToken = enterpriseWechatConfig.getQyChatToken();
// String sCorpID = "wx5823bf9xxxxxxxx";
String sCorpID = enterpriseWechatConfig.getQyCorpid();
// String sEncodingAESKey = "jWmYm7qr5nMoAUwZRjGtBxmz3KA1txxxxxxxxxxx";
String sEncodingAESKey = enterpriseWechatConfig.getQyChatEncodingAESKey();
log.info("获取 diamond 配置 sToken:{} sCorpID:{} sEncodingAESKey:{}", sToken, sCorpID, sEncodingAESKey);
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);
// 解析出url上的参数值如下:
String sVerifyMsgSig = request.getParameter("msg_signature");
String sVerifyTimeStamp = request.getParameter("timestamp");
String sVerifyNonce = request.getParameter("nonce");
String sVerifyEchoStr = request.getParameter("echostr");
//需要返回的明文
String sEchoStr = null;
log.info("获取 url 参数 sVerifyMsgSig:{} sVerifyTimeStamp:{} sVerifyNonce:{} sVerifyEchoStr:{}",
sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr);
try {
sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr);
log.info("返回的明文: {}", sEchoStr);
return sEchoStr;
} catch (Exception e) {
//验证URL失败,错误原因请查看异常
log.info("验证URL失败,错误原因请查看异常e:{}", e);
}
return sEchoStr;
}
b.接收事件服务器配置
可能出现问题:ip不可信
解决方案:请删掉配置的ip,不要设置ip! 不要设置ip! 不要设置ip!
c.配置公钥
1)生成密钥对(RSA,2048,PKCS#1),保存好公钥和私钥,后面会用到
最简单的方法:http://web.chacuo.net/netrsakeypair
2)将公钥填写到企业微信后台
保存公钥后可以查看到【公钥版本 1】,【管理凭证密钥 secret】 这个后面会用到