发起认证请求

说明
  • 接口名:InitFaceVerify。
  • 请求方法:HTTPS POST 和 GET。
  • 接口说明:每次开始认证前通过本接口获取CertifyId,用来串联认证请求中的各个接口。
  1. 入参字段
    名称 类型 是否必须 描述 示例值
    SceneId Long 认证场景ID。 1000000006
    OuterOrderNo String 商户请求的唯一标识。

    值为32位长度的字母数字组合前面几位字符是商户自定义的简称,中间可以使用一段时间,后段可以使用一个随机或递增序列。

    e0c34a77f5ac40a5aa5e6ed20c353888
    ProductCode String 固定值:LR_FR。 LR_FR
    UserId String 客户业务自定义的用户ID,请保持唯一。 123456789
    CertType String 证件类型。

    当前支持身份证,必须传入IDENTITY_CARD。

    IDENTITY_CARD
    CertName String 真实姓名。 张三
    CertNo String 证件号码。 330103xxxxxxxxxxxx
    ReturnUrl String 商户业务页面回跳的目标地址。 www.aliyun.com
    MetaInfo String Metainfo 环境参数,需要通过客户端 SDK 获取。 {"zimVer":"3.0.0","appVersion": "1","bioMetaInfo": "4.1.0:11501568,0","appName": "com.aliyun.antcloudauth","deviceType": "ios","osVersion": "iOS 10.3.2","apdidToken": "","deviceModel": "iPhone9,1"}
    Mobile String 用户手机号码。 130xxxxxxxx
    Ip String 用户IP。 114.xxx.xxx.xxx
  2. 返回字段
    名称 类型 是否必填 描述 示例值
    RequestId String 请求ID。 130A2C10-B9EE-4D84-88E3-5384FF039795
    Message String 错误信息。 success
    Code String 返回码:200为成功,其他为失败。 200
    ResultObject.CertifyId String 实人认证唯一标识。 91707dc296d469ad38e4c5efa6a0f24b
  3. 返回 Code、Message 说明
    Code Message 描述
    200 success 成功。
    400 参数不能为空 参数不能为空。
    401 参数非法 参数非法。
    402 应用配置不存在 应用配置不存在。
    404 认证场景配置不存在 认证场景配置不存在,请先在控制台上创建认证场景。
    405 您的年龄未满14周岁,不允许使用此产品 未满14周岁的用户无法使用本产品。
    410 未开通服务 未开通OSS产品或未完成OSS读写授权。
    411 RAM无权限 需要给子账号授予 AliyunAntCloudAuthFullAccess 的操作权限。
    412 欠费中 金融级实人认证或OSS存在欠费。
    414 设备类型不支持 当前移动设备不支持刷脸认证。
    415 SDK版本不支持 当前认证SDK版本不支持刷脸认证。
    416 系统版本不支持 当前操作系统版本不支持刷脸认证。
    417 无法使用刷脸服务 比对源不可用。
    418 刷脸失败次数过多 当天刷脸认证次数过多,请明天再试。
    419 传入图片不可用 图片无法下载、图片内容为空、图片分辨率不符合要求或提取不到人脸特征。
    420 数据重复 图片传入方式超过1种。
    • FaceContrastPicture
    • FaceContrastPictureUrl
    • Oss
    • CertifyId
    421 传入图片过大 图片超过了1 MB。
    422 下载图片超时 图片下载超过了3秒。
    500 系统错误 系统内部错误。
  4. Java SDK使用示例
    • Maven依赖
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.4.3</version>
      </dependency>
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-cloudauth</artifactId>
          <version>2.0.9</version>
      </dependency>
    • 使用示例
      DefaultProfile profile = DefaultProfile.getProfile(
                  "cn-hangzhou",    // 固定cn-hangzhou
                  "AccessKeyID",      // 您的Access Key ID
                  "AccessKeySecret");  // 您的Access Key Secret
      IAcsClient client = new DefaultAcsClient(profile);
      
      InitFaceVerifyRequest request = new InitFaceVerifyRequest();
      request.setMetaInfo("Metainfo环境参数");
      request.setCertName("姓名张三");
      request.setCertNo("18位身份证号");
      // 固定值
      request.setCertType("IDENTITY_CARD");
      request.setSceneId(10xxxxxxL);
      request.setOuterOrderNo("商户请求的唯一标识");
      // 固定值
      request.setProductCode("LR_FR");
      request.setReturnUrl(null);
      
      InitFaceVerifyResponse response = client.getAcsResponse(request);
      System.out.println(response.getCode());
      System.out.println(response.getMessage());
      System.out.println(response.getRequestId());
      System.out.println(response.getResultObject().getCertifyId());

