# 1、Return_url 和 Notify_url 回调
说明:客户在GetToken方法中传入的 return_url 和 notify_url 会在完成 FaceID Lite 人脸核身后被系统回调。其中
return_url:可通过设置action_http_method选择Post方法或者Get方法回调,直接通过页面跳转实现;
注意:当return_url=wx_back时,认证结束后,认证结果用wx.miniProgram.postMessage传递给小程序,并调用wx.miniProgram.navigateBack()返回小程序上一页
notify_url:会通过Post方法回调,由FaceID后台发起调用。出于安全性考虑,FaceID验证服务对服务器端回调端口有白名单要求,支持的端口有:443,5000,16003,8883,8028(如果回调地址不是HTTPS的,则推荐进行签名校验)。
1.1、采用Post回调的内容为一个form格式数据,具体的内容如下表所示:
| 字段 |
类型 |
说明 |
示例 |
| data |
String |
人脸核身返回值(json格式),具体见返回值说明 |
|
| sign |
String |
数据段的签名,签名方法为 sign = sha1(API_SECRET + json_data),其中sha1返回的字符均为小写 |
ac041f49940c5afb2640a251633a8029ae69c1d5 |
# 返回值说明
|
返回值
|
类型
|
说明
|
示例
|
return_url
|
notify_url
|
|
status
|
String
|
表示目前FaceID Lite的使用状态:
-
NOT_STARTED:get_token 之后,并没有调用过do方法,还没有开始验证
-
PROCESSING:正在进行FaceID Lite验证
-
WEBRTC_UNSUPPORTED:表示浏览器不支持引起失败
-
OK:完成了FaceID Lite验证(OK并不表示通过了验证,是流程正常结束)
-
FAILED:验证流程未完成或出现异常
-
注:在采用"flash"模式时,只要在照镜子环节30s内未通过验证,token状态即进入FAILED状态
-
CANCELLED:用户主动取消了验证流程
-
TIMEOUT:流程超时
(当处于“NOT_STARTED”或者“PROCESSING”状态时,liveness_result /verify_result字段均不会返回
|
"OK"
|
√
|
√
|
|
fail_reason
|
String
|
当“get_fail_reason”=1时,可获取“WEBRTC_UNSUPPORTED”失败原因
-
NETWORK_ERROR:因为网络问题无法连接
-
PERMISSIONS_ERROR :用户拒绝摄像头权限或浏览器(APP)不支持唤起摄像头权限
-
SUPPORT_ERROR:浏览器不支持webRTC API 等
|
“NETWORK_ERROR”
|
√
|
√
|
|
biz_info
|
Json
|
包含:biz_id, biz_no, biz_extra_data
-
biz_id:业务流串号,可以用于反查比对结果
-
biz_no:客户业务流水号,会在notify和return时原封不动的返回给客户
-
biz_extra_data:在调用 notify_url 和 return_url 时会返回的额外数据
用户可以用此接口来传递一些额外信息。
|
{
"biz_extra_data": "...",
"biz_id": "1462259748, 52b13fb5-8dfb-4537 -a62b-a641d5e929f1",
"biz_no":
"cc47190f-5502-44a2
-ab74-ea4f0f649f61"
}
|
√
|
√
|
|
liveness_result
|
Json
|
活体检测结果;如果用户中途中断了活体流程,则此字段不返回
-
result:活体检测的结果,返回值分为两类:
注:
-
当fmp_mode为"0",该字段会考虑云端假脸攻击情况(即:face_genuineness字段)。当云端假脸攻击被检测出来时,会返回FAIL
-
当fmp_mode为"1",该字段不会考虑云端假脸攻击情况。当云端假脸攻击被检测出来时,会返回PASS。不过,您依然可以根据自身的业务,并结合”face_genuineness“字段所返回的分数进行相关的业务判断
-
procedure_type:返回本次活体所使用的活体验证方式:
-
video:通过自拍有声视频方式进行活体验证
-
still:通过自拍一段人脸视频进行活体认证
-
flash:通过炫彩活体方式进行活体验证
-
meglive_flash:通过灵动活体方式进行活体验证
-
distance:通过距离活体方式进行活体验证
-
still_type:返回本次静默活体所使用的活体验证方式,注意:仅当实际返回的procedure_type为still时,会返回此字段
-
STILL_RECORD:静默活体采用的是录制视频的方式
-
STILL_WEBRTC:静默活体采用的是webRTC实时方式
-
details:活体检测结果的细节:
-
当procedure_type为"video或still的上传模式"时:
-
UPLOAD_TIMES:<活体视频上传次数>
-
FACE_NOT_FOUND:<视频中没有检测到人脸的次数>
-
LOW_FACE_QUALITY:<视频中人脸质量太差的次数>
-
INVALID_VIDEO_DURATION:<视频时长不对的次数>
-
SR_ERROR:<语音识别结果有误的次数> (still静默活体的上传可忽略)
-
NOT_SYNCHRONIZED:<视频唇语识别错误的次数>(still静默活体的上传可忽略)
-
NO_AUDIO:<视频无声音的次数>(still静默活体的上传可忽略)
-
VIDEO_FORMAT_UNSUPPORTED:<视频格式错误的次数>
-
VIDEO_FACE_INCONSISTENT:<视频中出现了不一致的人脸>
-
当procedure_type为"flash或meglive_flash或distance或still的RTC模式"时:
-
FACE_NOT_FOUND:<未检测到人脸次数>
-
SIDE_FACE:<未正对摄像头次数(侧脸)>
-
UPDOWN_FACE:<未正对摄像头次数(仰脸或低头)>
-
EYE_OCCLUSION:<遮挡眼部次数>
-
MOUTH_OCCLUSION:<遮挡嘴部次数>
-
AWAY_FROM_CAMERA:<过于远离摄像头次数>
-
CLOSE_TO_CAMERA:<过于靠近摄像头次数>
-
FACE_OUT_OF_CAMERA:<未正视摄像头次数>
-
HIGH_BRIGHTNESS:<光线过亮的次数>
-
LOW_BRIGHTNESS:<光线过暗的次数>
-
LOW_FACE_QUALITY:<视频中人脸质量太差的次数>
-
face_genuineness:表示对假脸攻击的判定,它包含四组置信度和阈值,均为实数取值[0,1]区间。如果一个置信度大于其对应的阈值,则可以认为存在对应类型的假脸攻击
-
synthetic_face_confidence:<合成脸的置信度>
-
synthetic_face_threshold:<合成脸的阈值>
-
mask_confidence:<面具的置信度>
-
mask_threshold:<面具的阈值>
-
face_replaced:<是否存在换脸> Int类型,只取值0或1。0表示未检测出换脸攻击,1表示检测出了换脸攻击。注意:仅当实际使用静默非RTC或者视频活体方式才返回该字段。
-
screen_replay_confidence:<屏幕翻拍的置信度>
-
screen_replay_threshold:<屏幕翻拍的阈值>
|
{
"result": "PASS/FAIL",
"procedure_type": "video",
"details": {
"UPLOAD_TIMES": 5,
"FACE_NOT _FOUND": 0,
"LOW_FACE _QUALITY": 0,
"INVALID_VIDEO _DURATION": 1,
"SR_ERROR": 2,
"NOT_SYNCHRONIZED": 1,
"VIDEO_FORMAT _UNSUPPORTED": 0,
"NO_AUDIO": 0
},
"face_genuineness": {
"synthetic_face _confidence": 0.88,
"synthetic_face _threshold": 0.5,
"mask_confidence": 0.32,
"mask_threshold": 0.5,
"screen_replay _confidence": 0,
"screen_replay _threshold": 0.5
}
}
|
√
|
√
|
|
verify_result
|
Json
|
人脸比对结果;如果用户中途中断了活体流程或comparison_type为-1(仅活体不比对)等情况,则此字段不返回
-
error_message:人脸比对过程中出现错误
-
IMAGE_ERROR_UNSUPPORTED_FORMAT: 图片无法解析或者没有可比对图片。此错误会产生计费
-
NO_FACE_FOUND:对应的图像没有检测到人脸。此错误会产生计费
-
INTERNAL_ERROR:服务器内部错误,当此类错误发生时请再次请求,如果持续出现此类错误,请及时联系客服或商务
-
result_ref[x]:活体采集人像与上传的image_ref[x]的比对结果,其中1 <= x <= 2
-
"confidence":综合分数,Float类型,取值[0,100],分数越高,说明是本人的概率越大,越安全
-
“thresholds”:用于判断比对结果是否达到你业务要求的安全等级,分数大于等于对应阈值即可视为通过,Object类型, 包含四个字段,均为Float类型、取值[0,100]:
-
“1e-3”:宽松等级,误识率约 千分之一
-
“1e-4”:标准等级,误识率约 万分之一
-
“1e-5”:严格等级,误识率约 十万分之一
-
“1e-6”:极严格等级,误识率约 百万分之一
-
verify_time:验证发生的时间戳(单位:秒),仅当return_verify_time=1时返回该字段
|
{
"verify_time": 1462259763,
"result_ref1": {
"confidence": 68.918,
"thresholds": {
"1e-3": 64,
"1e-4": 69,
"1e-5": 74,
"1e-6": 79.9
}
}
}
|
√
|
√
|
|
multifaces_tag
|
String
|
仅当return_multifaces_tag参数为1时,返回此字段
|
0
|
√
|
√
|
|
visual_attributes
|
Json
|
性别年龄预估结果:
-
“age”:预估核验人活体图年龄
-
“gender”:预估核验人活体图性别,0:代表男;1:代表女
-
“age_image_ref1”:预估比对参照人脸图年龄(仅comparison_type=0时返回)
-
“gender_image_ref1”:预估比对参照人脸图性别(仅comparison_type=0时返回),0:代表男;1:代表女
|
"visual_attributes": {
"gender": 0,
"age": 31,
"age_image_ref1": 22,
"gender_image_ref1": 0
}
|
√
|
√
|
|
verify_risk_info
|
Json
|
比对风险提示结果:
"verify_info_tags":Json类型;表示活体图与比对图的比对风险
-
"is_gender_risk":String类型,0:表示活体图与比对图性别一致;1:表示活体图与比对图性别不一致(comparison_type=1,则活体图与身份证性别比对;comparison_type=0,则活体图与ref1图性别比对,comparison_type=-1,则返回为空);
-
"is_age_risk":String类型,0:表示活体图与比对图年龄差异不大(10岁以内);1:表示活体图与比对图年龄差异较大(一般指的是年龄差距在10岁及以上,具体根据阈值设定。comparison_type=1,则活体图与身份证年龄比对;comparison_type=0,则活体图与ref1图年龄比对,comparison_type=-1,则返回为空);
|
"verify_risk_info": {
"verify_info_tags": {
"is_gender_risk": 0,
"is_age_risk": 0
}
}
|
√
|
√
|
|
device_risk_info
|
Json
|
设备风险检测结果:
device_info_level:string类型
none:表示未检测到风险
middle:表示中风险 需要人工复核
high:表示高风险 直接拦截
device_info_tags:
-
is_cookies_disabled COOKIES 被禁用
-
is_code_tampered 代码被篡改
-
is_virtual_browser 虚拟浏览器
-
is_debug_mode 调试模式
-
is_higher_device_risk_threshold 高于设备风险阈值
|
"device_risk_info": {
"device_info_level": "none",
"device_info_tags": {
"is_cookies_disabled": "0",
"is_higher_device_risk_threshold": "0",
"is_debug_mode": "0",
"is_virtual_browser": "0",
"is_code_tampered": "0"
}
}
|
√
|
√
|
1.2、采用Get回调时会在return_url地址拼接biz_id参数,请提取地址中拼接的biz_id用于作为get_result的入参。
示例:
●https://yourdomainname/xxx?biz_id=xxx
●https://yourdomainname/xxx?xxx=xxx&biz_id=xxx
●https://yourdomainname/xxx?biz_id=xxx&xxx=xxx#xxx
| 参数 |
类型 |
说明 |
示例 |
| biz_id |
String |
通过get_token返回的活体业务编号 |
146225974852b13fb5-8dfb-4537-a62b-a641d5e929f1 |