图片展示

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

Chengdu Shilong Pearson Education technology  Limited  Liability  Technology Group Co., Ltd.

头条号网站验证文件

好啊,"搜 "

 

 

 

 

 

 

 

好啊,"搜 "

 

 

 

客服电话:13904310313   

 

 

 

公司总机:028-67876373              

 

 

 

钉钉客服:17684321066                   

 

 

 

备案电话:15680712313 

 

 

 

商标注册服务电话:15210354365  

 

 

 

公安部备案号:22010602000144 

 

 

 

google-site-verification: googlea5d4809e7c237a00.html

 

 

 

 

 

 

 

如何接收企业微信回调

狮龙书廊 微信服务 开发工具 狮龙书廊 腾讯科技 青云科技

如何接收企业微信回调

100

产品参数

  • 标准设计 1
  • 产品外观 1
  • 文本模块 1
  • 文件标准 1
展开全部 收起

产品详情

二:如何接收企业微信回调
最后更新:2022/06/10

在上一节教程中,我们创建了一个第三方应用,得到了对应的 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。


如何接收企业微信回调
如何接收企业微信回调
长按识别二维码查看详情
长按图片保存/分享
询盘

在线询盘 更多+
  • 联系人 *

  • 手机 *

  • 描述

  • 提交

  • 验证码
    看不清?换一张
    取消
    确定

咨询内容:


你还没有添加任何产品

加入成功
图片展示
图片展示

———

 

合作企业

“狮龙书廊,很多家企业合作的选择。〞

成都狮龙书廊科技有限公司于2016年12月08日成立。法定代表人毛凌国,公司经营范围包括:网络工程开发;计算机领域的技术开发、转让、咨询、推广服务;网页设计制作;

图片展示

———

 

伙伴合作企业

“商中在线,很多家企业的选择。〞

云指网络科技有限公司于2017年08月04日成立。法定代表人朱芹芹,公司经营范围包括:网络工程开发;计算机领域的技术开发、转让、咨询、推广服务;网页设计制作;

图片展示
文件标题
文件大小
下载次数
更新时间

成都狮龙书廊科技有限责任公司,是一家互联网高科技技术研究开发企业,本公司不以销售产品为目的,以展示公司文化为主。登记注册在四川成都高新区,企业纳税人识别号:91510100MA62N9D027,公司经营主业以计算机软件代码和硬件技术设计,电子产品和提供技术服务;软件开发;网页设计;图文设计;美术图案设计;网络技术服务;和商务咨询,代理制作发布各类广告推广业务,企业简称狮龙书廊科技,艺画斋----国际商业美术师,毛凌国.中国 互联网应用展示平台,是当代科技前沿领域开展艺术引领创新的云空间,在这里,本着帮助现有科技企业,开发设计领域,学术指导领域,新的创新,发明实用新型,和外观设计的展示平台,有机会聚集青年一代设计师,艺术设计者,学者和文化传承人的学术应用展示,普及传统美学思想与中外文化白花映演,实现中国梦,凝聚中国民族团结的社会价值。

狮龍畫廊---品牌是邦企科技认证的品牌项目,(狮龙书廊)企业实名认证的信用,科技驱动人文艺术和文明,推动中国文化传承事业在一带一路建设中的积极作用,我们不仅仅是企业,也是国际商业美术事业发展的推动者,高科技应用的转化和开发前沿领跑者,是未来职业发展的标准贯彻执行推广实体,是追求目标的技术型推广基石。成都狮龙书廊科技有限责任公司,服务社会的类型是以企业模式经营,独立的法人负责制体系,对社会组织和个体包括公司,开展各类的服务项目,如网络技术服务,建站设计,代理域名,空间结构分布云技术,微周微信开发和技术产品推广,特别是国际高科技人才服务和认证服务领域的经验的分享服务。成都狮龙书廊科技有限责任公司入围中国数字产业企业诚信企业,狮龙书廊通过中国电子人证服务产业联盟认证,具有较高服务和任用等级。艺画斋企业服务的一个项目。 

国际商业美术设计师(International Commercial Art Designer英文缩写ICAD)职业资格认证是国际商业美术设计师协会(International Commercial Art Designer Association,英文缩写ICADA)在全球范围内推行的四级商业美术设计专业资质认证体系的总称。它是以国际职业标准为导向,以实际工作能力、经验、知识和艺术素养为考评依据的一种新型的职业资格证书制度。  

 

 
CONTACT US

点击链接加入我的企业“成都狮龙廊科技有限责任公司长春分公司”,一起开启全新办公体验吧。 https://work.weixin.qq.com/join/w-A6Tt1b7iLuLRUM_ChDDg/hb_share_qymng_mjoin?is=203

 

电话总机:028-67873673

分机:

 

 

地址:成都高新区府城大道399号7栋2单元14层1404号

成都狮龙书廊科技有限责任公司 毛凌国 业务电话:17684321066神马搜索推广品牌竞价排名

<--------阿里地图开发代码-将代码嵌入到论坛、博客、网站中:------>

 

公共邮箱:public@maolg.com

企业管理员:admin@maolg.com

网站管理:webmaster@maolg.com

企业邮箱:mail.maolg.com

 

 

 

中国区官网:  www.maolg.com

成都总公司:   www.maolg.net

狮龙书廊长春分公司:www.maolg.cn

毛凌国我爱你: www.毛凌国.我爱你

 

添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功
添加微信好友,详细了解产品
我知道了