欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

企业微信会话内容存档:从零开始的完整演示及服务器配置教程

最编程 2024-08-02 15:38:16
...

a.接收事件服务器配置

        1)token、sEncodingAESKey   随机获取即可,保存好下面会用到;

        2)url,需要后台部署服务,外网可以访问,接口如下;

/**
     * 验证回调URL
     * 企业开启回调模式时,企业微信会向验证url发送一个get请求
     * 假设点击验证时,企业收到类似请求:
     * * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3&timestamp=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】 这个后面会用到