当前位置: 首页 > ds >正文

Java对接企业微信实战笔记

Java对接企业微信实战笔记

微信开发文档

有关企业微信的服务商的一些配置参考企业微信创建的服务商配置信息

一 流程图

在这里插入图片描述
只要企业安装应用后,就可以获取到企业的信息

二 创建应用获取suite_ticket

1.创建应用
在这里插入图片描述
微信开发平台得是服务商角色才能进入服务商后台创建一个应用
在创建应用平台里对于回调域名可以先随便写一个,后续在进行修改
2. 回调配置
回调配置 - 接口文档 - 企业微信开发者中心
(1)根据文档实现get接口
参考文档中 3.1 支持Http Get请求验证URL有效性
回调服务需要作出正确的响应才能通过URL验证,具体操作如下:

① 对收到的请求,解析上述的各个参数值(参数值需要做Urldecode处理)
② 根据已有的token,结合第1步获取的参数timestamp, nonce, echostr重新计算签名,然后与参数msg_signature检查是否一致,③ 确认调用者的合法性。计算方法参考:消息体签名检验
④ 解密echostr参数得到消息内容(即msg字段)
在1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)
http://api.3dept.com/?msg_signature=创建应用生成的token&timestamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR
其他三个参数来自于收到的请求解析所得(参数值需要做Urldecode处理)
解密的密文来创建应用的解密规则,对echostr密文进行解密成明文
创建应用时的数据回调与指令回调URL是内网穿透的地址,拿到该值去应用中进行修改
(2)根据文档实现pos接口
参考文档3.2 支持Http Post请求接收业务数据
与get接口不同的是它返回的是xml,需要解析xml得到加密的明文
解密Encrypt,得到明文的消息结构体
消息体中包括SuitedId,其中InfoType的类型是suite_ticket,那么拿到SuiteTicket的值就是suite_ticket的值了,可以将该值存到库里,也可实时获取
推送suite_ticket

三 获取suite_token

获取suite_token - 接口文档 - 企业微信开发者中心
三个参数中的另外一个参数需要到创建应用中获取,得到的suite_token可以保存到库里
在这里插入图片描述

四 获取企业授权码

获取企业临时授权码
获取企业永久授权码
(一)创建保存企业信息的表
字段包括:corpId , corpName , permanent_code,agentid
agentid:这个字段在消息推送的时候会用到!!!
(二)获得企业授权时推送的企业临时授权码
【这是使用最简单的安装测试按钮,实现企业临时授权码推送】
(三)根据临时授权码获得永久授权码
(四)将企业id和永久授权码存入数据库中
在这里插入图片描述

五 获取企业token

获取企业token
可以从库里查到获取token所需要的入参
在这里插入图片描述

六 获取企业的部门,成员,客户,服务商等信息

获取部门列表
获取部门成员列表
(一)创建成员信息表
字段包括: userId , 部门id , 企业id,企业名称
(二)获得企业token
【这一步可以在获取永久码的时候直接获取到,这一步就可以省掉了】
(三)获得部门
(四)根据部门id,获得成员id,并存入数据库
在这里插入图片描述
在这里插入图片描述

七 前后端系统授权登录

1.配置应用主页,实现移动端登录
前端网页授权登录
A.配置应用主页,获取code,点击应用会给redirectURL的后面拼接code,前端可以从URL解析获得
B.前端页面提供登录按钮,调用后端登录接口
C.提供一个登录接口【通过code获得用户信息,然后校验userId是否在我们系统,从而判断用户是否能够登录】
在应用中需要修改应用主页,且需要把可信用的文件放到前端项目中,可在企业微信应用上进行下载
获取用户信息
在这里插入图片描述
APPID就是应用的suiteID
在这里插入图片描述
调用api接口获取用户的信息

  1. 设置URL登录后端系统
    企业微信web端登录
    在这里插入图片描述
    设置后,应用安装后可以从业务设置出进入程序
    在这里插入图片描述
    调用api获取登录用户的信息

  2. 扫码登录
    可以提供以下三种方式进行扫码登录
    在这里插入图片描述
    A.创建一个服务商的官网页面【一般服务商页面会有三个按钮】
    B.构建安装应用链接:【https://developer.work.weixin.qq.com/document/path/90597】

