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

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

/**
 * 进件 联系人信息
 *
 * @author yjjie
 * @date 2025/12/26 13:38
 */
@Data
@Accessors(chain = true)
public class WechatEntryContactReqDto {

    /**
     * 【必填】
     * 超级管理员类型
     * 主体为“个体工商户/企业/政府机关/事业单位/社会组织”，可选择：LEGAL：经营者/法定代表人，SUPER：经办人 。（经办人：经商户授权办理微信支付业务的人员）。
     * 可选取值
     * LEGAL:  经营者/法定代表人
     * SUPER:  经办人
     */
    @JSONField(name = "contact_type")
    private String contactType;

    /**
     * 【必填】
     * 超级管理员姓名
     * 1、长度为2-100个字符；
     * 2、前后不能有空格、制表符、换行符；
     * 3、不能仅含数字、特殊字符；
     * 4、仅能填写数字、英文字母、汉字及特殊字符。
     * 该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     */
    @JSONField(name = "contact_name")
    private String contactName;

    /**
     * 【选填】
     * 超级管理员证件类型  当超级管理员类型是经办人时，请上传超级管理员证件类型。
     * 可选取值
     * IDENTIFICATION_TYPE_IDCARD:  中国大陆居民-身份证
     * IDENTIFICATION_TYPE_OVERSEA_PASSPORT:  其他国家或地区居民-护照
     * IDENTIFICATION_TYPE_HONGKONG_PASSPORT:  中国香港居民-来往内地通行证
     * IDENTIFICATION_TYPE_MACAO_PASSPORT:  中国澳门居民-来往内地通行证
     * IDENTIFICATION_TYPE_TAIWAN_PASSPORT:  中国台湾居民-来往大陆通行证
     * IDENTIFICATION_TYPE_FOREIGN_RESIDENT:  外国人居留证
     * IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT:  港澳居民居住证
     * IDENTIFICATION_TYPE_TAIWAN_RESIDENT:  台湾居民居住证
     */
    @JSONField(name = "contact_id_type")
    private String contactIdType;

    /**
     * 【选填】
     * 超级管理员身份证件号码
     * 1、当超级管理员类型是经办人时，请上传超级管理员证件号码；
     * 2、可传身份证、来往内地通行证、来往大陆通行证、护照等证件号码，号码规范如下：
     * 身份证（限中国大陆居民）：17位数字+1位数字|X；
     * 护照（限境外人士）：4-15位 数字|字母|连字符；
     * 中国香港居民--来往内地通行证：H/h开头+8或10位数字/字母；
     * 中国澳门居民--来往内地通行证：M/m开头+8或10位数字/字母；
     * 中国台湾居民--来往大陆通行证：8位数字或10位数字；
     * 外国人居留证：15位 数字|字母；
     * 台湾居民居住证/港澳居民居住证：17位数字+1位数字|X；
     * 3、超级管理员签约时，校验微信号绑定的银行卡实名信息，是否与该证件号码一致；
     * 4、该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     */
    @JSONField(name = "contact_id_number")
    private String contactIdNumber;

    /**
     * 【选填】
     * 超级管理员证件正面照片
     * 1、当超级管理员类型是经办人时，请上传超级管理员证件的正面照片；
     * 2、若证件类型为身份证，请上传人像面照片；
     * 3、正面拍摄、清晰、四角完整、无反光或遮挡；不得翻拍、截图、镜像、PS；
     * 4、请上传彩色照片或彩色扫描件或复印件（需加盖公章鲜章），可添加“微信支付”相关水印（如微信支付认证），见【指引文档】；
     * 5、可上传1张图片，请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "contact_id_doc_copy")
    private String contactIdDocCopy;

    /**
     * 【选填】
     * 超级管理员证件反面照片
     * 1、当超级管理员类型是经办人时，请上传超级管理员证件的反面照片；
     * 2、若证件类型为护照，无需上传反面照片；
     * 3、正面拍摄、清晰、四角完整、无反光或遮挡；不得翻拍、截图、镜像、PS；
     * 4、请上传彩色照片或彩色扫描件，复印件需加盖公章鲜章，可添加“微信支付”相关水印（如微信支付认证），见【指引文档】；
     * 5、可上传1张图片，请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "contact_id_doc_copy_back")
    private String contactIdDocCopyBack;

    /**
     * 【选填】
     * 超级管理员证件有效期开始时间
     * 1、当超级管理员类型是经办人时，请上传证件有效期开始时间；
     * 2、请按照示例值填写，日期格式应满足合法的YYYY-MM-DD格式；
     * 3、开始时间不能小于1900-01-01，开始时间不能大于等于当前日期。
     */
    @JSONField(name = "contact_period_begin")
    private String contactPeriodBegin;

    /**
     * 【选填】
     * 超级管理员证件有效期截止时间
     * 1、当超级管理员类型是经办人时，请上传证件有效期结束时间；
     * 2、请按照示例值填写，日期格式应满足合法的YYYY-MM-DD格式，若证件有效期为长期，请填写：长期；
     * 3、结束时间大于开始时间。
     */
    @JSONField(name = "contact_period_end")
    private String contactPeriodEnd;

    /**
     * 【必填】
     * 联系手机
     * 1、前后不能有空格、制表符、换行符；
     * 2、需满足以下任一条件：
     * 11位数字的手机号码；
     * 5-20位数字、连字符“-”、加号“+”；
     * 3、用于接收微信支付的重要管理信息及日常操作验证码；
     * 4、该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     */
    @JSONField(name = "mobile_phone")
    private String mobilePhone;

    /**
     * 【必填】
     * 联系邮箱
     * 1、用于接收微信支付的开户邮件及日常业务通知；
     * 2、需要带@，遵循邮箱格式校验 ，该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     */
    @JSONField(name = "contact_email")
    private String contactEmail;
}
