package com.qnfhq.modules.authentication.entity;

import lombok.Data;

/**
 * 用于eKYC认证流程的Java实体类，封装所有请求参数。
 */
@Data
public class AikycRequest {

    /**
     * 产品方案标识，必填。
     * 取值说明：
     * eKYC：使用eKYC产品方案，用户需完成证件识别和活体认证整个流程。
     * 示例：eKYC
     */
    private String productCode;

    /**
     * 自定义认证场景ID，非必填。
     * 支持长度为10位的字母、数字或下划线的组合。
     * 用于后续控制台查询相关记录。
     * 示例：1234567890
     */
    private String sceneCode;

    /**
     * 业务唯一标识，必填。
     * 支持长度为32位的字母和数字的组合，需确保唯一性。
     * 阿里云服务器不会校验唯一性，建议自行保证唯一。
     * 示例：e0c34a77f5ac40a5aa5e6ed20c35****
     */
    private String merchantBizId;
    /**
     * MetaInfo环境参数，必填。
     * 需通过客户端SDK获取，原样透传，无需修改。
     * 示例为JSON格式，包含设备信息、SDK版本等。
     * 示例：
     * {
     * "zimVer": "3.0.0",
     * "appVersion": "1",
     * "bioMetaInfo": "4.1.0:1150****,0",
     * "appName": "com.aliyun.antcloudauth",
     * "deviceType": "h5",
     * "osVersion": "iOS 10.3.2",
     * "apdidToken": "",
     * "deviceModel": "iPhone9,1"
     * }
     */
    private String metaInfo;

    /**
     * 用户唯一标识，必填。
     * 可为用户ID、手机号码、邮箱等，建议脱敏处理（如哈希）。
     * 示例：123456789
     */
    private String merchantUserId;

    /**
     * 是否开启证件防伪检测，非必填。
     * Y：开启；N：关闭（默认）。
     * 示例：Y
     */
    private String idSpoof;

    /**
     * 证件类型，必填。* 8位数字组合作为唯一标识，示例如下：
     * 01000000：全球护照
     * 00000001：中国内地第二代居民身份证* 示例：01000000
     */
    private String docType;

    /**
     * 是否开启官方数据库身份核验，非必填。* T：开启；F：关闭（默认）。仅适用于中国内地第二代居民身份证。* 示例：F
     */
    private String authorize;

    /**
     * 认证流程安全水位模式，非必填。* 可选值：
     * 01：普通模式（低风险场景）
     * 02：安全模式（默认，通过设备信息增强安全性）* 示例：02
     */
    private String securityLevel;

    /**
     * OCR质量检测阈值模式，非必填。* 0：标准模式；1：严格模式；2：宽松模式；3：关闭质量检测（默认）。* 示例：0
     */
    private String idThreshold;

    /**
     * 活体检测类型，非必填。* 可选值：
     * LIVENESS：眨眼动作活体检测（默认）
     * PHOTINUS_LIVENESS：眨眼+炫彩双重检测
     * PHOTINUS_FAR_NEAR_LIVENESS：眨眼+远近+炫彩检测（仅APP SDK支持）* 示例：PHOTINUS_LIVENESS
     */
    private String model;

    /**
     * 是否需要存证视频，非必填。* Y：需要；N：不需要（默认）。PC端不支持。* 示例：N
     */
    private String docVideo;

    /**
     * 认证结果回调地址，非必填。* 必须以HTTPS开头，回调时携带transactionId、passed等参数。
     * 示例：https://www.aliyun.com?callbackToken=100000****&transactionId=shaxxxx&passed=Y&subCode=200
     */
    private String callbackUrl;


    /**
     *
     * H5 认证成功后跳转地址，非必填。* 必须以HTTPS开头。
     *
     */
    private String returnUrl;

    /**
     * 安全Token，非必填。* 用于防重复、防篡改校验。若设置，回调时会携带该字段。
     * 示例：NMjvQanQgplBSaEI0sL86WnQplB
     */
    private String callbackToken;

    /**
     * 是否开启人脸严格质量检测，非必填。* Y：开启（默认）；N：关闭。需客户端SDK版本1.2.5及以上支持。* 示例：N
     */
    private String appQualityCheck;

    /**
     * 证件扫描模式，非必填。* 可选值：
     * shoot（默认）：拍照
     * scan：扫描
     * auto：自动切换* 示例：shoot
     */
    private String docScanMode;

    /**
     * 是否展示引导页面，非必填。* 1：展示（默认）；0：不展示。* 示例：1
     */
    private String showGuidePage;

    /**
     * 证件反面采集配置，非必填。* JSON数组格式，仅支持中国内地身份证类型。
     * 示例：["OCR_ID_BACK"]
     */
    private String docPageConfig;

}