Skip to content

后台接口文档

liuxb-tofu edited this page Apr 10, 2020 · 10 revisions

本文档详细说明了如何调用腾讯开放平台后台接口,以实现获取设备是否支持TENCENT SOTER以及验证客户端上传的ASK是否是合法密钥。

统一鉴权

所有微信开放平台后台接口被调用之前需要先进行鉴权,统一使用access_token进行接口鉴权。调用接口时,需要先调用鉴权接口获得access token,然后再使用access token去调用接口。请注意access_token参数一定要放在get参数上。

微信开放平台的鉴权接口为:

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数说明:

参数 是否必须 说明
grant_type 请求类型,获取access token时填写为“client_credential”
appid 微信开放平台为该应用分配的应用标识
secret 微信开放平台为该应用分配的应用密钥

返回示例,正确的JSON返回结果如下:

{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}

返回参数说明:

参数 说明
access_token 获取到的接口调用凭证
expires_in 凭证有效时间,单位:秒

获取是否支持TENCENT SOTER

API URL

https://api.weixin.qq.com/cgi-bin/soter_3rdapp/is_support?access_token=xxxx

api接口输入输出规范

输入

输入参数 说明
model_key 机型模块信息,xml格式。
sdk_version soter2.0版本需携带此字段并填2

输出

对于错误返回,请使用如下参考格式:

{
"errcode":-1,
"errmsg":"system error"
}

参数说明:

返回参数 说明
errcode 错误码
errmsg 错误信息描述

对于正确返回,请使用如下参考格式:

{
"is_support":true,
"support_type":1
}

参数说明:

返回参数 说明
is_support 该机型是否支持TENCENT SOTER并已经通过微信官方认证。true为支持,false为不支持
support_type 2.0版本新增字段,返回具体支持的类型
0: 不支持
1: 指纹
2: 面容
3: 两者都支持

统一错误码

errcode 说明
0 OK
90001 参数格式错误:无法解析的xml格式
90002 参数格式错误:非法的xml节点

接口调用示例

第一步:调用鉴权接口获得access token

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxbf52b89ac6da6&secret=e4baef594fd2d90b076370a53fddf0d6

返回的数据为:

{
"access_token":"b4384c050f27b99151501b1a95eb529",
"expires_in":7200
}

第二步:使用access token以及机型模块信息获取改机型是否支持TENCENT SOTER。

http请求方式: post(请使用https协议)
https://api.weixin.qq.com/cgi-bin/soter_3rdapp/is_support?access_token=b4384c050f27b99151501b1a95eb529
POST数据格式:JSON
POST数据例子:
{
	"model_key":"<deviceinfo><MANUFACTURER name=\"vivo\"><MODEL name=\"vivo X6D\"></MODEL></MANUFACTURER></deviceinfo>",
	"sdk_version": "2.0"
}

验证ASK公钥是否合法

API URL

https://api.weixin.qq.com/cgi-bin/soter_3rdapp/verify_ask?access_token=xxxx

api接口输入输出规范

输入

统一使用json格式进行post,对于上传图片等媒体数据的可以忽略。

输入参数 说明
ask_json ASK结构体所组成的json。可使用客户端sdk获取
ask_json_signature ASK结构体所组成的json对应使用ATTK私钥的签名。可使用客户端sdk获取(证书链格式此部分留空

输出

输出统一使用json格式,对于返回图片等媒体数据的可以忽略。

对于错误返回,请使用如下参考格式:

{
"errcode":-1,
"errmsg":"system error"
}

参数说明:

返回参数 说明
errcode 错误码
errmsg 错误信息描述

对于正确返回,请使用如下参考格式:

{
"is_verified":true,
"attk_version":2
}

统一错误码。

errcode 说明
90001 参数错误:ask_json缺失
90002 参数错误:ask_json_signature缺失
90003 参数错误:ask_json格式错误
90004 参数错误:ask_json无法解析到合法device_id
90005 无法找到所请求device_id对应的attk

接口调用示例

第一步:调用鉴权接口获得access token

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxbf52b89ac6da6&secret=e4baef594fd2d90b076370a53fddf0d6

返回的数据为:

{
"access_token":"b4384c050f27b99151501b1a95eb529",
"expires_in":7200
}

第二步:使用access token调用验证密钥接口

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/soter_3rdapp/verify_ask?access_token=b4384c050f27b99151501b1a95eb529
POST数据格式:JSON
POST数据例子:
{
	"ask_json":"{ \"pub_key\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApL2cM8x9+FZ22bn+3GsA\\nEpOWb7b6jILnAi+lE3lA6BQpbEL3YWWLXPK/pQ4HmnvSZVc281NalpO9riZBPULm\\n8GFiQNX1HE2ShAU7ybFOulKBb+kN2zh/TwFbwFDxALevYvCf6MepisY8vxEi5R+8\\nYqCCCBzLyBLFYGJUyp1Rl3bVwYNnEyl7j4GHFTiFrpoORelikVhRpceIjnn55cAV\\nH3E3wxMEhQcpcArn8FuIAf9lhgLlQL6hs5MrKJSiN0iM8dRpgoMIJtX31r3Zo3cj\\n2hrtiliMwRLe43qTFFn8YhrtXLKSBAGJD7ntYa/JCdDcg0aM1mE+5AhoP5o/0nii\\n1QIDAQAB\\n-----END PUBLIC KEY-----\" , \"cpu_id\":\"10\" , \"counter\":123 ,\"uid\":\"21\" }",
	"ask_json_signature":"oosngnoso3jvhii..."
}

注意:组装请求JSON时,请将ask_json需要填入的value值进行format,以确保如实例中格式,否则将导致验签失败