架构
身份验证
所有请求都需要在x-api-key 请求头中传入应用的 API 密钥。有关密钥轮换、环境隔离和权限范围,请参阅 API 身份验证。
创建会话
唯一的 endpoint 是POST /v3/session/。会话是 KYC 还是 KYB 由工作流的类型决定,无需额外传入“企业”标志。
创建时建议填写的字段:
完整结构请参阅创建会话。
发送托管验证链接
响应中的url 是托管验证链接。发送方式如下:
- 通过你自己的平台发送邮件。
- 以链接形式嵌入你的入驻界面。
- 在应用内 webview 中打开(iOS / Android / React Native)。
轮询与 Webhook
推荐使用 Webhook。处理完成后,Didit 会立即将完成事件 POST 到你订阅的 endpoint。 在开发阶段,或当你的 Webhook endpoint 无法访问时,可以使用轮询:- 使用指数退避轮询
GET /v3/session/{id}/decision/(起始间隔 10 秒,最长间隔 60 秒)。 - 当
status为"Approved"、"Declined"或"In Review"之一时停止轮询。
处理 Webhook
订阅你关注的事件。KYC 和 KYB 共用同一组事件,载荷中的session_kind: "business" 用于标识企业会话事件:
status.updated:会话状态已变更。对 KYB 会话请按session_kind === "business"过滤。data.updated:审核员在控制台中编辑了登记数据或关键人员信息,或登记机构报告了变更。当申请人上传证件或提交关键人员信息时不会发送此事件,请改为关注status.updated。同样需要按session_kind过滤。business.status.updated/business.data.updated:关联的企业实体已发生变更。
处理决策
重新提交流程
当企业验证(KYB)会话转为Resubmitted(或某项功能被标记为需要重新提交)时,企业需要上传修正后或补充的数据。
你可以:
- 重新发送同一个
url,托管流程会从需要重新提交的环节继续。 - 重新生成失效的关键人员链接:若某相关人员的子 KYC 会话已被删除,或在其开始前已过期,可使用重新生成关键人员 KYC 会话为其创建新会话。
- 在 Business Console 中创建案件,在内部跟踪多次往返沟通。
在你自己的前端运行各步骤
证件和关键人员步骤也可以通过你的服务器,使用你的 API 密钥来驱动。这样,界面由你掌控,验证和决策仍由 Didit 完成。 每个调用都限定于该 KYB 会话,需要write:businesses 权限(读取已提取的相关方信息时也可使用 read:businesses 或 read:sessions),并执行与托管页面相同的检查、计费和步骤推进。
- 会话处于 KYB 证件步骤时,上传企业证件。
- 读取证件中列出的相关方,包括股东和股权比例,并将其展示给申请人。
- 创建、编辑和删除相关方草稿。草稿不会被视为已申报,也不产生费用。
- 提交草稿。Didit 会决定哪些相关方需要验证,为每位相关方创建 KYC 会话,并返回其
kyc_session_url,供你发送或嵌入。 - 与托管流程一样,从会话中读取汇总后的决策。
409 kyb_step_mismatch 及其所在的步骤;若会话已结束,则返回 409 kyb_session_not_writable。
企业档案聚合
如果你在创建会话时传入vendor_data,Didit 会将该企业的所有会话聚合到同一个企业实体中。你可以直接使用实体的 features 映射,无需遍历会话,即可判断该企业当前是否已完成全面验证。
优势包括:
- 定期的重新 KYB 流程会追加到同一份企业档案中。
- 针对同一
vendor_data进行的交易监控会携带该企业的风险背景信息。 - 关联到用户实体的实际受益人和管理人员会建立跨实体关系。
最佳实践
错误处理
完整的速率限制参考文档。
后续步骤
Webhook
每个 KYB 事件及其 payload。
状态
状态机参考。
响应结构
解读 KYB 决策结果。