这里一定要注意,在获取预授权码之后,需要调用一下授权码配置接口

C.构建注册按钮【https://developer.work.weixin.qq.com/document/path/90578】

注册需要上线后才能获得推广包id,根据推广包获得注册码;这里只是做一下代码实现;后面线上了直接改一下推广包id即可

注意:这种注册链接并不属于登录的方式,只是一般服务商网站都会提供这种注册按钮;只是用于推广企业微信,让别人安装企业微信顺带将我们的第三方应用自动安装上而已

D.构建扫码链接【https://developer.work.weixin.qq.com/document/path/91124】

这里不需要通过代码生成,直接拼接即可

E.点击测试登录
在这里插入图片描述

八 实现选人打开聊天会话

(一)从登录接口中获取corpId
(二)获取企业jsapi_ticket
JS-SDK使用权限签名算法 - 接口文档 - 企业微信开发者中心
(三)获取应用jsapi_ticket
(四)完成企业和应用参数签名
(五)前端系统获得两种签名数据,进行配置注入,引入jssdk文件
(六)完成选人获取人员userId
企业微信选人
(七)打开选中人的聊天会话
企业微信打开会话

九 推送消息

(一)获得进入后端系统的人员信息
(二)根据当前登录用户所在企业,查找数据库表中的成员
(三)使用通讯录展示组件展示成员名称
通讯录展示组件

(四)开发发送消息页面
(五)调用发送消息接口发送消息
发送应用消息

十 上线部署

在这里插入图片描述
上架规范
在这里插入图片描述

http://www.xdnf.cn/news/2021.html

相关文章:

  • [原创](现代Delphi 12指南):[macOS 64bit App开发]:如何使用CFStringRef类型字符串?
  • 【vue】【element-plus】 el-date-picker使用cell-class-name进行标记,type=year不生效解决方法
  • BongoCat - 跨平台键盘猫动画工具
  • 线程同步与互斥
  • ElementUi的Dropdown下拉菜单的详细介绍及使用
  • 软件测试大模型Agent探索(dify:chatflow+企业微信机器人)
  • 【C++类和数据抽象】复制构造函数
  • SIEMENS PLC 程序 GRAPH 程序解读 车型入库
  • 【深度强化学习 DRL 快速实践】近端策略优化 (PPO)
  • mybatis-plus里的com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析
  • Python Cookbook-6.8 避免属性读写的冗余代码
  • (PYTHON)函数
  • 多物理场耦合低温等离子体装置求解器PASSKEy2
  • uniapp小程序开发入门01-快速搭建一个空白的项目并预览它
  • 多模态(3):实战 GPT-4o 视频理解
  • 线上图书借阅小程序源码介绍
  • 系统测试的技术要求
  • 基于Docker的Flask项目部署完整指南
  • 基于C#+Unity实现遇见李白小游戏
  • 《强势量价关系》速读笔记
  • 【信息系统项目管理师】高分论文:论人力资源管理与成本管理(医院信息系统)
  • 【Python数据分析】Pandas模块之pd.concat 函数
  • 【Agent】LangManus深度解析:AI自动化框架的对比与langgraph原理
  • openwrt查询网关的命令
  • Flink部署与应用——部署方式介绍
  • 更智能的银行体验:生成式 AI 与语义搜索的实际应用
  • windows服务器及网络:搭建FTP服务器
  • 【AIGC】基础篇:VS Code 配置 Python 命令行参数调试debug超详细教程
  • DeepSeek 赋能全流程数据治理:构建智能化数据价值链
  • vue3中的effectScope有什么作用,如何使用?如何自动清理