② 实名与进件
登录后经
CreditRouteUtil.startIdentity()进入。原生为主,按后端返回stage驱动分步。分支见下方「分支清单」。设备采集贯穿上报大数据 SDK 平台。
概述
| 项 | 内容 |
|---|---|
| 起点 | 登录成功 → startIdentity |
| 终点 | 进件提交,进入审批/绑卡/额度 |
| 发起端 | 原生(IdentifyIdStatus / NINIdentify / FaceIdentify / Step2 / Step4 / SupplementInfo)+ 本地人脸 SDK |
| 后端 | blc-service(apply/、bank/、user/、query/)+ 大数据 SDK 平台 |
| 驱动 | 后端返回 stage 决定下一步 |
时序图
sequenceDiagram autonumber actor U as 用户 participant APP as 原生 App participant FACE as 人脸 SDK(Smile/Google) participant BLC as blc-service participant BIG as 大数据 SDK 平台 Note over U,BIG: 进件入口(按 hasBvn 分支) APP->>APP: CreditRouteUtil.startIdentity() alt 有 BVN U->>APP: IdentifyIdStatus 输 BVN/银行账户/性别 APP->>BLC: user/v1/isBvnBindPhone4nc(查绑定) APP->>BLC: apply/verifyPersonalInfo(BVN 核验) BLC-->>APP: 通过 + 回填姓名/生日/照片 else 无 BVN U->>APP: NINIdentify 输 NIN/姓名/生日 APP->>BLC: bank/ninMatch(NIN 核验, Goldman) BLC-->>APP: 通过 end opt 需 BVN OTP(Flutterwave) APP->>BLC: user/v1/flwSendBvnOtp4nc + flwVerifyBvnOtp4nc end APP->>BLC: user/v1/verifyToCreateNewCust4nc(建客户 + 验证码) BLC-->>APP: stage + encCustomerId Note over U,BIG: 人脸活体(失败重试) APP->>FACE: 活体检测(本地) FACE-->>APP: 活体数据 APP->>BLC: apply/faceDetection alt 通过 BLC-->>APP: 成功, stage 推进 else 失败 APP->>U: DetectBvnFaceFailedActivity(重试) end Note over U,BIG: 按 stage 分流 alt stage = NO_CREDIT U->>APP: Step2 工作收入 + Step4 紧急联系人(F/O) APP->>BLC: apply/saveBaseInfo(工作+个人+contactList) else stage = NO_BINDBANKACCOUNT APP->>APP: 转绑卡(见 03) else stage = REVIEWING(U) APP->>U: WaitReviewActivity 等待审核 else 通过/拒绝/冻结 APP->>U: SuccessOfApproval / 拒绝 / 冻结(freeze_days) end Note over U,BIG: 大数据授信 + 设备采集(贯穿) APP->>BIG: sdk-adapter/credit(激活大数据授信) APP-)BIG: sdk-service/upload/*(设备/短信/通讯录/applist/wifi/gps)
分支清单(穷举进件全部分支)
出处 ui/applyinfo、ui/applycredit(除注明)。
| # | 分支 | 触发条件 | 处理 | 接口/出处 | 状态 |
|---|---|---|---|---|---|
| 1 | 进件入口-有 BVN | hasBvn(来自 loanAPPConfig) | IdentifyIdStatusActivity | CreditRouteUtil:42 | 已展开 |
| 2 | 进件入口-无 BVN | !hasBvn | NINIdentifyActivity(首次) | CreditRouteUtil:48 | 已展开 |
| 3 | BVN 核验 | 输入 BVN | apply/verifyPersonalInfo(回填姓名/生日/照片) | IdentifyIdStatusActivity | 已展开 |
| 4 | NIN 核验 | 无 BVN | bank/ninMatch(Goldman) | NINIdentifyActivity | 已展开 |
| 5 | BVN OTP | 后端要求 | flwSendBvnOtp4nc + flwVerifyBvnOtp4nc(Flutterwave) | Api | 已展开(opt) |
| 6 | 建客户 | 核验通过 | verifyToCreateNewCust4nc(返回 stage) | MsgNamePresenter | 已展开 |
| 7 | 人脸活体 | 建客后/stage | apply/faceDetection(Smile/Google) | FaceDetectionV3Model | 已展开 |
| 8 | 人脸失败重试 | faceDetection 失败/30s 超时 | DetectBvnFaceFailedActivity | FaceIdentifyActivity:44/BaseFaceIdentify:758 | 已展开 |
| 9 | stage=NO_CREDIT | 建客返回 | Step2 工作 + Step4 联系人 → saveBaseInfo | TrustworthinessBoundInfoModel | 已展开 |
| 10 | stage=NO_BINDBANKACCOUNT | 建客返回 | 转绑卡 | 链出 → 03-借款提现 | 链出 |
| 11 | stage=REVIEWING(U) | 建客返回 | WaitReviewActivity 等待审核 | AppConstant:675 | 已展开 |
| 12 | 审批-通过 | 审批结果 | SuccessOfApprovalActivity(额度生效) | ui/applycredit | 已展开 |
| 13 | 审批-拒绝/冻结 | 审批结果 | 拒绝原因 / 冻结(freeze_days) | SuccessOfApproval:CREDIT_FREEZE_DAYS | 已展开 |
| 14 | stage=HAVE_CREDIT | 已授信 | 进首页/额度 | CreditRouteUtil | 已展开 |
| 15 | 补件 | 进件需补充 | SupplementInfoActivity(apply/verifyPersonalInfo 重核) | IdentifyIdStatus:1124 | 已展开 |
| 16 | 紧急联系人-进件 | Step4 | 双联系人(F/O) 并入 saveBaseInfo.contactList | Step4Activity:1416 | 已展开 |
| 17 | 紧急联系人-单独更新 | 贷后/补件 | H5 apply/v1/saveContactList | H5 updateEmergencyContact | 已展开 |
| 18 | 设备采集 | 登录后 init + 进件节点 | sdk-service/upload/*(短信/通讯录/applist/wifi/gps) | DataCollectUtil | 已展开(贯穿) |
| 19 | 大数据授信激活 | 进件中/完成 | sdk-adapter/credit | SdkAdapterCreditModel | 已展开 |
| 20 | 字典 | 采集页 | queryDict4nc(性别/行业/关系) | GetInfoDictModel | 已展开 |
| 21 | 增信(银行流水) | 提额/补充资料 | increase-credit + ccs/credit_investigation_upload_v2 | 链出 → 05-提额复借重授信 | 链出 |
| 22 | 再进件带出 | 30 天内有进件记录 | 产品定义有;前端未核实到明确实现 | — | 待确认 |
接口落地
| 步骤 | 接口(真实路径) | 发起 | 目标后端 |
|---|---|---|---|
| 查 BVN 绑定 | user/v1/isBvnBindPhone4nc | BvnBindInfoModel | blc-service |
| BVN 核验 | apply/verifyPersonalInfo | IdentifyIdStatus/SupplementInfo | blc-service |
| NIN 核验 | bank/ninMatch | NINIdentifyActivity | blc-service |
| 建客户 | user/v1/verifyToCreateNewCust4nc | MsgNamePresenter | blc-service |
| BVN OTP | user/v1/flwSendBvnOtp4nc / flwVerifyBvnOtp4nc | Api | blc-service |
| 人脸活体 | apply/faceDetection | FaceDetectionV3Model | blc-service |
| 保存工作+个人+联系人 | apply/saveBaseInfo | TrustworthinessBoundInfoModel | blc-service |
| 紧急联系人单独更新 | apply/v1/saveContactList | H5 | blc-service |
| 补件查询/提交 | offline/replenishStatus / replenishMaterial | H5 | blc-service |
| 增信触发 | apply/v1/increase-credit | H5/原生 | blc-service |
| 增信资料上传 | ccs/credit_investigation_upload_v2 | H5 | 大数据 SDK |
| 字典 | query/v1/queryDict4nc | GetInfoDictModel | blc-service |
| 进件阶段 | query/v1/queryStageInfo4nc | Api | blc-service |
| 大数据授信激活 | sdk-adapter/credit | SdkAdapterCreditModel | 大数据 SDK |
| 设备采集 | sdk-service/upload/* | DataCollectUtil | 大数据 SDK |
| 埋点 | dc/buriedPointBatch/v2 | datacollect | 大数据 SDK |
要点与缺口
- BVN 核验走
apply/verifyPersonalInfo,不走bank/bvnMatch:后者仅 MappedApi 定义、无调用点(死接口),与后端 13 中 bnsbankBvnMatch注释呼应。 - 进件入口按
hasBvn分支(来自 loanAPPConfig):有 BVN→BVN 核验,无 BVN→NIN(Goldman)。 - stage 驱动:建客返回 stage(NO_CREDIT / NO_BINDBANKACCOUNT / REVIEWING=U / 通过 / 拒绝/冻结 / HAVE_CREDIT),CreditRouteUtil 按 stage 路由,进件非固定线性。
- 人脸失败有重试页(DetectBvnFaceFailedActivity);人脸渠道 Smile/Google(FaceConfigBean)。
- 紧急联系人两入口:进件 Step4 并入 saveBaseInfo.contactList(F 家庭/O 其他);H5 saveContactList 单独更新(贷后/补件)。
- 增信(银行流水)是提额场景:increase-credit 触发 + ccs/credit_investigation_upload_v2 上传,归 05-提额复借重授信。
- 再进件 30 天带出:产品定义有此设计,前端代码未核实到明确实现——标待确认,不臆断(后端可能处理)。
- 设备采集(风控关键):DataCollectUtil 登录后 init + 进件节点触发 → sdk-service/upload/*(大数据 SDK,不在 blc-service);大数据授信经 sdk-adapter/credit 激活。
- NIN=Goldman、BVN OTP=Flutterwave,前端直连 blc-service,三方在后端侧。
- 衔接:stage=NO_BINDBANKACCOUNT → 03-借款提现 绑卡;通过 → 额度/借款。