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

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

/**
 * 最终受益人信息
 * @author yjjie
 * @date 2025/12/26 15:50
 */
@Data
@Accessors(chain = true)
public class WechatEntryUboInfoReqDto {

    /**
     * 【必填】
     * 证件类型 请填写受益人的证件类型。枚举值：
     * 可选取值
     * 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 = "ubo_id_doc_type")
    private String uboIdDocType;

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

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

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

    /**
     * 必填
     * 证件号码
     * 1、证件号码为证件正反面中一致的号码；
     * 2、证件号码为18位或15位，或港澳居民来往内地通行证为9位；
     * 3、证件号码为英文字母X或x，或港澳居民来往内地通行证为英文字母X或x；
     * 4、证件号码为英文字母x或X，或港澳居民来往内地通行证为英文字母x或X；
     * 5、该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥
     */
    @JSONField(name = "ubo_id_doc_number")
    private String uboIdDocNumber;

    /**
     * 必填
     * 证件居住地址
     * 1、请按照身份证住址填写，如广东省深圳市南山区xx路xx号xx室；
     * 2、长度为4-128个字符；
     * 3、前后不能有空格、制表符、换行符；
     * 4、不能仅含数字、特殊字符；
     * 5、仅能填写数字、英文字母、汉字及特殊字符；
     * 6、仅支持utf-8格式；
     * 7、 该字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引。
     */
    @JSONField(name = "ubo_id_doc_address")
    private String uboIdDocAddress;

    /**
     * 必填
     * 证件有效期开始时间
     * 1、日期格式应满足合法的YYYY-MM-DD格式；
     * 2、开始时间不能小于1900-01-01；
     * 3、开始时间不能大于等于当前日期。
     */
    @JSONField(name = "ubo_period_begin")
    private String uboPeriodBegin;

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