From 0cdad226ea75bc6bf8736014f222138860fdc19d Mon Sep 17 00:00:00 2001 From: gong <1157756119@qq.com> Date: Fri, 26 Dec 2025 16:23:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98-=20dto222?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../req/entry/WechatEntryContactReqDto.java | 124 ++++++++++++++++++ .../req/entry/WechatEntrySubjectReqDto.java | 50 ++++++- .../WechatEntryCertificateReqDto.java | 92 +++++++++++++ .../WechatEntryFinanceInstitutionReqDto.java | 40 ++++++ .../business/WechatEntryIdentityReqDto.java | 70 ++++++++++ .../business/WechatEntryUboInfoReqDto.java | 111 ++++++++++++++++ .../req/entry/id/WechatEntryIdCardReqDto.java | 94 +++++++++++++ .../entry/id/WechatEntryIdDocInfoReqDto.java | 98 ++++++++++++++ 8 files changed, 677 insertions(+), 2 deletions(-) create mode 100644 cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryFinanceInstitutionReqDto.java create mode 100644 cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryIdentityReqDto.java create mode 100644 cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryUboInfoReqDto.java create mode 100644 cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdCardReqDto.java create mode 100644 cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdDocInfoReqDto.java diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntryContactReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntryContactReqDto.java index a7990dbd0..82c91ed49 100644 --- a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntryContactReqDto.java +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntryContactReqDto.java @@ -1,5 +1,6 @@ package com.czg.wechat.dto.req.entry; +import com.alibaba.fastjson2.annotation.JSONField; import lombok.Data; /** @@ -10,4 +11,127 @@ import lombok.Data; */ @Data 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; } diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntrySubjectReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntrySubjectReqDto.java index a445b6a5f..d8cabd000 100644 --- a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntrySubjectReqDto.java +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/WechatEntrySubjectReqDto.java @@ -1,10 +1,11 @@ package com.czg.wechat.dto.req.entry; import com.alibaba.fastjson2.annotation.JSONField; -import com.czg.wechat.dto.req.entry.business.WechatEntryCertificateReqDto; -import com.czg.wechat.dto.req.entry.business.WechatEntryLicenseReqDto; +import com.czg.wechat.dto.req.entry.business.*; import lombok.Data; +import java.util.List; + /** * 进件 主体资料 * @author yjjie @@ -52,4 +53,49 @@ public class WechatEntrySubjectReqDto { */ @JSONField(name = "certificate_info") private WechatEntryCertificateReqDto certificateInfo; + + /** + * 选填 + * 单位证明函照片 + * 1、主体类型为政府机关、事业单位选传: + * (1)若上传,则审核通过后即可签约,无需汇款验证; + * (2)若未上传,则审核通过后,需汇款验证。 + * 2、主体为个体户、企业、其他组织等,不需要上传本字段; + * 3、请参照示例图打印单位证明函,全部信息需打印,不支持手写商户信息,并加盖公章; ... + * 4、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 + */ + @JSONField(name = "certificate_letter_copy") + private String certificateLetterCopy; + + /** + * 选填 + * 金融机构许可证信息 当主体是金融机构时,必填。 + */ + @JSONField(name = "finance_institution_info") + private WechatEntryFinanceInstitutionReqDto financeInstitutionInfo; + + /** + * 必填 + * 经营者/法定代表人身份证件 + * 1、个体户:请上传经营者的身份证件; + * 2、企业/社会组织:请上传法定代表人的身份证件; + * 3、政府机关/事业单位:请上传法定代表人/经办人的身份证件。 + */ + @JSONField(name = "identity_info") + private WechatEntryIdentityReqDto identityInfo; + + /** + * 选填 + * 最终受益人信息列表(UBO) + * 1、主体类型个体户/社会组织/政府机关/事业单位时,无需填写 + * 2、主体类型为企业时,按照下述要求填写 + * 1)若经营者/法定代表人不是最终受益所有人,则需提填写受益所有人信息,最多上传4个。 + * 2)若经营者/法定代表人是最终受益所有人之一,可在此填写其他受益所有人信息,最多上传3个。 + * 根据国家相关法律法规,需要提供公司受益所有人信息,受益所有人需符合至少以下条件之一: + * ▪️直接或者间接拥有超过25%公司股权或者表决权的自然人。 + * ▪️通过人事、财务等其他方式对公司进行控制的自然人。 + * ▪️公司的高级管理人员,包括公司的经理、副经理、财务负责人、上市公司董事会秘书和公司章程规定的其他人员。 + */ + @JSONField(name = "ubo_info_list") + private List uboInfoList; } diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryCertificateReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryCertificateReqDto.java index 910f94b58..ce09795f3 100644 --- a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryCertificateReqDto.java +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryCertificateReqDto.java @@ -1,5 +1,6 @@ package com.czg.wechat.dto.req.entry.business; +import com.alibaba.fastjson2.annotation.JSONField; import lombok.Data; /** @@ -13,5 +14,96 @@ public class WechatEntryCertificateReqDto { /** * 必填 * 登记证书照片 + * 1、照片应正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS; + * 2、上传彩色照片、彩色扫描件,复印件需加盖公章鲜章; + * 3、水印仅限于微信支付业务相关; + * 4、指引与示例可参考【指引文档】; + * 5、请填写通过图片上传API预先上传图片生成好的MediaID。 */ + @JSONField(name = "cert_copy") + private String certCopy; + + /** + * 必填 + * 登记证书类型 + * 1、主体为“政府机关/事业单位/社会组织”时,请上传登记证书类型; + * 2、主体为“个体工商户/企业”时,不填; + * 当主体为事业单位时,选择此枚举值: + * CERTIFICATE_TYPE_2388:事业单位法人证书 + * 当主体为政府机关,选择此枚举值: + * CERTIFICATE_TYPE_2389:统一社会信用代码证书 + * 当主体为社会组织,选择以下枚举值之一: + * CERTIFICATE_TYPE_2389:统一社会信用代码证书 + * CERTIFICATE_TYPE_2394:社会团体法人登记证书 + * CERTIFICATE_TYPE_2395:民办非企业单位登记证书 + * CERTIFICATE_TYPE_2396:基金会法人登记证书 + * CERTIFICATE_TYPE_2520:执业许可证/执业证 + * CERTIFICATE_TYPE_2521:基层群众性自治组织特别法人统一社会信用代码证 + * CERTIFICATE_TYPE_2522:农村集体经济组织登记证 + * CERTIFICATE_TYPE_2399:宗教活动场所登记证 + * CERTIFICATE_TYPE_2400:政府部门下发的其他有效证明文件 + */ + @JSONField(name = "cert_type") + private String certType; + + /** + * 必填 + * 证书号 请输入与所选证书类型相匹配且符合国家标准规范的证书号,其中除政府证明文件外,需满足18位阿拉伯数字或大写英文字母(不得包含英文字母I/O/Z/S/V) + */ + @JSONField(name = "cert_number") + private String certNumber; + + /** + * 必填 + * 商户名称 请填写登记证书上的商户名称 + * 1、长度为2-128个字符; + * 2、前后不能有空格、制表符、换行符; + * 3、不能仅含数字、特殊字符; + * 4、仅能填写数字、英文字母、汉字及特殊字符; + * 5、仅支持utf-8格式。 + */ + @JSONField(name = "merchant_name") + private String merchantName; + + /** + * 必填 + * 注册地址 请填写登记证书的注册地址 + * 1、长度为4-128个字符; + * 2、前后不能有空格、制表符、换行符; + * 3、不能仅含数字、特殊字符; + * 4、仅能填写数字、英文字母、汉字及特殊字符; + * 5、仅支持utf-8格式。 + */ + @JSONField(name = "company_address") + private String companyAddress; + + /** + * 必填 + * 法定代表人 请填写登记证书上的法定代表人姓名 + * 1、长度为2-100个字符; + * 2、前后不能有空格、制表符、换行符; + * 3、不能仅含特殊字符; + * 4、仅能填写数字、英文字母、汉字及特殊字符。 + */ + @JSONField(name = "legal_person") + private String legalPerson; + + /** + * 选填 + * 有效期限开始日期 建议填写营业执照的有效期限开始时间,若该字段未填写,系统将会查询国家工商信息填入。需注意若工商信息查询不到,则会被审核驳回。 + * 1、日期格式应满足合法的YYYY-MM-DD格式; + * 2、开始时间不能小于1900-01-01; + * 3、开始时间不能大于等于当前日期。 + */ + @JSONField(name = "period_begin") + private String periodBegin; + + /** + * 选填 + * 营业期限结束日期 建议填写营业执照的有效期限结束时间,若该字段未填写,系统将会查询国家工商信息填入。需注意若工商信息查询不到,则会被审核驳回。 + * 1、日期格式应满足合法的YYYY-MM-DD格式或长期; + * 2、结束时间需大于开始时间。 + */ + @JSONField(name = "period_end") + private String periodEnd; } diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryFinanceInstitutionReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryFinanceInstitutionReqDto.java new file mode 100644 index 000000000..61a450018 --- /dev/null +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryFinanceInstitutionReqDto.java @@ -0,0 +1,40 @@ +package com.czg.wechat.dto.req.entry.business; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +import java.util.List; + +/** + * 金融机构许可证信息 + * @author yjjie + * @date 2025/12/26 15:21 + */ +@Data +public class WechatEntryFinanceInstitutionReqDto { + + /** + * 必填 + * 金融机构类型 金融机构类型需与营业执照/登记证书上一致,可参考选择金融机构指引。 + * BANK_AGENT:银行业, 适用于商业银行、政策性银行、农村合作银行、村镇银行、开发性金融机构等 + * PAYMENT_AGENT:支付机构, 适用于非银行类支付机构 + * INSURANCE:保险业, 适用于保险、保险中介、保险代理、保险经纪等保险类业务 + * TRADE_AND_SETTLE:交易及结算类金融机构, 适用于交易所、登记结算类机构、银行卡清算机构、资金清算中心等 + * OTHER:其他金融机构, 适用于财务公司、信托公司、金融资产管理公司、金融租赁公司、汽车金融公司、贷款公司、货币经纪公司、消费金融公司、证券业、金融控股公司、股票、期货、货币兑换、小额贷款公司、金融资产管理、担保公司、商业保理公司、典当行、融资租赁公司、财经咨询等其他金融业务 + */ + @JSONField(name = "finance_type") + private String financeType; + + /** + * 必填 + * 金融机构许可证图片 + * 1、照片应正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS; + * 2、上传彩色照片、彩色扫描件,复印件需加盖公章鲜章; + * 3、水印仅限于微信支付业务相关; + * 4、根据所属金融机构类型的许可证要求提供,详情查看金融机构指引; ... + * 5、请提供为“申请商家主体”所属的许可证,可授权使用总公司/分公司的特殊资质; + * 6、最多可上传5张照片,请填写通过图片上传API预先上传图片生成好的MediaID。 + */ + @JSONField(name = "finance_license_pics") + private List financeLicensePics; +} diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryIdentityReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryIdentityReqDto.java new file mode 100644 index 000000000..539c71e96 --- /dev/null +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryIdentityReqDto.java @@ -0,0 +1,70 @@ +package com.czg.wechat.dto.req.entry.business; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.czg.wechat.dto.req.entry.id.WechatEntryIdCardReqDto; +import com.czg.wechat.dto.req.entry.id.WechatEntryIdDocInfoReqDto; +import lombok.Data; + +/** + * 经营者/法定代表人身份证件 + * @author yjjie + * @date 2025/12/26 15:24 + */ +@Data +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、若因特殊情况,无法提供法定代表人证件时,请参照示例图打印法定代表人说明函,全部信息需打印,不支持手写商户信息,并加盖公章; ... + * 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; +} diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryUboInfoReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryUboInfoReqDto.java new file mode 100644 index 000000000..3e01e0970 --- /dev/null +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/business/WechatEntryUboInfoReqDto.java @@ -0,0 +1,111 @@ +package com.czg.wechat.dto.req.entry.business; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +/** + * 最终受益人信息 + * @author yjjie + * @date 2025/12/26 15:50 + */ +@Data +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; +} diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdCardReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdCardReqDto.java new file mode 100644 index 000000000..7e18cc07d --- /dev/null +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdCardReqDto.java @@ -0,0 +1,94 @@ +package com.czg.wechat.dto.req.entry.id; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +/** + * 身份证信息 + * @author yjjie + * @date 2025/12/26 15:29 + */ +@Data +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说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 + * 加密 + */ + @JSONField(name = "id_card_name") + private String idCardName; + + /** + * 必填 + * 身份证号码 + * 1、请填写个体户经营者/法定代表人对应身份证的号码; + * 2、17位数字+1位数字|X ,该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 + * 加密 + */ + @JSONField(name = "id_card_number") + private String idCardNumber; + + /** + * 选填 + * 身份证居住地址 + * 1、主体类型为企业时,需要填写。其他主体类型,无需上传; + * 2、请按照身份证住址填写,如广东省深圳市南山区xx路xx号xx室; + * 3、长度为4-128个字符; + * 4、前后不能有空格、制表符、换行符; + * 5、不能仅含数字、特殊字符; + * 6、仅能填写数字、英文字母、汉字及特殊字符; + * 7、仅支持utf-8格式; + * 8、 该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 + * 加密 + */ + @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; +} diff --git a/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdDocInfoReqDto.java b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdDocInfoReqDto.java new file mode 100644 index 000000000..47e3029b7 --- /dev/null +++ b/cash-sdk/aggregation-pay/src/main/java/com/czg/wechat/dto/req/entry/id/WechatEntryIdDocInfoReqDto.java @@ -0,0 +1,98 @@ +package com.czg.wechat.dto.req.entry.id; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +/** + * 其他类型证件信息 + * @author yjjie + * @date 2025/12/26 15:42 + */ +@Data +public class WechatEntryIdDocInfoReqDto { + + /** + * 必填 + * 证件正面照片 + * 1、证件类型不为“身份证”时,上传证件正面照片; + * 2、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS; + * 3、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】; + * 4、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 + */ + @JSONField(name = "id_doc_copy") + private String idDocCopy; + + /** + * 选填 + * 证件反面照片 + * 1、若证件类型为往来通行证、外国人居留证、港澳居民居住证、台湾居民居住证时,上传证件反面照片; + * 2、若证件类型为护照,无需上传反面照片; + * 3、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS; + * 4、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】; + * 5、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 + */ + @JSONField(name = "id_doc_copy_back") + private String idDocCopyBack; + + /** + * 必填 + * 证件姓名 + * 1、请填写经营者/法定代表人的证件姓名; + * 2、长度为2-100个字符; + * 3、前后不能有空格、制表符、换行符; + * 4、不能仅含数字、特殊字符; + * 5、仅能填写数字、英文字母、汉字及特殊字符; + * 6、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 + */ + @JSONField(name = "id_doc_name") + private String idDocName; + + /** + * 必填 + * 证件号码 + * 1、请填写经营者/法定代表人的证件号码: + * 护照(限境外人士):4-15位 数字|字母|连字符; + * 中国香港居民--来往内地通行证:H/h开头+8或10位数字/字母; + * 中国澳门居民--来往内地通行证:M/m开头+8或10位数字/字母; + * 中国台湾居民--来往大陆通行证:8位数字或10位数字; + * 外国人居留证:15位 数字|字母; + * 台湾居民居住证/港澳居民居住证:17位数字+1位数字|X; + * 2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 + */ + @JSONField(name = "id_doc_number") + private String idDocNumber; + + /** + * 选填 + * 证件居住地址 + * 1、主体类型为企业时,需要填写。其他主体类型,无需上传; + * 2、请按照身份证住址填写,如广东省深圳市南山区xx路xx号xx室; + * 3、长度为4-128个字符; + * 4、前后不能有空格、制表符、换行符; + * 5、不能仅含数字、特殊字符; + * 6、仅能填写数字、英文字母、汉字及特殊字符; + * 7、仅支持utf-8格式; + * 8、 该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 + */ + @JSONField(name = "id_doc_address") + private String idDocAddress; + + /** + * 必填 + * 证件有效期开始时间 + * 1、日期格式应满足合法的YYYY-MM-DD格式; + * 2、开始时间不能小于1900-01-01; + * 3、开始时间不能大于等于当前日期。 + */ + @JSONField(name = "doc_period_begin") + private String docPeriodBegin; + + /** + * 必填 + * 证件有效期结束时间 + * 1、日期格式应满足合法的YYYY-MM-DD格式或长期; + * 2、结束时间需大于开始时间。 + */ + @JSONField(name = "doc_period_end") + private String docPeriodEnd; +}