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

import com.alibaba.fastjson2.annotation.JSONField;
import com.czg.third.wechat.dto.req.entry.id.WechatEntryIdCardReqDto;
import com.czg.third.wechat.dto.req.entry.id.WechatEntryIdDocInfoReqDto;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 经营者/法定代表人身份证件
 * @author yjjie
 * @date 2025/12/26 15:24
 */
@Data
@Accessors(chain = true)
public class WechatEntryIdentityReqDto {

    /**
     * 【选填】
     * 证件持有人类型
     * 1、主体类型为政府机关/事业单位时选传：
     * （1）若上传的是法定代表人证件，则不需要上传该字段。
     * （2）若因政策保密等原因，无法提供法定代表人证件时，可上传经办人。 （经办人：经商户授权办理微信支付业务的人员，授权范围包括但不限于签约，入驻过程需完成账户验证）。
     * 2、主体类型为小微/个人卖家/企业/个体户/社会组织时，默认为经营者/法定代表人，不需要上传该字段。
     * LEGAL:  经营者/法定代表人
     * SUPER:  经办人
     */
    @JSONField(name = "id_holder_type")
    private String idHolderType;

    /**
     * 【选填】
     * 证件类型
     * 1、当证件持有人类型为法定代表人时，填写。其他情况，无需上传；
     * 2、个体户/企业/事业单位/社会组织：可选择任一证件类型，政府机关仅支持中国大陆居民-身份证类型。
     * 可选取值
     * 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 = "id_doc_type")
    private String idDocType;

    /**
     * 【选填】
     * 法定代表人说明函
     * 1、当证件持有人类型为经办人时，必须上传。其他情况，无需上传；
     * 2、若因特殊情况，无法提供法定代表人证件时，请参照示例图打印法定代表人说明函，全部信息需打印，不支持手写商户信息，并加盖公章； <a href="https://kf.qq.com/faq/220127aUzAju220127UfiuQr.html">...</a>
     * 3、可上传1张图片，请填写通过图片上传API预先上传图片生成好的MediaID。
     */
    @JSONField(name = "authorize_letter_copy")
    private String authorizeLetterCopy;

    /**
     * 【选填】
     * 身份证信息  当证件持有人类型为经营者/法定代表人且证件类型为“身份证”时填写。
     */
    @JSONField(name = "id_card_info")
    private WechatEntryIdCardReqDto idCardInfo;

    /**
     * 【选填】
     * 其他类型证件信息  当证件持有人类型为经营者/法定代表人且证件类型不为“身份证”时填写。
     */
    @JSONField(name = "id_doc_info")
    private WechatEntryIdDocInfoReqDto idDocInfo;
}
