iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java实现企业微信回调配置
  • 361
分享到

Java实现企业微信回调配置

企业微信javaspringbootspringcloud 2023-09-01 06:09:45 361人浏览 独家记忆
摘要

在使用前阅读官方文档:回调配置文档 一、配置回调服务 一、在企业微信管理后台配置三个配置 分别是:URL, Token, EncodingAESKey。打开企业微信后台-->管理工具-->通讯录同步配置回调地址如下所示 1.1、URL

在使用前阅读官方文档:回调配置文档

一、配置回调服务

一、在企业微信管理后台配置三个配置

分别是:URLTokenEncodingAESKey。打开企业微信后台-->管理工具-->通讯录同步配置回调地址如下所示

1.1、URL为回调服务地址,由开发者搭建(直白点就是后台回调域名地址,你给企业微信的URL,例如http://127.0.0.1:8085/qiyewx/getCallBack服务器如果是云服务要配置域名

2、Token用于计算签名,由英文或数字组成且长度不超过32位的自定义字符串。(可随机获取,但要复制到本地代码,后面会用到)

3、EncodingAESKey用于消息内容加密,由英文或数字组成且长度为43位的自定义字符串。(可随机获取,但要复制到本地代码,后面会用到)

二、在代码中配置Token和EncodingAESKey

# 企业微信配置qiyewx:  url:   corpid:   corpsecret:   #回调配置  token: XXXXXX  encodingAESKey: XXXXXX

 三、官方加解密库下载

1、点击如下链接自行下载,下载后结构如下图所示:

JSON版本和xml版本 

json版本:

xml版本:

加解密库下载与返回码 - 接口文档 - 企业微信开发者中心

2、将下载的示例代码复制到你的项目代码中

二、编码实现

一、引入相关项目依赖

                    commons-codec            commons-codec                                    org.json            json            20200518                            dom4j            dom4j            1.6.1        

二、支持Http Get请求验证URL有效性与支持Http Post请求接收业务数据

切记:将将下载的示例代码复制到你的项目代码中,下面的代码中有使用。

1、coontroller

    @RequestMapping(value = "/getCallBack", method = {RequestMethod.GET, RequestMethod.POST})    public Object CompanyWeChatChangeNotice(httpservletRequest request, @RequestBody(required = false) String body) {       Map parameterMap = request.getParameterMap();        String jsonString = JSONObject.toJSONString(parameterMap);        log.info("企业微信回调参数:{},  解析参数:{}", jsonString, body);        if (body == null) {            Object result = qyWxService.verificationUrl(request);            return result;        }        Map resultMap = qyWxService.getRequestParameter(request, body);        System.err.println(resultMap);               return "success";    }

2、验证URL有效性 

     public Object verificationUrl(HttpServletRequest request) {        log.info("=========验证URL有效性开始=========");        String sEchoStr; //需要返回的明文        try {            WXBizMsGCrypt wxcpt = new WXBizMsgCrypt(qyWxConfig.getToken(), qyWxConfig.getEncodingAESKey(), qyWxConfig.getCorpid());            String msgSignature = request.getParameter("msg_signature");            String timeStamp = request.getParameter("timestamp");            String nonce = request.getParameter("nonce");            String echostr = request.getParameter("echostr");            log.info("企业微信加密签名: {},时间戳: {},随机数: {},加密的字符串: {}", msgSignature, timeStamp, nonce, echostr);            sEchoStr = wxcpt.VerifyURL(msgSignature,                    timeStamp,                    nonce,                    echostr);            log.info("给企业微信返回的明文,{}", sEchoStr);            log.info("=========验证URL有效性结束=========");            return sEchoStr;        } catch (AesException e) {            log.error("验证URL失败,错误原因请查看异常:{}", e.getCode());            throw new AesException(e.getCode());        }    }

3、回调参数解析

     public Map getRequestParameter(HttpServletRequest request, String body) {        log.info("=========参数解析开始=========");        try {            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(qyWxConfig.getToken(), qyWxConfig.getEncodingAESKey(), qyWxConfig.getCorpid());            String msgSignature = request.getParameter("msg_signature");            String timeStamp = request.getParameter("timestamp");            String nonce = request.getParameter("nonce");            log.info("企业微信加密签名: {},时间戳: {},随机数: {}", msgSignature, timeStamp, nonce);            String sMsg = wxcpt.DecryptMsg(msgSignature, timeStamp, nonce, body);            Map resultMap = new HashMap(16);            resultMap = ConstantUtil.parseXmlToMap(sMsg, resultMap);            log.info("decrypt密文转为map结果为{}", resultMap);            log.info("=========参数解析结束=========");            return resultMap;        } catch (AesException e) {            log.error("密文参数解析失败,错误原因请查看异常:{}", e.getMessage());            throw new AesException(e.getCode());        }    }

4、XML转map工具

package com.ruoyi.system.qiwechat.utils;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;import java.io.StringReader;import java.util.Iterator;import java.util.Map;public class ConstantUtil {        public static Map parseXmlToMap(String xml, Map map) {        try {            SAXReader reader = new SAXReader();            Document doc = reader.read(new StringReader(xml));            Element root = doc.getRootElement();            String path = "";            if (map.containsKey(root.getName().trim())) {                path = map.get(root.getName().trim());                map.remove(root.getName().trim());            }            for (Iterator i = root.elementIterator(); i.hasNext();) {                Element element = (Element) i.next();                if (element.isTextOnly()) {                    if (path.length() > 0) {                        map.put(path + element.getName().trim(), element.getTextTrim());                    } else {                        map.put(element.getName().trim(), element.getTextTrim());                    }                } else {                    map.put(element.getName().trim(), path+ element.getName().trim() + ".");                    parseXmlToMap(element.asXML(), map);                }            }        } catch (Exception e) {            e.printStackTrace();        }        return map;    }}

5、配置文件config

package com.ruoyi.common.config;import lombok.Data;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;@Data@Configurationpublic class QyWxConfig {        @Value("${qiyewx.url}")    private String url;        @Value("${qiyewx.corpid}")    private String corpid;        @Value("${qiyewx.corpsecret}")    private String corpsecret;        @Value("${qiyewx.token}")    private String token;        @Value("${qiyewx.encodingAESKey}")    private String encodingAESKey;}

三、测试示例

一、测试3.1 支持Http Get请求验证URL有效性

企业微信开发者中心测试工具  

所要参数依次写入,测试

二、测试3.2支持Http Post请求接收业务数据 

1、演示关于接收客户变更事件回调通知,企业微信开发者中心 回调

2、通俗点就是手机企业微信添加客户将数据回调到本地,按照文档说明讲相关参数设置好。如图所示:

 3、对返回结果按照自己需求进行处理

如下红框所示: 

 备注:要根据事件的类型Event判断回调的事件,在回调事件中根据ChangeType判断事件性质

4、查看日志

看完有所帮助请点点赞,送人玫瑰,手留余香。给作者一个👍🏻

来源地址:https://blog.csdn.net/LIU_ZHAO_YANG/article/details/129137077

--结束END--

本文标题: Java实现企业微信回调配置

本文链接: https://www.lsjlt.com/news/387668.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现企业微信回调配置
    在使用前阅读官方文档:回调配置文档 一、配置回调服务 一、在企业微信管理后台配置三个配置 分别是:URL, Token, EncodingAESKey。打开企业微信后台-->管理工具-->通讯录同步配置回调地址如下所示 1.1、URL...
    99+
    2023-09-01
    企业微信 java spring boot spring cloud
  • .NET Core企业微信开发接口回调配置
    1.配置API接收  2.下载加密解密库 地址:https://developer.work.weixin.qq.com/devtool/introduceid=363...
    99+
    2024-04-02
  • 企业微信开始代开发应用 配置代开发应用回调URL
    用到的php版本是7.4 开发时间:2022-11-2 在做公司的项目时因为企业微信的更新,同一个服务器ip不能在多个企业项目中出现否则就会被判定为第三方服务商,所以新建应用时只能新建代开发应用;在配置回调的时候走了很多坑,在这里梳理一下 ...
    99+
    2023-09-27
    wechat 企业微信 php
  • 微信企业号如何配置和使用
    这篇文章将为大家详细讲解有关微信企业号如何配置和使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、微信企业号的注册和登陆企业号是继公众号、订阅号的另外一种微信类型,它主要是面对企业的。企业号是微信为企...
    99+
    2023-06-17
  • java如何对接企业微信的实现步骤
    目录前言企业微信介绍调用企业微信api对接企业微信的回调前言 最近实现社群对接企业微信,对接的过程遇到一些点,在此记录。 企业微信介绍 企业微信具有和微信一样的体验,用于企业内部成员...
    99+
    2024-04-02
  • java对接企业微信的实现步骤是什么
    这篇文章给大家介绍java对接企业微信的实现步骤是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言最近实现社群对接企业微信,对接的过程遇到一些点,在此记录。企业微信介绍企业微信具有和微信一样的体验,用于企业内部成...
    99+
    2023-06-26
  • 安卓企业微信 文件位置
    安卓手机企业微信文件位置 方法A,固定路径法 文件一般存在这里 /sdcard/Android/data/com.tencent.wework/files/ 但是这个地方你需要用诸如ES文件管理器去...
    99+
    2023-10-21
    android
  • springsecurity企业微信登入的实现示例
    背景 后台系统需要接入 企业微信登入,满足企业员工快速登入系统 流程图 简单代码说明 自定义一套 springsecurity 认证逻辑 主要就是 根据code 获取绑定用户信息 ...
    99+
    2024-04-02
  • .NET Core实现企业微信消息推送
    接口定义 应用支持推送文本、图片、视频、文件、图文等类型。请求方式:POST(HTTPS)请求地址: https://qyapi.weixin.qq.com/cgi-bin...
    99+
    2024-04-02
  • 小程序开发调用微信支付以及微信回调地址配置
    目录支付接口签名工具类,以及时间戳方法回调接口首先观看微信提供的文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.phpch...
    99+
    2024-04-02
  • .NETCore实现企业微信获取部门成员
    1.获取部门成员 请求方式:GET(HTTPS)请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/simplelistaccess_toke...
    99+
    2024-04-02
  • .NET Core如何实现企业微信消息推送
    这篇文章主要介绍了.NET Core如何实现企业微信消息推送的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇.NET Core如何实现企业微信消息推送文章都会有所收获,下面我们一起来看看吧。接...
    99+
    2023-07-02
  • Java实现企业微信消息推送功能的详细步骤
    第一步:申请企业微信注册企业(链接:https://work.weixin.qq.com/nl/sem/registes=c&from=1011017189&bd_v...
    99+
    2024-04-02
  • 微信小程序如何实现getUserInfo回调
    这篇文章给大家分享的是有关微信小程序如何实现getUserInfo回调的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序-getUserInfo回调的实例详解前言:这里就不...
    99+
    2024-04-02
  • 解决.NET Core企业微信openapi回调地址请求不通过的问题
    1.问题截图  2.测试回调模式成功 测试回调模式地址https://open.work.weixin.qq.com/wwopen/devtool/interface/c...
    99+
    2024-04-02
  • Python如何实现获取微信企业号access_token的Class
    小编给大家分享一下Python如何实现获取微信企业号access_token的Class,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一...
    99+
    2024-04-02
  • 怎么使用Python实现企业微信通知功能
    本篇内容主要讲解“怎么使用Python实现企业微信通知功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python实现企业微信通知功能”吧!前言常见的通知方式有:邮件,电话,短信,微信...
    99+
    2023-06-30
  • .NET Core企业微信网页授权登录的实现
    目录1.开发前准备参数获取2.企业微信OAuth2接入流程3.构造网页授权链接4. 调用代码部分4.1 appsettings配置4.2 配置IHttpClientFactory调用...
    99+
    2024-04-02
  • SpringBoot+JavaMailSender实现腾讯企业邮箱配置
    1. 引入spring-boot-starter-mail 依赖包 <dependency> <groupId>...
    99+
    2024-04-02
  • 使用python怎么实现企业微信发送消息
    这篇文章给大家介绍使用python怎么实现企业微信发送消息,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、需要的参数1、通讯用户:touser 或 通讯组:toparty  &...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作