开发指引
更新时间:2025.07.221. 概念说明
资料项:资料项是收集商户资料的一个最小单元,比如“经营者/法定代表人姓名”。包含校验规则。
校验规则:部分资料项会有一些填写要求,比如最长字数、最多上传图片数量等。
关联规则:部分资料项的填写会有关联要求,比如只有当“证件持有人类型”选择”法人“时,”证件正面照片“才是必填。
2. 收集资料规则说明
查询尽调记录,记录中都会包含收集资料的规则
类型为字符串,存储内容结构为JSON,含义为要提交资料项的列表,每个资料项包含展示信息与校验规则
示例
这里给出一个说明的示例,旨在帮助研发同学先了解资料项的结构
1{ 2 "record_fields": [ 3 // 要求提交三个资料项,分别是经营证照证书类型,经营证照证书正面照片,经营证照证书注册号 4 { 5 "item_id": "130001",// 资料项ID,用于唯一的标识一个资料项 6 "field_name": "credential_type",// 资料项英文名(提交资料时需带上) 7 "name": "经营证照证书类型",// 资料项中文名,可用于页面展示(提交资料时需带上) 8 "type": 11,// 资料项类型 11-选择器(默认单选,通过check_rule的max_length判断是不是多选) 9 "tips": "",// 资料项填写提示,一般在资料项名下小字展示 10 "placeholder": "",// 输入框占位文案,用于在尚未填写时提示商户输入内容 11 "tooltip": "",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 12 "required": 1,// 是否必须提交 0-非必填 1-必填 13 "check_rule": {// 校验规则 14 // 这里表示枚举只能选一个 15 "min_length": 1,// 最小选择个数 16 "max_length": 1,// 最大选择个数 17 "enum_keys": [1, 2388, 2389],// 枚举可选的字段枚举值,与enum_values一一对应,提交资料时需提交enum_key 18 "enum_values": ["营业执照", "事业单位法人证书", "统一社会信用代码证书"]// 展示给商户看的枚举可选的字段列表 19 }, 20 "need_encrypt":false // 提交内容不需要加密 21 }, 22 { 23 "item_id": "130002",// 资料项ID,用于唯一的标识一个资料项 24 "field_name": "credential_front_photo",// 资料项英文名(提交资料时需带上) 25 "name": "证书正面照片",// 资料项中文名,可用于页面展示(提交资料时需带上) 26 "type": 2,// 资料项类型 2-图片 27 "tips": "", 28 "placeholder": "",// 输入框占位文案,用于在尚未填写时提示商户输入内容 29 "tooltip": "<p>1、请上传三证合一的主体证照彩色照片、彩色扫描件或加盖公章鲜章的复印件(暂不支持电子章)。个体工商户类型商户证照如为复印件,应加盖公章鲜章或有经营者的签字捺印;</p><p>2、需正面拍摄,露出证件四角且清晰、完整,所有字符清晰可识别,不得反光或遮挡。不得翻拍、截图、镜像、PS;</p><p>3、图片只支持JPG、BMP、PNG格式,文件大小不能超过2M。</p>",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 30 "required": 1,// 是否必须提交 0-非必填 1-必填 31 "need_encrypt":false, // 提交内容不需要加密 32 "check_rule": {// 文件校验规则 33 // 这里表示上传1张图片,格式必须为["png", "jpg", "jpeg"]内 34 "min_length": 1,// 最小列表长度,为0时不限制 35 "max_length": 1,// 最大列表长度,为0时不限制 36 "enum_file_exts": ["png", "jpg", "jpeg"],// 限制提交的文件后缀 37 "max_file_size": 2 // 限制文件提交大小,单位M 38 }, 39 "need_encrypt": false // 提交内容不需要加密 40 }, 41 { 42 "item_id": "130003",// 资料项ID,用于唯一的标识一个资料项 43 "field_name": "credential_license_number",// 资料项英文名(提交资料时需带上) 44 "name": "经营证照证书注册号",// 资料项中文名,可用于页面展示(提交资料时需带上) 45 "type": 1,// 资料项类型,不同资料项类型有不同的校验规则 1-文本 46 "tips": "",// 资料项填写提示,一般在资料项名下小字展示 47 "placeholder": "请输入经营证照证书注册号",// 输入框占位文案,用于在尚未填写时提示商户输入内容 48 "tooltip": "需要填写完整证书注册号",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,用于在鼠标悬浮在上面后展示提示信息 49 "required": 1,// 是否必须提交 0-非必填 1-必填 50 "check_rule": {// 字符串校验规则 51 "min_length": 1,// 字符串最小长度,为0时不限制 52 "max_length": 300, // 字符串最大长度,为0时不限制 53 }, 54 "relations": [ 55 {"source_key": 130002, "source_value": "营业执照"} // 当130002资料项选择"营业执照"时,才展示这个资料项让商户填写 56 ], 57 "need_encrypt":true // 提交内容需要加密 58 } 59 ] 60}
资料项类型
type枚举值 | 资料项类型 | 校验规则 | 提交资料内容 |
---|---|---|---|
1 | 文本 | 文本最小长度,文本最大长度 validor校验规则 | 字符串 |
2 | 图片 | 最小上传数量,最大上传数量 图片后缀名 目前所有资料项的文件后缀: 图片:jpeg,jpg,png, bmp, gif 图片最大大小 | 通过上传接口拿到的文件ID |
11 | 选择器 | 最小选择数量,最大选择数量 是否是给定集合内的枚举值 | 给定范围内的枚举值,可能一个或多个 |
15 | 日期 | 无 | 固定结构,YYYY-MM-DD 结构的日期字符串 长期有效时为“长期” |
资料规则结构解析
收集规则列表中一个资料项完整pb结构如下所示
1/* 2 * 资料项 3 **/ 4message SubmissionItem 5{ 6 optional uint64 item_id = 1; // 资料项唯一ID 7 optional string field_name = 2; // 资料项英文名 8 optional string name = 3; // 资料项名称 9 optional uint64 type = 4; // 资料项类型 10 optional string field_data = 5; // 资料项值(单值类型) 11 repeated string repeated_field_data = 6; // 资料项值(多值类型) 12 optional string tips = 7; // 填写指引 13 optional uint64 required = 8; // 是否必填,0非必填, 1必填 14 optional uint64 use_permanently_date = 9; // 日期类型是否可勾选“长期有效”,0不允许,1允许 15 optional SubmissionItemCheckRule check_rule = 10; // 资料项校验规则 16 repeated SubmissionItemRelation relations = 11; // 资料项关联关系 17 optional uint64 disabled = 12; // 是否允许修改内容,0可以修改,1禁止修改 18 optional uint64 hidden = 13; // 是否隐藏资料项,0或空值展示,1不展示 19 optional string placeholder = 14; // 输入占位文案 20 optional string tooltip = 15; // 悬浮提示语 21 optional bool need_encrypt = 16; // 是否需要加密,若为true,提交结果field_data字段的string或repeated_field_data字段里每个string都要加密 22 // 加密规则参考https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/min-gan-xin-xi-jia-mi 23 24} 25 26 27/* 28 * 资料项校验规则 29 **/ 30message SubmissionItemCheckRule 31{ 32 optional uint64 min_length = 1; // 允许的最小长度 33 optional uint64 max_length = 2; // 允许的最大长度 34 repeated string enum_keys = 3; // 允许的枚举值列表 35 repeated string enum_values = 4; // 允许的枚举描述列表 36 repeated string enum_file_exts = 5; // 允许的文件后缀名,不带点号 37 optional uint64 max_file_size = 6; // 允许的最大文件大小,单位M 38} 39 40/* 41 * 资料项关联规则,具体说明见后文 42 **/ 43message SubmissionItemRelation 44{ 45 optional uint64 source_key = 1; // 触发源的资料项,存的是资料项的item_id 46 optional string source_value = 2; // 触发源的值,表现为当source_key的资料项取xx值的时候,才显示本资料项 47 // 同source_key之间是“或”关系,不同source_key之间是“且”关系,或关系优先且关系 48}
资料项关联规则说明
资料项关联规则可以出现在任意类型的资料项下,以法人证件反面照片为例
规则是列表中的枚举值按item_id聚合,相同item_id是或关系,不同item_id之间是且的关系,先处理或条件,再处理且条件,仅一层嵌套
比如下面这个例子:130014资料项仅当(130012资料项取值为"法人") 且(100077资料项取值为"身份证(中国大陆居民)" 或 "来往内地通行证(中国香港居民)")时才展示,不满足条件不展示给商户填写(必填的判断规则优先级在展示之后,只有展示了的资料项才校验是否必填)
也就是说,当本资料项存在relations列表时,需要寻找relations列表中的资料项,当商户选择了对应资料项的对应枚举值,满足条件时,才在页面展示本资料项供商户填写
1{ 2 "item_id": "130014",// 资料项ID,用于唯一的标识一个资料项 3 "field_name": "certificate_back_photo",// 资料项英文名(提交资料时需带上) 4 "name": "证件反面照片",// 资料项中文名,可用于页面展示(提交资料时需带上) 5 "type": 2,// 资料项类型 2-图片 6 "tips": "请上传图片", 7 "placeholder": "",// 输入框占位文案,用于在尚未填写时提示商户输入内容 8 "tooltip": "",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 9 "required": 1,// 是否必须提交 0-非必填 1-必填 10 "need_encrypt":false // 提交内容不需要加密 11 "check_rule": { 12 // 这里表示上传1张图片,格式必须为["png", "jpg", "jpeg"]内 13 "min_list_length": 1,// 最小列表长度 14 "max_list_length": 1,// 最大列表长度 15 "enum_file_exts": ["png", "jpg", "jpeg"],// 限制提交的文件后缀 16 "max_file_size": 2 // 限制文件提交大小,单位M 17 }, 18 19 // (130012资料项取值为"法人") 且(100077资料项取值为"身份证(中国大陆居民)" 或 "来往内地通行证(中国香港居民)")时才展示,不满足条件就不展示给商户填写 20 "relations": [ 21 {"source_key": 130012, "source_value": "法人"}, 22 {"source_key": 100077, "source_value": "身份证(中国大陆居民)"}, 23 {"source_key": 100077, "source_value": "来往内地通行证(中国香港居民)"}, 24 ] 25}
资料项关联规则补充说明
有时候返回的资料项的hidden属性为 1,此时不应该展示给商户看,但可能该资料项已经被预设了field_data,比如下发前已经默认判断商户的证件持有人是法人,此时不会让商户重新选择证件持有人类型,但其他依赖该资料项展示的资料项,依然要基于其内容进行判断。
各类型资料项示例
文本类型
1{ 2 "item_id": "130003",// 资料项ID,用于唯一的标识一个资料项 3 "field_name": "credential_license_number",// 资料项英文名(提交资料时需带上) 4 "name": "证书注册号",// 资料项中文名,可用于页面展示(提交资料时需带上) 5 "type": 1,// 资料项类型,不同资料项类型有不同的校验规则 1-文本 6 "tips": "",// 资料项填写提示,一般在资料项名下小字展示 7 "placeholder": "请填写",// 输入框占位文案,用于在尚未填写时提示商户输入内容 8 "tooltip": "",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 9 "required": 1,// 是否必须提交 0-非必填 1-必填 10 "check_rule": {// 校验规则 11 "min_length": 1,// 字符串最小长度,为0时不限制 12 "max_length": 300 // 字符串最大长度,为0时不限制 13 }, 14 "need_encrypt":true // 提交内容需要加密 15}
图片类型
1{ 2 "item_id": "130002",// 资料项ID,用于唯一的标识一个资料项 3 "field_name": "credential_front_photo",// 资料项英文名(提交资料时需带上) 4 "name": "证书正面照片",// 资料项中文名,可用于页面展示(提交资料时需带上) 5 "type": 2,// 资料项类型 2-图片 6 "tips": "请上传图片", 7 "placeholder": "",// 输入框占位文案,用于在尚未填写时提示商户输入内容 8 "tooltip": "",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 9 "required": 1,// 是否必须提交 0-非必填 1-必填 10 "check_rule": { 11 // 这里表示上传1张图片,格式必须为["png", "jpg", "jpeg"]内 12 "min_length": 1,// 最小列表长度 13 "max_length": 1,// 最大列表长度 14 "enum_file_exts": ["png", "jpg", "jpeg"],// 限制提交的文件后缀 15 "max_file_size": 2 // 限制文件提交大小,单位M 16 }, 17 "need_encrypt":false // 提交内容不需要加密 18}
选择器类型
1{ 2 "item_id": "130001",// 资料项ID,用于唯一的标识一个资料项 3 "field_name": "credential_type",// 资料项英文名(提交资料时需带上) 4 "name": "证书类型",// 资料项中文名,可用于页面展示(提交资料时需带上) 5 "type": 11,// 资料项类型,不同资料项类型有不同的校验规则 11-选择器 6 "tips": "",// 资料项填写提示,一般在资料项名下小字展示 7 "placeholder": "",// 输入框占位文案,用于在尚未填写时提示商户输入内容 8 "tooltip": "",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 9 "required": 1,// 是否必须提交 0-非必填 1-必填 10 "check_rule": {// 校验规则 11 "min_length": 1,// 最小选择个数 12 "max_length": 1,// 最大选择个数 13 "enum_keys": [1, 2388, 2389],// 枚举可选的字段枚举值,与enum_values一一对应,提交资料时需提交enum_key 14 "enum_values": ["营业执照", "事业单位法人证书", "统一社会信用代码证书"]// 展示给商户看的枚举可选的字段列表 15 }, 16 "need_encrypt":false // 提交内容不需要加密 17}
日期类型
1{ 2 "item_id": "130006",// 资料项ID,用于唯一的标识一个资料项 3 "field_name": "credential_end_date",// 资料项英文名(提交资料时需带上) 4 "name": "经营证照有效期结束日期",// 资料项中文名,可用于页面展示(提交资料时需带上) 5 "type": 15,// 资料项类型,不同资料项类型有不同的校验规则 15-日期 6 "tips": "",// 资料项填写提示,一般在资料项名下小字展示 7 "placeholder": "",// 输入框占位文案,用于在尚未填写时提示商户输入内容 8 "tooltip": "",// 叹号悬浮提示语,一般复杂资料项,会有叹号标识,鼠标悬浮在上面后会展示提示信息 9 "required": 1,// 是否必须提交 0-非必填 1-必填 10 "use_permanently_date": 1,// 日期类型是否可勾选“长期有效”,0不允许,1允许 11 "enum_check_rule": { 12 // 这里表示枚举只能从enum_values里面选一个 13 "min_length": 0,// 最小列表长度,为0时不限制 14 "max_length": 0// 最大列表长度,为0时不限制 15 }, 16 "need_encrypt":false // 提交内容不需要加密 17}
3. 商户端提交的资料结果格式
根字段名 | 字段类型 | 字段描述 | 必填 | 备注 | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
record_fields | Array<Object> | 资料项数组 | 必填 |
| |||||||||||||||||||||||||||||||||||||||
|
示例数据
1// 四类资料项类型均给出示例 2{ 3 "record_fields": [ 4 { // 字符串类型 5 "item_id": 130004, 6 "field_name": "credential_registration_address", 7 "name": "证书注册地址", 8 "type": 1, 9 "field_data": "ri8U5FUSmHh1peGNBUvG+VwGHl31ymiLms5V1yhTbBWUApJDInme1b+ndtrlAielJYpQE41sSxj46ePMto2mySBIJjgCIyChLCTQ580M5pNKglAkjTnXwzJXyPhpyzkpdeFfUDjWc+qd6G4UwrL70br/EEqfQbGNaUKX6jAGjB8wd8wndImMB3iB2vUuAOL+6giLWCBBaC50QRfCTDlGi0c41Gt92tCrRSI7pWzU1cxxJwng7M53/J5PhI+eikLqbhUYlRPHYl6j0ouRItWHCRORYKuz6enluXyFwUCaaR3IeINSM8CwjHp6spnTIo70UaRJWAcZ0jQp/lwX2JVxaw=="// 加密后的地址 10 }, 11 { // 日期类型 12 "item_id": 130005, 13 "field_name": "credential_start_date", 14 "name": "经营证照有效期开始日期", 15 "type": 15, 16 "field_data": "2020-01-03" 17 }, 18 { // 日期类型——长期 19 "item_id": 130006, 20 "field_name": "credential_end_date", 21 "name": "经营证照有效期结束日期", 22 "type": 15, 23 "field_data": "长期" 24 }, 25 { // 选择器类型——多选 26 "item_id": 130068, 27 "field_name": "account_opening_purpose", 28 "name": "开户目的", 29 "type": 11, 30 "repeated_field_data": [ 31 "1", 32 "2" 33 ] 34 }, 35 { // 选择器类型——单选 36 "item_id": 100077, 37 "field_name": "certificate_type", 38 "name": "证件类型", 39 "type": 11, 40 "field_data": "68" 41 }, 42 { // 图片类型 43 "item_id": 130013, 44 "field_name": "certificate_front_photo", 45 "name": "证件正面照片", 46 "type": 2, 47 "field_data": "V1_B1JjMhCA3714g4Gbs_hDBh4PbttbD2HZt3pLGMZ_mVUn-szjdkQSiyXMnEIUr-kDDHYM5lMVFuQ1D1sCPOC-pcbhCQxYfQ9hsKcnyfisSnBL" 48 }, 49 { // 图片类型 50 "item_id": 130014, 51 "field_name": "certificate_back_photo", 52 "name": "证件反面照片", 53 "type": 2, 54 "field_data": "V1_aF69-5OeYw4LBJnCeed10x4PbttbD2HZc57Kb6fhhi7dHYuwpHDzASWilEIUr-kDDBKiBx2w_0268DLMgNQb1lbhCQxYfQ9hsKcnyfisSnBL" 55 } 56 ] 57}
4. 订阅通知说明
尽调回调通知JSON结构
触发时机:发起尽调,审核通过,审核驳回时,都会发起订阅通知。
通知消息示例:
1消息主题id:20007 2消息主题:尽调通知 3商户号:00000000000 4商户全称:测试商户号 5业务发生时间:2024-11-01 12:00:00 // 尽调单据最近更新时间 6业务单据:xxx // 尽调单据号 7业务状态:DUE_DILIGENCE_STATE_COLLECTING // 状态枚举见下文 8备注:
状态枚举说明:
1DUE_DILIGENCE_STATE_COLLECTING--新增待填写单据 2DUE_DILIGENCE_STATE_AUDITING--单据审核中 3DUE_DILIGENCE_STATE_REJECTED--单据已驳回 4DUE_DILIGENCE_STATE_EXPIRED--单据已过期 5DUE_DILIGENCE_STATE_CANCELLED--单据已终止 6DUE_DILIGENCE_STATE_FINISHED--单据已完成
5. 尽调单据状态扭转图