前端现状 — android(roovault)+ h5(wp_h5)

静态盘点:技术栈、模块构成、功能域、接口面、第三方 SDK、后端依赖。动态业务交互时序见 16-前端交互时序
核实日期 2026-06-03,基于 frontend-cashloan 当前快照逐项重核(settings.gradle / MappedApi.java / basePath.js / build.gradle)。权威以本文 + 代码为准。

架构概览

现状
形态原生 Android(roovault)承载登录/KYC/绑卡/人脸/采集/人脸提额;内嵌 WebView 加载 H5 业务页(提现/还款/复借/重授信/提额/合同)。非 Flutter
原生构建minSdk 21 / target 35,dev 包 com.mini.dev(APP_NAME=Common),versionName 2.7.31,flavor 维度 credit_channel
H5 技术栈Vue 2.7.16 + Vant 2.11.2 + vue-router 3.6.5 + vuex 3.6.2 + axios 0.21.4 + core-js
主后端blc-service(= bns-gateway,业务网关/BFF)——原生与 H5 共用主入口。登录也走此user/ 模块 + token,无 TGT/ST)
直连例外还款支付结果轮询直连 cfk-service(fcs)cfk-service/inner/v1/activeQueryPlutusPaymentResult
接口路径当前快照为混淆前明文(MappedApi/basePath 真实路径,Retrofit/请求层直接用)
多包credit_channel flavor 维度(common/dev + 品牌包,配置含 newcredit URL);接口有 4nc/4merge 包专属变体(4=for,nc=NewCredit 包)

一、模块构成(android roovault)

Gradle 模块(settings.gradle 实测 12 个)

模块用途(据包名/代码)
appcom.foo.cash主应用,承载全部业务(登录/KYC/绑卡/提现壳/采集…)
commonbasecom.common.*公共基础:网络(http)、数据库、日志、工具、API 常量(MappedApi)
facedetectlibcom.pbank.facedetectlib人脸活体检测
CameraLibcom.cash.cameralib相机
idcameracom.finiloan.idcamera证件拍照
operatorcom.foo.cashoperator运营活动
acpcom.mylhyl.acp运行时权限申请(第三方)
android-pickers选择器控件
calendarremindercom.aftcfaca还款日历提醒
calendarviewcom.foo.calendarview日历控件
lottiecom.airbnb.lottie动画(第三方)
luban图片压缩(第三方)

⚠ 早期版本文档曾列「30+ Gradle 模块」(loginLib/datacollect/deviceLib/s3operate 等)——当前快照不存在,那是更早/不同快照。当前 gradle 模块就是上表 12 个;登录、采集、上传等已收进 app 子包(见下)。

app 内功能域(com.foo.cash.ui 子包,17 个)

子包功能
login登录注册(手机号/OTP/人脸登录)
applycredit授信(NIN 核验/审批结果/等待审核)
applyinfo进件资料(BVN 核验/建客/人脸/工作/联系人/补件)
applylimit提额(人脸提额/调额/增信补充)
bank / bankacount银行卡/绑卡
businessh5webH5 WebView 容器(H5JsInterface 桥)
withdraw提现(原生壳,主体在 H5)
loanlist借据列表
usercenter用户中心
main主页
messagecenter消息中心
discountcoupons优惠券
operator运营活动
evaluate评价
launch启动
network网络

