6.5 KiB
6.5 KiB
KYC (Know Your Customer) 模块
概述
KYC 模块是 AML (Anti-Money Laundering) 系统的核心组成部分,用于对客户进行身份验证和合规检查。系统支持个人(Individual)和企业(Organization)两种实体类型。
目录结构
后端 (AML_Backend)
modules/iCON.Abp.AML/
├── src/
│ ├── iCON.Abp.AML.Application/
│ │ └── KYC/
│ │ ├── KYCService.cs # 核心KYC服务
│ │ ├── HandlerService.cs # 证件处理器服务
│ │ ├── XiangyunService.cs # 祥云OCR识别服务
│ │ ├── WebSearchService.cs # 失信人网络搜索
│ │ ├── CardInfoContentReader.cs # 卡片信息读取
│ │ ├── CertificateEntityValueFinder.cs
│ │ ├── ElasticResultJsonReader.cs
│ │ ├── TranslateMapper.cs
│ │ ├── MockKYCService.cs # KYC模拟服务(测试用)
│ │ └── MockHandlerService.cs # 处理器模拟服务
│ ├── iCON.Abp.AML.Application.Contracts/
│ │ └── KYCAppLayer/
│ │ ├── IKYCService.cs # KYC服务接口
│ │ ├── ScanCertificateDto.cs
│ │ ├── CertificateHandleDto.cs
│ │ └── ...
│ ├── iCON.Abp.AML.Domain/
│ │ └── KYC/
│ │ ├── KYCSetting.cs # KYC设置实体
│ │ ├── KYCCheckResultRecord.cs # KYC检查结果记录
│ │ ├── CertificateValidateRecord.cs
│ │ ├── ScanAndValidateSetting.cs
│ │ └── AttachmentFileSetting.cs
│ └── iCON.Abp.AML.HttpApi/
│ └── Controllers/
│ └── KYCController.cs # API控制器
└── test/
└── iCON.Abp.AML.Application.Tests/
└── TestKYCService_*.cs # KYC单元测试
前端 (AML_Frontend)
AML_Frontend/src/app/
├── services/
│ └── aml-kyc.service.ts # KYC服务
├── util/interfaces/
│ └── aml-kyc.ts # KYC接口定义
└── components/
└── components-viewer/
└── viewer-customer-info/
└── components/
└── kyc-section/ # KYC区域组件
└── components-form/
└── form-kyc-org-inv/ # 企业KYC表单
支持的证件类型
证件类型配置位于: src/iCON.Abp.FX.HttpApi.Host/Data/AML/KYC/CertificateMappings/
个人证件 (Individual)
| 证件类型 | 代码 | 说明 |
|---|---|---|
| 中国居民身份证 | IDCard_CHN | 支持2012版 |
| 香港居民身份证 | IDCard_HKG | 支持2003/2018版 |
| 护照 | Passport_* | 支持多国护照 (USA, VNM, CHN, DEU, GBR, TWN等) |
| 旅行证 | Travel_Permit_* | 往来内地/港澳通行证等 |
企业证件 (Organization)
| 证件类型 | 代码 | 说明 |
|---|---|---|
| 香港公司注册证书 | ORG_HKG | BR (Business Registration) |
| 香港公司CI | ORG_HKG_CI | 公司注册证明书 |
| 中国企业证件 | ORG_CHN |
API 接口
基础路径: /api/aml/kyc
证件扫描
| 接口 | 方法 | 说明 |
|---|---|---|
/ScanCertificate |
POST | 扫描证件 (v1) |
/ScanCertificateV2 |
POST | 扫描证件 (v2) |
证件处理
| 接口 | 方法 | 说明 |
|---|---|---|
/CertificateHandle |
POST | 证件识别/验证/失信人检测 |
/ValidateCredit |
POST | 征信查询 |
/GetLastValidateCredit |
POST | 获取上次征信结果 |
设置管理
| 接口 | 方法 | 说明 |
|---|---|---|
/GetScanAndValidateSetting |
POST | 获取扫描/验证设置 |
/UpdateScanAndValidateSetting |
POST | 更新扫描/验证设置 |
/GetAttachmentFileSetting |
POST | 获取附件文件设置 |
/UpdateAttachmentFileSetting |
POST | 更新附件文件设置 |
KYC 结果
| 接口 | 方法 | 说明 |
|---|---|---|
/GetKYCCheckResult |
POST | 获取KYC检查结果 |
/SaveKYCCheckResult |
POST | 保存KYC检查结果 |
/ReCheckKYCStatus |
POST | 重新检查KYC状态 |
/GetReportIndividualKYCCheckResult |
POST | 获取个人KYC报告 |
/GetReportOrganizationKYCCheckResult |
POST | 获取企业KYC报告 |
外部 API
| 接口 | 方法 | 说明 |
|---|---|---|
/openApi/kycCertificateVerify |
POST | 外部证件验证 |
/openApi/kycQueryCredit |
POST | 外部征信查询 |
核心流程
证件扫描 (ScanCertificateV2)
用户上传证件图片
↓
调用 OCR 服务识别证件内容
↓
提取证件信息 (姓名、证件号、有效期等)
↓
返回识别结果
证件处理 (CertificateHandle)
传入 EntityInfo + KYCCertificateCode + HandlerCodes
↓
根据 HandlerCodes 执行对应处理器:
- ValidateIDCard: 身份证验证
- ValidateBR: 商业登记证验证
- ValidateCredit: 失信人检测
- ScanCertificate: 证件扫描
↓
返回处理结果 (IsValidated, SourceResult 等)
KYC 状态检查
获取实体 (Individual/Organization)
↓
检查所需证件是否齐全
↓
验证证件有效性
↓
检测失信人名单
↓
返回 KYC 状态评级 (RatingEnum)
关键服务
KYCService
核心服务类,负责协调各子服务完成KYC流程。
HandlerService
证件处理器,根据不同证件类型调用对应的验证服务。
XiangyunService
调用祥云OCR服务进行证件识别。
WebSearchService
执行网络搜索检测实体是否在失信人名单中。
数据模型
KYCSetting
存储租户的KYC配置,包括:
AttachmentFileSetting: 附件文件设置ScanAndValidateSetting: 扫描验证设置
KYCCheckResultRecord
存储KYC检查结果记录,关联到具体实体。
CertificateValidateRecord
存储证件验证记录,包含验证状态和来源结果。
前端集成
import { AmlKycService } from '@/services/aml-kyc.service';
constructor(private kycService: AmlKycService) {}
// 扫描证件
this.kycService.scanCertificateV2(params);
// 获取KYC结果
this.kycService.getKYCCheckResult(entityId);
测试
测试文件位于: modules/iCON.Abp.AML/test/iCON.Abp.AML.Application.Tests/
TestKYCService_ScanCertificate*.csTestKYCService_GetAttachmentFileSettingAsync.csTestKYCService_GetScanAndValidateSettingAsync.cs