账号实名认证信息比对 v2.4
1. 接口简介
- 用户实名认证信息检查,校验输入的身份证姓名和身份证号码是否与实名认证的信息匹配;敏感权限
- odp 进行服务申请
申请服务名:GACC 帐号相关服务(gacc_account_service)
申请的接口:账号实名认证信息比对服务
申请方式参考:内网文档 - 申请注明:使用方业务名称 ,使用背景 ,使用范围 ,申请的 QPS 量级(建议 QPS:30)
- odp 进行服务申请
注意:该接口在比对的过程中,会对输入的身份证信息再次进行征信校验,征信校验过程中会产生高额费用,请调用方注意,减少不必要的调用
2. L5 信息
- 正式环境:64620673:851968
- 测试环境:64620673:917504
3. 账号实名认证信息比对接口
CGI 基本信息
- 请求 URL:http://ip:port/dmfeature/4037/userCertIdCheck
- 接口请求方式:POST
- 接口返回数据格式:JSON
请求参数说明及完整示例
HEADER 参数
参数 | 必填 | 值 | 说明 |
---|---|---|---|
Content-Type | 是 | application/json | application/json |
X-Odp-Destination-Service | 是 | gacc_account_service | 账号实名认证信息比对服务名 |
X-Odp-Source-Service | 是 | 示例:xxx | 调用者服务英文名 |
X-Odp-Timestamp | 是 | 示例:1540612023 | 当前服务器 Unix 秒 |
X-Odp-Nonce | 是 | au8X6q | 长度为 6 的随机字符串 |
X-Odp-Signature | 是 | xxxx | 签名 |
签名计算方式: lowercase(md5(strcat(destination,',',source,',',timestamp,',',nonce,',',secret)))
destination为,
source为,
timestamp为当前服务器Unix秒,
nonce为长度为6的随机字符串,
secret为调用方自身服务秘钥
POST 参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 是 | 身份证姓名,中文使用 UTF-8 编码 |
certId | string | 是 | 身份证号码 |
context | string | 是 | 上下文,回包原样返回,最大长度 128 |
authInfo | AuthInfo | 是 | 参考基本类型AuthInfo |
device | Device | 是 | 参考基本类型Device |
示例:
{
"name": "张三",
"certId": "11010020191010789X",
"context": "blabla",
"authInfo": {
"authUserType": 3,
"authAppid": "1234567",
"authUserId": "24347382",
"authKey": "244fe73ab2343803ce"
},
"device": {
"outerIp": "14.17.22.35",
"osSystem": "windows"
}
}
完整请求示例:
curl -H "X-Odp-Destination-Service:gacc_account_service" -H "X-Odp-Source-Service:xxx" -H "X-Odp-Timestamp:xxx" -H "X-Odp-Nonce:xxx" -H "X-Odp-Signature:xxx" -d '{"name": "张三","certId": "11010020191010789X","context": "blabla","authInfo": {"authUserType": 3,"authAppid": "","authUserId": "24347382","authKey": "244fe73ab2343803ce"},"device": {"outerIp": "14.17.22.35", "osSystem": "windows"}}' "http://ip:port/dmfeature/4037/userCertIdCheck"
返回字段说明及返回结果示例
返回参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
ret | int | 是 | 返回码 |
msg | string | 否 | 返回说明 |
isCert | int | 是 | 是否实名认证: 0 - 未实名认证; 1 - 已实名认证 |
isMatch | int | 是 | 是否匹配:0 - 不匹配; 1 - 匹配 注意: 该字段仅在 isCert == 1,用户已实名情况下有效 |
context | string | 是 | 上下文,回包原样返回 |
traceId | string | 是 | 流水号 |
返回结果:
{
"ret": 0,
"msg": "",
"context": "blabla",
"traceId": "hp95a3a4d7c627e07d-3-24347382-24347382-837",
"isMatch": 1,
"isCert": 1
}
4. 返回码说明
ret | 说明 |
---|---|
0 | 请求成功 |
601 | 后端请求错误 |
603 | 请求参数错误 |
604 | 逻辑错误 |
605 | 其他错误 |
606 | 用户请求受限,单个 openID 24 小时内请求上限 5 次 |
607 | 后端请求错误 |
608 | 未实名 |
609 | 已实名,但输入信息不匹配 |
610-612 | 系统内部错误,包含未配置必要信息等 |
613 | 证件 ID 格式不正确 |
403 | ACL 鉴权错误 |
429 | 请求过载 |
30000 | 数据发送错误 |
-40000 | 接口不存在 |
-50000 | 服务端解码错误 |
-70000 | 接口名称或参数错误 |
-100001 | 异常, 稍后重试 |
-1 | 系统错误 |
-2 | 系统错误 |
-3 | 找不到服务器 |
-4 | appid 为空 |
-5 | app secret 非法 |
1 | 获取实名信息失败 , SYS ERR, Get UserCertInfo Failed(注意检查票据信息正确性) |
100 | 非法参数输入, 非法的账号类型 |
101 | 非法身份证姓名或号码 |
1000 | 不合法的 appid |
1001 | 签名检验失败 |
1002 | 调用次数超过每日上限 |
1003 | 调用频率超过限制 |
1004 | 调用方不在 ip 白名单中 |
1005 | 调用接口不合法 |
1006 | userid 不合法 |
1007 | nonce 不合法 |
1008 | timestamp 过期 |
1009 | 签名参数不足 |
1010 | nonce 重复 |
1011 | 签名错误 |
2000 | 不合法的帐号类型 |
2001 | 帐号鉴权失败 |
2010 | 无法获取到实名信息,没有办法做比对, 如果是微信 appid+openid 发起查询,请确认 appid 是否在精品游戏池 |
3000 | 身份证不符合格式 |
3001 | 身份证公安接口返回不一致 |
4001 | 不合法的事实类型 |
4002 | 批量接口,单次请求条数超过限制 |
4003 | AuthInfo 中的 authKey 为空 |
5001 | session 获取失败 |
鉴权信息 AuthInfo
- 对于帐号体系互通的登录行为,还需要额外字段用于鉴权 authInfo。
- 对于 wegame 里 qq 登录的,获取票据的方式,参考下面的样例代码。
- wegame 在即通的 authAppid 请联系 wegame 同事查询,每个游戏都不一样。
字段 | 类型 | 必填 | 最大长度 | 说明 |
---|---|---|---|---|
authUserType | int | 是 | 鉴权类型 AuthType | |
authAppid | string | 是 | 20 | 鉴权平台中该应用的 appid ,如 QQ 互联或微信开放平台的 appid,数字使用十进制,例如 wegame 的 2112513 |
authUserId | string | 是 | 64 | 鉴权平台中该用户的 id,例如 openid 或 uin |
authUserIdType | int | 否 | 默认不传,如果 userID 为 Gopenid,则值为 1 | |
authKey | string | 是 | 1024 | 鉴权平台中该用户的登录凭证,例如 skey 或 access token,使用 wegame 或 tcls 登录的 qq 帐号也需要填写。 |
authExt | string | 否 | 1024 | 用户的额外的登录凭证, 一般不需要填写, 目前微信小游戏会使用此字段 |
AuthType | 数值 | 介绍 |
---|---|---|
AuthType_Undefined | 0 | 未定义 |
AuthType_WXOpen | 1 | 微信开放平台帐号体系的 accessToken 票据,authKey 填 accessToken, authAppid 填写微信开放体系分配的 appid |
AuthType_QQOpen | 2 | QQ 互联帐号体系 |
AuthType_QQUin | 3 | QQ 号体系的 skey,形如@mlHhSGoaY,authAppid 填写即通登录体系分配的 appid |
AuthType_WXCTT | 4 | 微信 ctt 票据(端游 wegame) |
AuthType_QQST | 5 | QQ 号体系的 ST 票据, authKey 用 hex 的字符串表示,形如:12741e84d02834164f0949dfa5521d622f442 , authAppid 填写即通登录体系分配的 appid |
AuthType_QQA2 | 6 | QQ 号体系的 A2 票据, authKey 用 hex 的字符串表示,形如:12741e84d02834164f0949dfa5521d622f442 , authAppid 填写即通登录体系分配的 appid |
AuthType_WXSK | 7 | 微信开放体系的 sessionkey 票据, authKey 填 sessionkey, authAppid 填写微信开放体系分配的 appid |
AuthType_WXMiniGame | 8 | 微信小游戏体系. authAppid 填写小游戏的 appid, authUserId 填写 commid, authKey 为空, authExt 填写已协商的内容 |
AuthType_Guest | 9 | 手游的游客态 |
AuthType_AppleID | 128 | 苹果 ID |
AuthType_Kuaishou | 129 | 快手的登录态, appid 和 key 透传快手的登录态 |
从 wegame 的 tcls sdk 中获取 ST 的方式
BYTE byarrGameSignature[QQLO_GAMESIGNMAXLEN] = {0};
nTmp = sizeof(byarrGameSignature);
bSucess = m_pTclsProxy->GetBYTE(SM_BYTE_GAMESIGNATURE_SIGNATURE, byarrGameSignature, &nTmp);
设备 Device
- 游戏后台上报设备信息,在管理端可以配置设备属性相关的规则。
- 规则按地区灰度时,需要知道用户设备的外网 ip 或经纬度信息。
- 当有人脸规则时,部分操作系统或手机型号暂不支持时,不下发此类决策。
- 这里填写的全是用户使用的客户端的信息,不是服务器的信息。
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
outerIp | string | 是 | 客户端的外网 ipv4 地址,因为涉及海外用户不需要实名 |
osSystem | string | 是 | 操作系统,ios android windows mac linux 等,全小写 |
outerIpv6 | string | 否 | 客户端的外网 ipv6 地址,功能与 outerIp 一致 |
language | string | 否 | 设备语言,支持 zh_CN,en_US |
scene | string | 否 | 场景;视频青少年模式场景:257 |
5. 接口常见问题 Q&A
1.账号实名信息说明
账号实名信息:指用于登录游戏的 QQ 或者微信账号的实名认证信息,每一个 QQ/微信账号对应的实名信息唯一。实名认证信息可能是:
- 用户 QQ 支付/微信支付绑定的实名信息
- 用户登录游戏引导进行实名认证的信息
QQ 账号实名注册信息
2.输入的 authInfo 作用
输入的 authInfo 用于查询对应 QQ/微信账号的实名认证信息
- 如果输入参数不对(通常如 appid 和 openid 不匹配,accessToken 过期等)或者微信 appid 没有查询对应微信账号实名信息的权限,均会导致中控查询账号实名认证信息失败
如果中控不能查询到实名认证信息便不能进行实名信息比对
3.什么情况下比对成功
输入的 name 和 certId 必须是合法的身份证姓名和身份证号码
输入的 name 和 certId 和账号实名信息使用的身份证姓名和身份证号码完全一致
4.已实名认证,不匹配情况:
检查输入的姓名和身份证号,是否和实名认证用的证件信息完全一致,务必确认清楚
- 部分非常早期的用户,实名认证时候,是没有校验身份证号的,所以存在误填的可能,确认早期是否实名注册时随便填了身份证号
特别说明:
- 对 QQ 用户,如果在较早时期对自己账号进行过实名注册操作,如果自己随意输入的身份证号,请联系客服处理
- 部分 QQ 号返回的实名信息可能是 QQ 绑定的微信账号认证的实名信息。 用户的实名状态以https://jiazhang.qq.com/zk/home.html上查询到的状态为准