设备数据采集:DataCollectUtilcom.foo.cash.util,app 内)→ sdk-service/upload/*(短信/通讯录/applist/device/wifi/gps 等,上报大数据 SDK 平台)。非独立模块


二、接口面

原生(MappedApi.java,实测 128 个常量,全明文)

按前缀分组(每组列代表接口,全集见 MappedApi):

前缀用途代表接口
user/登录/验证码/建客/绑卡/调额/设备/推送login、sendCaptcha、verifyCaptcha、logout、verifyToCreateNewCust4nc、adjustLimit4nc、bindFirebaseToken4nc
apply/进件/人脸/还款/提额/签约/补件faceDetection、saveBaseInfo、verifyPersonalInfo、loanApply、activeRepayment4nc、applyRiskPrice4nc、applySettleVoucher、saveSupplyInfo4nc
bank/绑卡/银行/BVN-NIN/流水增信queryBankList、bvnMatch(死接口)、ninMatch、paystackCharge、flutterwaveCharge、plutusBindCard*、statement、uploadStream
query/查询/额度/借据/还款计划/字典/配置queryStageInfo4nc、queryLoanList4nc、queryLoanDetils4nc、loanAPPConfig、weeklyAdjustLimitList4nc、faceRaiseResult4nc、queryAllowWithdraw4nc
cust/客户/产品/借据信息queryCustProductInfo、queryCustCardInfo、queryCustLoanInfo
coupon/优惠券queryCouponList4nc、queryIsUsedCoupon4nc
inner/v1/内嵌(核验方式/评分弹窗/Google reviewer)liveDetectionWay、starsPopup、queryGoogleReviewer
file-upload-service/文件/图片上传(大数据平台)upload/file、upload/image、v2/upload/file
tudcAux/注册检查user/exists

H5(basePath.js / fooloan.js,实测 68 项,8 分组)

分组用途
commonBlc通用(试算/路由/字典/配置/设备检测等)
withdraw提现(loanApply4merge、routeRedirect、loanApplyNoBindCardInit…)
repayment还款(generatePlutusWebOrder4nc、queryRepayPlanDetailList、submitRepayRequestion…)
bankAccount银行账户(verifyBankAccount4nc、addBankAccount4nc)
coupon优惠券
profileInfo资料(saveContactList 等)
recredit重授信(trigger / report / recreditResult)
bigDataUrl大数据平台(埋点 dc/、客诉增信 ccs/、S3、sdk-adapter/credit)

三、第三方 SDK 与采集

SDK用途
firebase-messaging / config / analytics推送 / 远程配置 / 分析
appsflyer (af-android-sdk 6.10.0)归因
stringfog:xor 3.0.0字符串 XOR 加密(发布构建防逆向)
lottie / luban / acp动画 / 图片压缩 / 权限

早期文档提到的 facebook SDK(社交登录/归因)当前已无依赖;社交登录字段在但未启用(见 01-注册登录)。

设备行为采集:DataCollectUtil → sdk-service/upload/*(短信/通讯录/applist/device/wifi/gps/电量/亮度/陀螺仪等,喂大数据风控)。


四、后端依赖(前端实证)

后端角色在后端仓库?
blc-service(= bns-gateway 业务网关)原生 + H5 主入口(含登录 user/)。模块前缀 user/apply/query/cust/bank/coupon/inner/plutus/recredit/tudcAux/config否(项目改造中,未推送)
cfk-service(= fcs 账务)直连例外:还款支付结果轮询在后端仓库(fcs)
大数据 / SDK 平台sdk-service/(采集)、dc/(埋点)、ccs/(客诉/增信/S3)、file-upload-service/sdk-adapter/credit(大数据授信)否(未推送)

关键结论:前端实证主要依赖 blc-service(BFF)+ 大数据 SDK 平台;登录已并入 blc-service(当前快照无独立 auth 服务/TGT/ST,与早期不同)。后端能力层(fcs/pmt/pfs/fds)原则上经 blc-service,唯还款支付结果直连 cfk-service。


五、接口路径事实(两层混淆)

  • 当前快照为混淆前明文:MappedApi/basePath 均真实路径,无运行时映射,梳理无需去混淆。
  • 两层混淆区分:① 前端源码字符串加密(发布构建 StringFog xor + proguard,防逆向,源码仍明文)② 后端网关路径↔token 映射(在 Apollo,前端查不到)。
  • 早期文档的 MainApi.java(token 版)已不存在;duro/hexokinase 现仅出现在 JsonStreetXX.java(街道地址 mock),与接口无关。

六、与口述现状的偏差(客观标注)

口述前端实证
现金贷 App 技术栈Flutter原生 Android(roovault) + H5(wp_h5 Vue2) 混合
登录认证独立认证服务(TGT/ST)当前并入 blc-service user/ + token(早期独立 auth 已不在)
注册验证码通道SMS + 语音登录 OTP 为 SMS + 语音(无 WhatsApp 登录通道;WhatsApp 仅用于 BVN 核验)
设备数据采集已采集短信/通讯录/applist/wifi/GPS/陀螺仪等(风控)

七、与 16 的关系

本篇=静态盘点(构成/接口面/SDK/依赖);16=动态交互时序(业务流程怎么调、分支怎么走)。两者互补:查”前端有什么”看 12,查”流程怎么跑”看 16。