http://u220434.s1.weizhan1.com/admin/login.html
图片展示

如何接收企业微信回调

作者:毛凌国 浏览: 发表时间:2024-08-30 11:14:51 来源:狮龙书廊

标题:如何***接收企业微信回调?详细步骤与技巧

描述:掌握企业微信回调接收的关键步骤,确保信息实时同步,提升工作效率。本文详细解析了如何配置、验证及优化企业微信回调接收过程,助力企业实现***沟通与管理。

关键词:企业微信, 回调接收, 配置步骤, 验证方法, ***沟通, 管理优化

我们创建了一个第三方应用,得到了对应的 suite_id/ suite_secret 信息,但是并没有对数据回调和接口回调进行响应,网页提示验证不通过。
在本节课程中,我们将完善服务端的逻辑,接收企业微信的回调,使回调 URL 的配置能够通过验证。

通过本节教程,开发者将了解:

  1. 如何接收企业微信的指令和数据回调
  2. 如何对企业微信的回调进行验证
  3. 如何实现第三方应用的回调服务

准备工作

在开始本教程内容前,开发者需要做如下准备:

  • 已创建第三方应用,并在第三方【应用详情】-【回调配置】找到对应的 Token 和 EncodingAESKey,可参考 一:如何创建第三方应用。
  • 在回调的实现逻辑中需要进行加解密计算,企业微信已经提供了 C++ Python PHP Java Go C# Node.js 等语言版本的加解密库,并且均提供了解密、加密、验证URL三个接口,开发者可以根据开发需要 下载加解密库。
  • 根据实际开发需要,搭建内网穿透服务。

本节教程将以 Node.js 作为代码语言示例,讲解对应的操作流程。

回调的实现类型

在配置应用的开发信息时,我们已经知道了第三方应用的回调配置有数据回调和指令回调两种。

数据回调,用于接收托管企业微信应用的用户消息、进入应用事件、通讯录变更事件。
指令回调,用于接收应用授权变更事件(应用添加、删除、修改)以及ticket参数,ticket说明详API接口说明。

对于数据回调和指令回调的两个 URL ,在服务端的实现时,都必须同时支持 HttpGet 以及 HttpPost两种能力。

1、Get 类型

仅用于在应用创建配置应用信息时的验证,企业微信服务端会向回调URL发起一个 Get 请求,当该回调URL按照约定进行了响应后,表明第三方服务具备解析企业微信推送消息的能力。

2、Post 类型

用于实际的业务请求,比如应用菜单的点击事件,用户消息等。当有回调的行为发生时,企业微信服务端会向该回调URL发起一个 Post 请求,同时数据会已加密的形式推送到该回调 URL,第三方服务商接受信息、解密信息,处理业务逻辑,并且按照约定进行响应即可。

回调内网穿透

回调服务的 URL 是一个公网的 URL,如果在实际进行应用开发时,代码和服务是部署在本地机器的话,那么需要搭建一个内网穿透服务,要让企业微信服务器发来的数据回调和指令回调,能够到达本地服务。

三方应用开发的内网穿透,可以使用官方提供的 内网穿透工具 进行快速调试和验证。

目前社区有许多较成熟的内网穿透解决方案,开发者可根据实际需要进行选择。

Get 回调实现

根据创建第三方应用时填写的回调URL,假设为 http://myapp.com/callback/command ,我们将来实现这个URL的 get 请求路由,并且按照要求响应。

1、实现 get 路由

数据回调URL 和 指令回调URL 均需要支持 HttpGet 形式的请求回调。

const express = require('express');const router = express.Router();// get方式 用于验证router.get('/callback/data', validateCallback);router.get('/callback/command', validateCallback);

2、解析回调参数

企业微信回调服务会通过 HttpGet 的形式请求回调 URL,并将 msg_signature、timestamp、nonce、echostr 以 query 参数的形式传递过来。我们在回调URL的逻辑中,解析出这些参数。

// 从 query 中获取相关参数const { msg_signature, timestamp, nonce, echostr } = req.query;

3、计算签名并校验

根据在上一步获取的参数timestamp、nonce、echostr,连同 Token一起,使用加解密库的加密函数重新加密计算签名。

// 引入官方的加解密库const crypto = require('@wecom/crypto');// 在应用详情页找到对应的tokenconst token = '';// 重新计算签名const signature = crypto.getSignature(token, timestamp, nonce, echostr);console.log('signature', signature);

4、解密回调的加密串,并将内容返回

通过 EncodingAESKey 和解析出来的 echostr 作为参数,使用加解密库的解密函数,解密出对应的 message,并立即以明文的形式直接返回。

// 校验签名是否正确if (signature === msg_signature) {console.info('签名验证成功')// 在应用详情页找到对应的EncodingAESKeyconst aeskey = '';// 如果签名校验正确,解密 messageconst { message } = crypto.decrypt(aeskey, echostr);console.log('message', message);// 返回 message 信息res.send(message);}

到这里,我们已经完成了回调URL的 get 实现,在【应用详情】-【回调配置】重新点击编辑保存,便可以重新触发指令回调URL和数据回调URL的验证,确保网页不再提示“服务商未响应请求,将无法获取用户事件回调”。

image

想要了解更多 Get 回调的实现,可以参考 支持http-get请求验证url有效性。

Post 回调实现

1、实现 post 路由

数据回调URL 和 指令回调URL 均需要支持 HttpPost 形式的请求回调。

