Java设置吸收企业微信消息服务器URL

打印 上一主题 下一主题

主题 573|帖子 573|积分 1719

企业微信的吸收消息服务器的程序用Java代码实现以下功能
1.吸收并剖析企业微信发送的消息
2.验证消息的正当性(署名验证)
3.根据消息内容进行相应的业务处理
接受消息服务器设置

登录企业微信后台管理


参考链接
企业微信 开辟者 官方文档
https://developer.work.weixin.qq.com/tutorial/detail/38
java加解密库下载

https://developer.work.weixin.qq.com/devtool/introduce?id=10128
,这里,我下载的是json版本的

下载后解压如图


Sample 是一个测试类,com\qq\weixin\mp\aes  里是一些工具类,直接粘贴到项目使用,
实现代码

pom文件可能需要加入的依赖,(假如不是maven项目,直接用lib里的jar)
  1. <dependency>
  2.   <groupId>org.json</groupId>
  3.   <artifactId>json</artifactId>
  4.   <version>20200518</version>
  5. </dependency>
  6. <dependency>
  7.   <groupId>commons-codec</groupId>
  8.   <artifactId>commons-codec</artifactId>
  9.   <version>1.9</version>
  10. </dependency>
  11. <dependency>
  12.   <groupId>org.gavaghan</groupId>
  13.   <artifactId>geodesy</artifactId>
  14.   <version>1.1.3</version>
  15. </dependency>
复制代码
controller代码
  1. import lombok.extern.slf4j.Slf4j;
  2. import org.example.common.wei.WXBizJsonMsgCrypt;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import java.io.PrintWriter;
  9. @Slf4j
  10. @RestController
  11. @RequestMapping("/weChat")
  12. public class WeChatCallBackController {
  13.     @GetMapping( "/callBackUrl")
  14.     public void callbackUrl(HttpServletRequest request, HttpServletResponse response) throws Exception{
  15.         // 微信加密签名
  16.         String sVerifyMsgSig = request.getParameter("msg_signature");
  17.         // 时间戳
  18.         String sVerifyTimeStamp = request.getParameter("timestamp");
  19.          // 随机数
  20.         String sVerifyNonce = request.getParameter("nonce");
  21.         // 随机字符串
  22.         String sVerifyEchoStr = request.getParameter("echostr");
  23.         System.out.println("request=" + request.getRequestURL());
  24.         String sToken = "XXXXXXXXXXXX";// 和设置服务器接受页面的保持一样,直接随机形成粘贴过来
  25.         String sCorpID = "XXXXXXXXXXXX";//企业id
  26.         String sEncodingAESKey = "XXXXXXXXXXXX;// 和设置服务器接受页面的保持一样,直接随机形成粘贴过来使用
  27.         PrintWriter out = response.getWriter();
  28.         // 通过检验msg_signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
  29.         String sEchoStr = null;
  30.         try {
  31.             WXBizJsonMsgCrypt wxcpt = new WXBizJsonMsgCrypt(sToken, sEncodingAESKey, sCorpID);
  32.             sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,
  33.                     sVerifyNonce, sVerifyEchoStr);
  34.             System.out.println("verifyurl echostr: " + sEchoStr);
  35.             // 验证URL成功,将sEchoStr返回
  36.             // HttpUtils.SetResponse(sEchoStr);
  37.         } catch (Exception e) {
  38.             //验证URL失败,错误原因请查看异常
  39.             e.printStackTrace();
  40.         }
  41.         if (sEchoStr == null) {
  42.             sEchoStr = sToken;
  43.         }
  44.         out.print(sEchoStr);
  45.         out.close();
  46.         out = null;
  47.     }
  48. }
复制代码
将上面服务 发布到外网,袒露接口,可公网访问的,
然后设置到页面上(https://XXXXXX/weChat/callBackUrl)

内网穿透,可公网访问的方法

自己临时测试时,采取内网穿透 将自己当地的地点打到公网上
1. 钉钉内网穿透方法
内网穿透(测试版)--已废弃 - 钉钉开放平台
2. cloudflare内网穿透
https://blog.51cto.com/u_16099345/9937648
3. Localtunnel端口映射工具
官方后端服务器源码 https://github.com/localtunnel/server
 
winds 上  cmd 打开黑窗口 (localtunnel是用Node.js写的,以是必须先安装NodeJS环境)
  1. 安装  npm install -g localtunnel
  2. 执行  假设你的本地服务器在端口 8000 上运行,只需使用 LT 命令来启动隧道
  3.       lt --port 8000  
  4.       lt --port 8000 --subdomain xxxxx
  5.      上面两个lt命令都行,第一个是默认域名随机生成一个,第二个指定域名
  6.      port:指定连接本地指定的服务端口
  7.      subdomain:设置固定的访问域名前缀(默认为随机字符),不要使用驼峰命名
  8. 直接访问 lt命令执行后的 your url is 后面的地址,就是代理后的地址
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表