package com.czg.third.wechat.dto.req.entry.id;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 身份证信息
 * @author yjjie
 * @date 2025/12/26 15:29
 */
@Data
@Accessors(chain = true)
public class WechatEntryIdCardReqDto {

    /**
     * 【必填】
     * 身份证人像面照片
     * 1、请上传个体户经营者/法定代表人的身份证人像面照片；
     * 2、正面拍摄、清晰、四角完整、无反光或遮挡；不得翻拍、截图、镜像、PS；
     * 3、请上传彩色照片or彩色扫描件，复印件需加盖公章鲜章，可添加“微信支付”相关水印（如微信支付认证），见【指引文档】；
     * 4、可上传1张图片，请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "id_card_copy")
    private String idCardCopy;

    /**
     * 【必填】
     * 身份证国徽面照片
     * 、请上传个体户经营者/法定代表人的身份证国徽面照片；
     * 2、正面拍摄、清晰、四角完整、无反光或遮挡；不得翻拍、截图、镜像、PS；
     * 3、请上传彩色照片or彩色扫描件，复印件需加盖公章鲜章，可添加“微信支付”相关水印（如微信支付认证），见【指引文档】；
     * 4、可上传1张图片，请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "id_card_national")
    private String idCardNational;

    /**
     * 【必填】
     * 身份证姓名
     * 1、请填写个体户经营者/法定代表人对应身份证的姓名；
     * 2、长度为2-100个字符；
     * 3、前后不能有空格、制表符、换行符；
     * 4、不能仅含数字、特殊字符；
     * 5、仅能填写数字、英文字母、汉字及特殊字符；
     * 6、该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     * <a href="https://pay.weixin.qq.com/doc/v3/partner/4013059044">加密</a>
     */
    @JSONField(name = "id_card_name")
    private String idCardName;

    /**
     * 必填
     * 身份证号码
     * 1、请填写个体户经营者/法定代表人对应身份证的号码；
     * 2、17位数字+1位数字|X ，该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     * <a href="https://pay.weixin.qq.com/doc/v3/partner/4013059044">加密</a>
     */
    @JSONField(name = "id_card_number")
    private String idCardNumber;

    /**
     * 【选填】
     * 身份证居住地址
     * 1、主体类型为企业时，需要填写。其他主体类型，无需上传；
     * 2、请按照身份证住址填写，如广东省深圳市南山区xx路xx号xx室；
     * 3、长度为4-128个字符；
     * 4、前后不能有空格、制表符、换行符；
     * 5、不能仅含数字、特殊字符；
     * 6、仅能填写数字、英文字母、汉字及特殊字符；
     * 7、仅支持utf-8格式；
     * 8、 该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     * <a href="https://pay.weixin.qq.com/doc/v3/partner/4013059044">加密</a>
     */
    @JSONField(name = "id_card_address")
    private String idCardAddress;

    /**
     * 必填
     * 身份证有效期开始时间
     * 1、请填写身份证有效期开始时间，格式为yyyy-MM-dd；
     * 2、开始时间不能小于1900-01-01；
     * 3、开始时间不能大于等于当前日期。
     */
    @JSONField(name = "card_period_begin")
    private String cardPeriodBegin;

    /**
     * 必填
     * 身份证有效期截止时间
     * 1、日期格式应满足合法的YYYY-MM-DD格式或长期；
     * 2、结束时间需大于开始时间。
     */
    @JSONField(name = "card_period_end")
    private String cardPeriodEnd;
}