const express = require('express');const router = express.Router();// post方式 用于授权、业务数据回调router.post('/callback/command', function (req, res, next) {});

2、解析参数,并校验签名

企业微信回调服务会通过 HttpPost 的形式请求该回调URL,并将 msg_signature、timestamp、nonce 以 query 参数的形式传递过来,像 HttpGet 形式一样,需要先对参数进行解析,并且校验签名有效。
获取的参数 timestamp、nonce、echostr,连同 Token一起,使用加解密库的加密函数重新加密计算签名。

// 引入官方的加解密库const crypto = require('@wecom/crypto');// 从 query 中获取相关参数const { msg_signature, timestamp, nonce } = req.query;// 在应用详情页找到对应的tokenconst token = '';// 重新计算签名const signature = crypto.getSignature(token, timestamp, nonce, echostr);console.log('signature', signature);

3、解密密文消息

在 HttpPost 回调中,密文内容是以 XML 字符串的形式放在 RawBody 中,通过对该 XML 字符的解析读取出对应的加密消息 Encrypt。
通过 EncodingAESKey 和加密消息 Encrypt 作为参数,使用加解密库的解密函数,解密出对应的 message。
而 message 仍然是一个 XML 字符串格式,再次对该 XML 解析,便可以得到本次 HttpPost 回调实际的数据信息。

// 解析 xml 的字符串内容let wholeXML = await getRawBody(req, {length: req.headers['content-length'],limit: '1mb',encoding: 'utf-8'});// 将 xml 解析成 jsonlet formatJson = await parseXML(wholeXML);// 得到加密消息体let encrypt = formatJson.Encrypt;// 在应用详情页找到对应的EncodingAESKeyconst aeskey = '';// 将加密消息体进行解密,解密后仍旧是 xml 字符串let messageXML = crypto.decrypt(aeskey, encrypt);// 把解密后 xml 消息体字符串,解析成 jsonlet callbackDataBody = await parseXML(messageXML.message);console.log('CallbackData', callbackDataBody);

4、响应本次请求

不同的业务回调要求返回不同内容,在本节中我们直接返回 success 字符串即可。

// 响应返回res.send('success');

想要了解企业微信回调设置的更详细信息,可以参考文档 回调配置。

到这里,我们已经完成了第三方应用的 HttpPost 回调配置逻辑框架,在下一节教程,我们就可以利用这个指令回调实现 suite_ticket 的接收,从而获得 suite_access_token。


如何接收企业微信回调
标题:如何***接收企业微信回调?详细步骤与技巧 描述:掌握企业微信回调接收的关键步骤,确保信息实时同步,提升工作效率。本文详细解析了如何配置、验证及优化企业微信回调接收过程,助力企业实现***沟通与管理。 关键词:企业微信, 回调接收, 配置步骤, 验证方法, ***沟通, 管理优化
长按图片保存/分享
0
你的喜欢,就是我坚持写下去的能量器
好文推荐
已有34人推荐
文章推荐

成都狮龙书廊科技有限责任公司长春分公司 

0431-85741934

admin@毛凌国.我爱你

admin@maolg.site

admin@maolg.info

企业邮箱传真:4008266163-81212 

统一社会信用代码91220101MA14BJJ05D

开户银行名称:中国银行股份有限公司长春汽车厂支行    开户银行代码:104241010003 

开户名称:成都狮龙书廊科技有限责任公司长春分公司    企业账号:163642934965 

地址:长春汽车经济技术开发区一汽集团公司二生活区610栋2单元504号房

 开户银行代码:104241010003

电子邮箱(Email): public@maolg.com 推广链接

网络管理员(administrator): admin@maolg.com    

  ICP备案/许可证编号:蜀 ICP备17015012号-1

 

工商注册号:510109000979446

 

企业微信 狮龙书廊

           百度统计 

 

致力于高端品牌网站建设

我们旨在为客户塑造***的互联网形象,以高品质设计创造商业价值

中国·吉林 .长春

汽车经济技术开发区一汽集团公司二生活区610栋2单元504号房

130000

ORCID iD icon https://orcid.org/0009-0008-6003-7549

 

 

 

XX网络科技有限公司  

80% of the industry leaders

 

 

XX网络科技有限公司致力专注于网站建设、企业邮箱、域名空间及服务器、等服务项目;

已为上千家企业提供了网站建设,网页设计,网站程序开发,Flash动画制作,网站售后维护等一条龙专项服务,深受广大客户的好评。

我们拥有专业***的设计和技术团队,以极具创意的网站设计、精湛卓越的网站开发技术,专业的网络策划团队为您量身定制满意的网站建设方案。


 

公司卫星信用标注地址

成都狮龙书廊科技有限责任公司

长春分公司地图开发

狮龙书廊地图开发工具专栏

OpenAdminTools

联合国儿童基金会公益宣传专栏

企业微信 

 毛凌国.我爱你 

企业微信

 

 

 

 

ORCID iD icon https://orcid.org/0009-0008-6003-7549

 

 

 

 .      

商务合作伙伴_COOPERATIVE PARTNER

成都獅龍書廊科技有限責任公司

長春分公司 

 

地址:长春市绿园區610栋2门28号號

電話:0431-85741934  手机:13904310313

郵箱:admin@毛凌國.中國

 

 

吉ICP備2022002610-1號, All Rights Reserved

 

客服中心
服务热线:
13904310313
二维码
扫码关注
添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功!
添加微信好友,详细了解产品
我知道了
吉ICP备2022002610号-1