查询认证结果

说明
  • 接口名:DescribeFaceVerify。
  • 请求方法:HTTPS POST和GET。
  • 接口说明:当接入方移动端收到回调之后,其服务端可以调用此接口,来获取相应的认证状态和认证资料。
  1. 入参字段
    名称 类型 是否必填 描述 示例值
    SceneId Long 认证场景ID。 1000000006
    CertifyId String 实人认证唯一标识。 91707dc296d469ad38e4c5efa6a0f24b
  2. 返回字段
    名称 类型 是否必填 描述 示例值
    RequestId String 请求ID。 130A2C10-B9EE-4D84-88E3-5384FF039795
    Message String 错误信息。 success
    Code String 返回码:200为成功,其他为失败。 200
    ResultObject.Passed String 是否通过,通过为 T,不通过为 F。 T
    ResultObject.SubCode String 认证结果描述,详情见下方SubCode说明。 200
    ResultObject.IdentityInfo String 认证的主体信息,一般的认证场景返回为空。 null
    ResultObject.DeviceToken String 设备token。 McozS1ZWRcRZStlERcZZo_QOytx5jcgZoZJEoRLOxxxxxxx
    ResultObject.MaterialInfo String 认证主体附件信息,主要为图片类材料。JSON格式,见下方示例。 {"faceAttack": "F","facialPictureFront": {"qualityScore": 88.3615493774414,"pictureUrl": "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg","ossBucketName": "cn-shanghai-aliyun-cloudauth-1260051251634779","ossObjectName": "verify/1260051251634779/6ba7bcfccf33f56cdb44ed086f36ce3e0.jpeg"}}
    说明

    判断认证结果请以ResultObject.Passed或ResultObject.SubCode字段为准。

    ResultObject.MaterialInfo 的 JSON 格式示例

    {
         // 是否为攻击:攻击为T,非攻击为F
        "faceAttack": "F",    
        // 认证的照片信息
        "facialPictureFront": {
            // 活体人脸质量分数
            "qualityScore": 88.3615493774414,
            // 照片https地址,有效期15分钟,从查询时开始计时    
            "pictureUrl": "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg",
            // 照片存放客户上海区域的OSS里,此为照片的bucket名
            "ossBucketName": "cn-shanghai-aliyun-cloudauth-1260051251634779",
            // 照片存放客户上海区域的OSS里,此为照片的文件名
            "ossObjectName": "verify/1260051251634779/6ba7bcfccf33f56cdb44ed086f36ce3e0.jpeg"   
       }
    }

    ResultObject.SubCode说明

    错误码 认证描述方案 是否计费 可能原因和运营建议
    200 认证通过
    205 活体检测存在风险 可能存在攻击风险,建议人工审核分层处理。
  3. 返回Code、Message说明
    Code Message 描述
    200 success 成功。
    400 参数不能为空 参数不能为空。
    401 参数非法 参数非法。
    403 认证未完成 认证未完成。
    404 认证场景配置不存在 认证场景配置不存在,请先在控制台上创建认证场景。
    405 身份认证记录不存在 该certifyId还没有对应的身份认证提交记录。
    406 无效的certifyId 无效的certifyId。
    410 未开通服务 未开通OSS产品或未完成OSS读写授权。
    411 RAM无权限 需要给子账号授予AliyunAntCloudAuthFullAccess的操作权限。
    500 系统错误 系统内部错误。
  4. Java SDK使用示例
    • Maven依赖
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.4.3</version>
      </dependency>
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-cloudauth</artifactId>
          <version>2.0.9</version>
      </dependency>
    • 使用示例
      DefaultProfile profile = DefaultProfile.getProfile(
                  "cn-hangzhou",    // 固定cn-hangzhou
                  "AccessKeyID",      // 您的Access Key ID
                  "AccessKeySecret");  // 您的Access Key Secret
      IAcsClient client = new DefaultAcsClient(profile);
      DescribeFaceVerifyRequest request = new DescribeFaceVerifyRequest();
      request.setCertifyId("服务端初始化返回的certifyId");
      request.setSceneId(100000xxxxL);
      
      DescribeFaceVerifyResponse response = client.getAcsResponse(request);
      System.out.println(response.getCode());
      System.out.println(response.getMessage());
      System.out.println(response.getRequestId());
      System.out.println(response.getResultObject().getPassed());
      System.out.println(response.getResultObject().getSubCode());
      System.out.println(response.getResultObject().getMaterialInfo());
      System.out.println(response.getResultObject().getIdentityInfo());
      System.out.println(response.getResultObject().getDeviceToken());