2022年6月28日23点之后,企业微信第三方代开发应用,对于企业的CorpID新建应用,需要使用加密后的CropID才能认证通过,官方文档真的是太简洁了,折磨了许久。
本文档用于服务商给客户做代开发应用的参数配置解读,是在官方文档上实践并补充记录。
验证CallBackUrl失败
之前的待开发应用模板,突然就没办法验证开发了,检查原因是发现客户的CropID不对,原来官网发布了更新,更新信息为企业微信账户ID安全性全面升级,需要将CropID转换成加密后的结果,目前只能通过官方接口寻找。
CropID转换接口说明
下图是官方文档对于接口的展示
CropID转换实例
如下获取服务商凭证接口(get_provider_token),需要替换服务商自己的CorpID和secret,参数在企业微信-服务商后台-应用管理-通用开发参数查找。
转换接口(corpid_to_opencorpid)中,参数corpid需要替换客户的CropID,三个参数替换完成后可直接运行,脚本是以北京行控科技有限公司的参数举例。
# coding=utf-8
import json
import requests
def get_provider_token():
# 获取服务商凭证
_url = 'https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token'
_payload = {
# 替换服务商自己的CorpID和secret,参数在企业微信-服务商后台-应用管理-通用开发参数查找
"corpid": "ww0d8d895844978572",
"provider_secret": "kDPLlGRjyRJAuXJaEWEjklXiQ57Qsf7tB9Or8hjlp8_8i8Sw7PWk59ynRaHEpBjl"
}
_response = requests.request("POST", _url, data=json.dumps(_payload)).text
# print(_response)
provider_access_token = json.loads(_response)['provider_access_token']
print(provider_access_token)
return provider_access_token
def corpid_to_opencorpid(provider_access_token):
# 将明文corpid转换为第三方应用获取的corpid
_url = 'https://qyapi.weixin.qq.com/cgi-bin/service/corpid_to_opencorpid?provider_access_token='+provider_access_token
_payload = {
# 参数corpid需要替换客户的CropID
"corpid": "ww280d4d9c616e726f"
}
_response = requests.request("POST", _url, data=json.dumps(_payload)).text
print(_response)
def close():
requests.session().close()
if __name__ == "__main__":
a = get_provider_token()
corpid_to_opencorpid(a)
close()
需要注意的是,运行此接口,需要将代码运行的机器所在IP,加入到服务商的IP白名单中,否则运行会报60020。
路径为服务商后台-服务商信息-基本信息-IP白名单中添加。