所有的接口需使用HTTPS协议、JSON数据格式、UTF8编码。
接口说明格式如下:
请求方式:GET/POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
数中标注大写的单词,表示为需要替换的变量
请求包体: … 参数说明: … 权限说明:(标明接口的使用范围,开发者应特别留意调用场景。比如,同步通讯录的接口必须要用通讯录同步助手的access_token) … 返回结果: … 参数说明: … 基本概念介绍:
corpid(企业 唯一)——需要有管理员权限;
userid(成员id 唯一)
部门id(部门 唯一)
tagid(标签id 唯一)
agentid(应用id 唯一)
secret(企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥)
access_token(是企业后台去企业微信的后台获取信息时的重要票据,由corpid和secret产生。所有接口在通信时都需要携带此信息用于验证接口的访问权限)
接口调用流程:
企业管理员—获取access_token—调用具体的业务api接口
如何获取access_token:
1.到企业微信管理后台—>我的企业—>最下角的企业id:(如:wwcdd39616ea662af5) 2.选择管理后台—>应用管理——>选择你要获取的应用,打开;复制Secret对应的内容(如:j8kmy0EXjk24XJBNS2K2NhxGUpxosOzGEZQ1AaV32KU)
https://qyapi.weixin.qq.com/cgi-bin/gettoken(请求方式:GET)
corpid(如:wwcdd39616ea662af5)
corpsecret(如:j8kmy0EXjk24XJBNS2K2NhxGUpxosOzGEZQ1AaV32KU)
返回状态:status: HTTP/1.1 200 OKconnection: closeerror-code: 0error-msg: okcontent-type: application/json; charset=UTF-8content-length: 277“`javascript{“errcode”:0,”errmsg”:”ok”,”access_token”:”5vbmVa5ZBHU1IzglkBG5689djnp95DIaoAqtq-Bgnf0fjbZ0fs9kTHGctcjJuuzhh4yAwxWRsko9_Q_NHU0A1mtHEfmlKeXXQa1k0PIySay_OLKR06_xobf4Li3uIBmwci54XtKeNTPp7yHSXEmSGkRV7MYZWMhowfmsz1-8qqwyGlN_qwa1kKOzgcAPCymU-_eVmGzs8RVeAgrZdFjb1A”,”expires_in”:7200} 企业微信的回调配置
什么时候需要回调服务?
在集成企业微信与内部系统时,我们往往需要搭建一个回调服务。
进行回调服务的时候;可以实现:
1.自定义丰富的服务行为(如:在企业微信—管理后台—签到打卡应用;设置对用户的信息的自动回复这些)如图:
2.可以及时获取到状态变化:比如,通讯录发生变化时,不需要定时去拉取通讯录对比,而是实时地获取到变化的通讯录结点,进行同步。
回调服务需要哪些配置
配置回调服务,需要有三个配置项,分别是:URL, Token, EncodingAESKey。
2.1 URL为回调服务地址;
2.2 Token用于计算签名;
2.3 EncodingAESKey用于消息内容加密;
回调服务需要实现哪些功能
配置回调服务时,需要能同时支持HttpGet以及HttpPost两种能力,
企业微信会先判断URL服务是否具备解析企业微信推送消息的能力。
具体方式是,企业微信往URL服务上发一条Get请求带签名及密文参数到URL服务上,如果URL服务检查签名通过,并能正确返回密文参数对应的明文字符串,则验证通过。此时在企业微信的配置就开始生效。
后续的业务请求(比如应用菜单的点击事件,用户消息等),都会类似的方式(签名+密文)向服务URL推送消息。URL服务验证签名通过后,需要将POST数据解密,就可以得到对应的业务消息明文。
3.1 回调服务支持Http Get请求验证URL有效性(不是很清晰,接口调试不清晰怎么使用)
假设企业的接收消息的URL设置为http://api.3dept.com。
企业管理员在保存回调配置信息时,企业微信会发送一条验证消息到填写的URL
请求方式:GET
请求地址:http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR
参数说明:
参数 类型 说明
msg_signature String 企业微信加密签名,msg_signature计算结合了企业填写的token、请求中的timestamp、nonce、加密的消息体
timestamp Integer 时间戳。与nonce结合使用,用于防止请求重放攻击。
nonce String 随机数。与timestamp结合使用,用于防止请求重放攻击。
echostr String 加密的字符串。需要解密得到消息内容明文,解密后有random、msg_len、msg、receiveid四个字段,其中msg即为消息内容明文
回调服务需要作出正确的响应才能通过URL验证,具体操作如下:
对收到的请求,解析上述的各个参数值(参数值需要做Urldecode处理) 根据已有的token,结合第1步获取的参数timestamp,
nonce, echostr重新计算签名,然后与参数msg_signature检查是否一致,确认调用者的合法性。计算方法参考:消息体签名检验
解密echostr参数得到消息内容(即msg字段)
在1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)
3.3 获取企业微信服务器的ip段
企业微信在回调企业指定的URL时,是通过特定的IP发送出去的
请求方式:GET(HTTPS)
请求地址:
https://qyapi.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
参数:access_token(必须);调用接口的凭证
接口实例:
第一步:根据企业corpid与应用钥匙cropsecret获取到access_token
第二步:根据上述的请求地址与得到的access_token参数值进行调用
返回的结果值:
调用接口 获取企业微信API域名IP段
请求地址 https://qyapi.weixin.qq.com/cgi-bin/get_api_domain_ip
返回状态
status: HTTP/1.1 200 OK
connection: close
error-code: 0
error-msg: ok
content-type: application/json; charset=UTF-8
content-length: 363
返回结果 {“ip_list”:[“182.254.11.176”,“182.254.78.66”,“121.51.86.66”,“101.227.162.152”,“101.226.49.50”,”101.89.18.158 “,“117.184.242.103”,”183.192.202.172 “,“223.167.84.62”,“140.207.189.106”,“116.128.138.160”,“121.51.130.85”,”121.51.140.149 “,“183.3.234.106”,”183.3.224.149 “,“58.251.80.106”,“157.255.173.237”,“203.205.255.254”,“203.205.219.41”],“errcode”:0,“errmsg”:“ok”}
快三三期必中口诀企业管理员在保存回调配置信息时,企业微信会发送一条验证消息到填写的URL
请求方式:GET
请求地址:http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR
参数说明:
参数 类型 说明
msg_signature String 企业微信加密签名,msg_signature计算结合了企业填写的token、请求中的timestamp、nonce、加密的消息体
timestamp Integer 时间戳。与nonce结合使用,用于防止请求重放攻击。
nonce String 随机数。与timestamp结合使用,用于防止请求重放攻击。
echostr String 加密的字符串。需要解密得到消息内容明文,解密后有random、msg_len、msg、receiveid四个字段,其中msg即为消息内容明文
回调服务需要作出正确的响应才能通过URL验证,具体操作如下:
对收到的请求,解析上述的各个参数值(参数值需要做Urldecode处理) 根据已有的token,结合第1步获取的参数timestamp,
nonce, echostr重新计算签名,然后与参数msg_signature检查是否一致,确认调用者的合法性。计算方法参考:消息体签名检验
解密echostr参数得到消息内容(即msg字段)
在1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)
3.3 获取企业微信服务器的ip段
企业微信在回调企业指定的URL时,是通过特定的IP发送出去的
请求方式:GET(HTTPS)
请求地址:
https://qyapi.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
参数:access_token(必须);调用接口的凭证
接口实例:
第一步:根据企业corpid与应用钥匙cropsecret获取到access_token
第二步:根据上述的请求地址与得到的access_token参数值进行调用
返回的结果值:
调用接口 获取企业微信API域名IP段
请求地址 https://qyapi.weixin.qq.com/cgi-bin/get_api_domain_ip
返回状态
status: HTTP/1.1 200 OK
connection: close
error-code: 0
error-msg: ok
content-type: application/json; charset=UTF-8
content-length: 363
返回结果 {“ip_list”:[“182.254.11.176”,“182.254.78.66”,“121.51.86.66”,“101.227.162.152”,“101.226.49.50”,”101.89.18.158 “,“117.184.242.103”,”183.192.202.172 “,“223.167.84.62”,“140.207.189.106”,“116.128.138.160”,“121.51.130.85”,”121.51.140.149 “,“183.3.234.106”,”183.3.224.149 “,“58.251.80.106”,“157.255.173.237”,“203.205.255.254”,“203.205.219.41”],“errcode”:0,“errmsg”:“ok”}