05-灵活还款
PayLater 的还款能力覆盖正常还款、提前还款、月最低还款、账单分期、逾期重组、借新还旧(重协商)等方式。
"PayLater 的还款能力,覆盖从"正常全额"到"各种减压方式":正常还款、提前还款、月最低还款、账单分期、逾期重组、借新还旧(重协商)。"
多数还款能力由 flexCode 位加后台 switch 双重门控。
"多数能力由 **flexCode 位 + 后台 switch** 双门控。"
全额/部分还款:还清或还一部分当期账单,允许部分还款,适用于所有人。
"**全额/部分还款** | 还清或还一部分当期账单(允许部分还款)| 所有人"
提前还款(结清借据):一次结清整笔借据,金额=剩余本金+利息+违约金+月费。
"**提前还款(结清借据)** | 一次结清整笔借据 = 剩余本金 + 利息 + 违约金 + 月费 | 想省后续月费的人"
月最低还款:本月只还最小额,剩余自动转成下月起的新借据,免服务费。
"**月最低还款** | 本月只还最小额,剩余自动转成下月起的新借据(**免服务费**)| 当月手紧的人"
账单分期:当期全额结清并同时生成新借据按月还,本月不还、下月起,收服务费。
"**账单分期** | 当期全额"结清"+ 同时生成新借据按月还(本月不还、下月起,收服务费)| 想推迟的人"
逾期重组:将多笔借据合并成一笔更长期新贷、降低月供,逾期入口免管理费与罚息,面向已逾期/风险名单用户。
"**逾期重组** | 多笔借据合并成一笔更长期新贷、降月供;逾期入口免管理费与罚息 | 已逾期/风险名单用户"
借新还旧(重协商):后台直接给出协商减免方案(本金/费用/罚息按比例减),用户接受后按新计划还,面向深度逾期协商户。
"**借新还旧(重协商)** | 后台直接给协商减免方案(本金/费用/罚息按比例减),用户接受后按新计划还 | 深度逾期协商户"
还款页按用户身份分流:Y001(LimitUp)用户和提前结清走简版还款页(只有一个金额框),普通用户走常规还款页。
"系统按用户身份分流——**Y001(LimitUp)用户和提前结清走简版还款页**(只有一个金额框);**普通用户走常规还款页**"
全额卡金额可编辑,允许部分还款;校验只有两条:不能超过应还、不能超过钱包余额。
"全额卡金额可编辑,**允许部分还款**;校验只有两条——不能超过应还、不能超过钱包余额。"
当用户输入金额≥最低还款额但不是全额时,系统弹窗建议"试试最低还款",仅首次触发一次。
"若用户输的金额 ≥ 最低还款额但又不是全额,系统会**弹窗建议"试试最低还款"**(首次触发一次)。"
确认步骤:先 PIN 验证(IM3/BIMA 渠道走专用 OTP),再从 Allo Wallet 钱包扣款,还款方式只有钱包代扣一种。
"**确认**:PIN 验证(IM3/BIMA 渠道走专用 OTP)→ 从 Allo Wallet 钱包扣款(还款方式只有钱包代扣一种)。"
Y001用户还款成功时,系统并发查询质押杠杆率变化、还款提额奖励、活跃还款bonus三路奖励,凑齐后在成功页展示额度增长。
"还款成功那一刻,系统并发查询三路奖励——**质押杠杆率变化、还款提额奖励、活跃还款 bonus**——凑齐后在成功页直接展示"你的额度涨了多少""
还款方式仅支持 Allo Wallet 钱包代扣(REPAY_TYPE=VA),无其他渠道。
"还款方式 | 仅 Allo Wallet 钱包代扣(`REPAY_TYPE=VA`),无其他渠道"
最低还款资格条件:flexCode第3位+开关+应还≥门槛(默认500K)+最低额<账单余额;已部分还款则禁用。
"最低还款资格 | flexCode 第3位 + 开关 + 应还≥门槛(默认500K) + 最低额<账单余额;**已部分还款则禁用**"
最低还款免服务费、剩余转下月新借据;账单分期收服务费、当期结清并新借据下月起。
"最低 vs 分期 | 最低还款**免服务费**、剩余转下月新借据;账单分期**收服务费**、当期结清+新借据下月起"
借新还旧的新借据均走定价引擎试算,BIZ_SCENE区分MINI_REPAY/JXHJ/MULTI_SETTLE/OVERDUE_RESTRUCTURE四场景。
"借新还旧新借据 | 均走定价引擎试算(BIZ_SCENE 区分 MINI_REPAY/JXHJ/MULTI_SETTLE/OVERDUE_RESTRUCTURE 四场景)"
逾期重组门槛:≥2笔且≤10笔可重组借据;确认后不可变更;DPD[30,90]加维护窗口拦截。
"重组门槛 | ≥2 笔、≤10 笔可重组借据;确认后不可变更;DPD [30,90] + 维护窗口拦截(见 K-S-2607 节)"
协商方案由后台下发,有无/未生效/已生效三态;未生效弹窗选方案确认,生效后按月用普通还款还。
"协商方案 | 后台下发(无/未生效/已生效三态);未生效弹窗选方案确认,生效后按月用普通还款还"
最低还款/分期/重组的新借据均出RIPLAY合同并随单存档合同版本。
"合规 | 最低还款/分期/重组的新借据均出 RIPLAY 合同并随单存档合同版本"
Try minimum弹窗只在金额≥最低额且≠全额时弹一次,是唯一的主动交叉引导。
"**「Try minimum」弹窗是最低还款的导流器**:只在"金额≥最低额且≠全额"时弹一次"
一期功能(账单分期)为自动借新还旧并分期至最长期限,定位账单分期。
"一期功能(账单分期)= 自动借新还旧并分期至**最长期限**,定位"账单分期""
二期功能(月最低还款)为真正意义的月最低还款,借新还旧借据默认1期(可配N期),定位月最低还款。
"二期功能(月最低还款)= 真正意义上的月最低还款,借新还旧借据**默认 1 期(可配 N 期)**,定位"月最低还款""
月最低还款与账单分期均由风险名单配置(是否对客展示)加全局功能开关(是否启用,关则全员隐藏入口)双重控制,正常用户与逾期用户均可使用。
"两者均由"风险名单配置(是否对客展示)+ 全局功能开关(是否启用,关则全员隐藏入口)"双重控制;**正常用户与逾期用户均可使用**"
新还款方式的展示控制改用新增的Flex code大字段(不再依赖Market code)。Flex code共50位,初始化值000099009900000000000000000000,可由营销系统+PPLM批量/实时刷新指定用户该字段。
"控制方式从原先的 Market code 改为新增 **Flex code 大字段**(不再依赖 Market code 控制新还款方式的展示)。Flex code 共 50 位,初始化值 `000099009900000000000000000000`,可由营销系统 + PPLM 批量/实时刷新指定用户的该字段。"
Y001(LimitUp)用户路由到基础还款页 PAY_LATER_SERVICE_REPAYMENT,无最小还款卡。
"`Y001`(LimitUp) → `PAY_LATER_SERVICE_REPAYMENT`(**基础还款页**,无最小还款卡)"
提前还款(EARLY_REPAYMENT)同样走基础还款页 PAY_LATER_SERVICE_REPAYMENT。
"**`EARLY_REPAYMENT`(提前还款)同样走基础还款页** `PAY_LATER_SERVICE_REPAYMENT`"
非Y001、非提前还款的其余用户路由到常规还款页 PAY_LATER_SERVICE_REPAYMENT_REGULAR,有最小还款卡。
"其余(非 Y001、非提前还款)→ `PAY_LATER_SERVICE_REPAYMENT_REGULAR`(**常规还款页**,有最小还款卡)"
正常还款(全额/部分)要求输入金额≤余额且≤应还,经密码后出结果;Y001用户成功后做额度重算。
"输入金额 ≤ 余额 & ≤ 应还 → 密码 → 结果。Y001 成功后做额度重算"
提前还款(结清借据)的结清金额=剩余本金+利息+提前还款违约金+月管理费,按字段拆行展示。
"结清剩余本金 + 利息 + 提前还款违约金 + 月管理费"
月最低还款门槛isMinimumRepaymentAllow:需flexCode第3位=1、minimumRepaymentSwitch=Y、应还≥minimumRepaymentMinAmount、且最小额<账单余额。
"flexCode第3位=1 + `minimumRepaymentSwitch=Y` + 应还≥`minimumRepaymentMinAmount` + 最小额<账单余额"
月最低还款本月只还最小额(本金+利息),剩余转成下月起的新借据,免服务费。
"本月只还最小额(本金+利息),**剩余转成下月起的新借据**,免服务费"
账单分期门槛:repayByInstallmentSwitch=Y(叠加flexCode第1位)。
"门槛 `repayByInstallmentSwitch=Y`(+ flexCode第1位)"
账单分期本月全额结清当期,同时生成新借据按期还(本月不还、下月起)。
"本月全额结清当期 + 同时生成新借据按期还("本月不还,下月起")"
逾期重组门槛isAdjustRepayAllow:需flexCode第19位∈{1,2}且loanRestructuringSwitch=Y。
"`isAdjustRepayAllow`:flexCode第19位∈{1,2} + `loanRestructuringSwitch=Y`"
逾期场景的重组在门槛外额外叠加后台loanRestructuringOverdueSwitch carve-out,且账户逾期天数须落在DPD窗口[30,90]。
"**+ 账户逾期天数落在 DPD 窗口 [30,90]**"
逾期重组首页入口在日终维护窗口23:30–24:00(服务端时间)内被拦截。
"首页入口在**日终维护窗口 23:30–24:00(服务端时间)内被拦截**"
逾期重组可选≥2笔且≤10笔可重组借据合并成一笔更长期限的新贷,降低月供。
"选≥2笔可重组借据(≤10笔)合并成一笔更长期限的新贷,降月供"
借新还旧/重协商:针对逾期或有压力账单,后台提供协商分期方案,用户接受后按新计划偿还。
"针对逾期/有压力账单,后台提供协商分期方案、用户接受后按新计划偿还"
月最低还款门槛:账单金额须≥最小门槛(默认500K,可配置),低于门槛不支持月最低还款。
"账单金额需 ≥ 最小门槛,默认 **500K**,门槛金额可配置;低于门槛不支持月最低还款"
月最低还款额=X%指定期数借据本金+其他期数借据当期应还本金+X%当期应还利息+额外功能服务费(如有)+逾期罚息(如有)。
"月最低还款额 = `X% 指定期数借据本金` + `其他期数借据当期应还本金` + `X% 当期应还利息` + `额外功能服务费(如有)` + `逾期罚息(如有)`"
X%指定期数借据本金默认10%,默认适用1期及3期借据(仅还当期账单里1期/3期借据出账本金的10%),比例与适用期数均可配置。
"默认 **10%**,默认适用 **1 期及 3 期**借据(即仅还当期账单里 1 期 / 3 期借据出账本金的 10%);比例与适用期数均可配置"
X%当期应还利息默认100%应还,可配置0%–100%;此处利息含全部应收fee(admin fee+service fee)。
"默认 **100%** 应还,可配置 0%–100%。**此处"利息"含全部应收 fee(admin fee + service fee)**"
额外功能服务费可配置,金额可配为固定值或本次最低还款借新还旧金额的X%。
"月最低还款功能可配置额外功能服务费,金额可配(固定值,或为本次最低还款借新还旧金额的 X%)"
月最低还款info弹窗的功能服务费行在前端被注释屏蔽,当前版本不向客户展示该行;该费用仍参与后台计算口径。
"在前端被注释屏蔽(`repayment/regular/Index.vue:611-615`),当前版本不向客户展示该行"
借新还旧期数由后台coreTransTryLoan试算返回,可选期数与默认预选项均由后台试算结果驱动,前端不读Flex第13–16位。
"可选期数与默认预选项均由后台返回的试算结果驱动(与转分期、支付分期同一套"档位由后台返回"的模式),前端不读 Flex 第 13–16 位"
Flex code第17位为新借据头息率,取值0–9对应0%–9%。
"Flex code **第 17 位**为新借据头息率,取值 0–9 对应 0%–9%"
判断当前可用额度是否覆盖剩余应还需加头息,即当前可用额度≥剩余应还账单金额×(1+头息费率)。
"`当前可用额度 ≥ 剩余应还账单金额 × (1 + 头息费率)`"
还款交易完成后调用实时调额引擎,先调升、后调降两次调用,自动将客户额度恢复至之前的取现额度。
"系统先调升、后调降两次调用,自动将客户额度恢复至之前的取现额度"
额度恢复完成后,实时调额引擎在结清当期账单后判断是否更新Flex code(对Flex code下标)。
"额度恢复完成后实时调额引擎自动对 Flex code 下标(结清当期账单后由实时调额引擎判断是否更新 Flex code)"
若用户已针对账单部分还款,则月最低还款功能不可用,置灰并给出不可用原因提示。
"若用户已针对账单**部分还款**,则月最低还款功能**不可用,置灰并给出不可用原因提示**"
选择全额还款时,若支付金额≥最低还款金额且≠账单金额,则在最低还款金额下出现对应提示。
"选择全额还款时,若支付金额 ≥ 最低还款金额且 ≠ 账单金额,则在最低还款金额下出现对应提示"
最小还款额已入账但后台未自动还清剩余待还时,提示用户将本期剩余待还结清。
"最小还款额已入账但后台未自动还清剩余待还 → 提示用户将本期剩余待还结清"
Limit up(Y001)用户默认隐藏月最低还款功能,走基础还款页、无最小卡。
"**Limit up(Y001)用户默认隐藏此功能**(与代码版路由分流一致:Y001 走基础还款页,无最小卡)"
首页月最低还款入口由isMinimumRepaymentEntryVisible门控,需同时满足多项条件入口才可见。
"需**同时满足**以下条件入口才可见"
最小还款功能可用的条件之一:flexCode 第 3 位(月最低还款可用位)命中。
"flexCode **第 3 位** 命中(月最低还款可用位)"
最小还款功能可用的条件之一:后台开关 minimumRepaymentSwitch 开启。
"后台开关 `minimumRepaymentSwitch` 开启"
最小还款功能可用的条件之一:应还金额须大于等于最小还款门槛 minimumRepaymentMinAmount。
"应还金额 ≥ 最小还款门槛 `minimumRepaymentMinAmount`"
点击最小还款入口后,经 preselectMinimum 三段链路进入常规还款页并自动预选最小还款。
"入口点击后通过前述 `preselectMinimum` 三段链路"
借新还旧通过 coreTransTryLoan 发起,业务场景 BIZ_SCENE=MINI_REPAY、LOAN_CODE=9022。
"借新还旧通过 `coreTransTryLoan`、`BIZ_SCENE=MINI_REPAY, LOAN_CODE=9022` 发起"
当用户为已确认逾期重组用户且有对应逾期方案时,首页展示"新还款计划"入口。
"首页判断用户是否为"已确认逾期重组用户且有对应逾期方案",是则展示"新还款计划"入口"
重组后新还款计划应还金额 = 剩余未还本金×(1−本金减免比例) + 剩余未还利息及罚息×(1−利息及罚息减免比例)。
"新还款计划应还金额 = `剩余未还本金 × (1 − 本金减免比例)` + `剩余未还利息及罚息 × (1 − 利息及罚息减免比例)`"
入口弹窗中可选期数从小到大排列、默认选最小一期,每期应还=重组后应还总额÷选择期数。
"可选期数(从小到大排列,默认选最小一期),每期应还 = 重组后应还总额 ÷ 选择期数"
确认重组方案后不可变更的例外:风险重新针对该用户上传新的重组计划时可变更。
"**确认重组方案后不可再变更**,除非风险重新针对该用户上传新的重组计划"
还款计划按重组期数分期,首期为逾期重组计划里最近一个月账单的最后还款日。
"还款计划按重组期数分期,**首期 = 逾期重组计划里最近一个月账单的最后还款日**"
点击 repay now 进入还款页,每月还款金额作为默认值带入。
"点击 repay now 进入还款页,每月还款金额作为默认值带入"
命中逾期重组预付门槛时,用户不直接进入正式重组页,而是先进入预付引导过渡页,再引导去预付还款。
"命中逾期重组预付门槛时,用户不会直接进入正式重组页,而是先进入预付引导过渡页"
重组非自动完成:预付只解锁/推进新还款计划,支付后仍需进入正式重组流程设置新计划。
"重组非自动完成**:预付只是解锁/推进新还款计划;支付后仍需进入正式重组流程设置新计划"
预付引导页展示的 Remaining total amount 取剩余应还总额 ACCT_SUM_PAID_OUT(本金+利息+罚息+费用)。
"`Remaining total amount` = **剩余应还总额 `ACCT_SUM_PAID_OUT`(本金+利息+罚息+费用,Personal Center call #2)**"
K-S-2607 修正只改展示值,重组试算 coreTransTryLoan 的 AMOUNT 仍使用剩余本金 accountPrinAmt(ACCT_PRIN_PAID_OUT)。
"只改展示值,重组试算 `coreTransTryLoan` 的 `AMOUNT` 仍用剩余本金"
New repayment plan 取 coreTransTryLoan 返回方案,默认展示最长期(月供最低),格式 RpY x Nmonths。
"`New repayment plan` = `coreTransTryLoan` 返回方案,默认展示最长期(月供最低),格式 `RpY x Nmonths`"
预付还款页复用现有还款页,仅在 restructurePrepay=1 预付路径下定制,对普通还款零影响。
"预付还款页复用现有还款页,只在 `restructurePrepay=1` 预付路径下定制,普通还款零影响"
逾期重组入口在原有门槛之上叠加账户级逾期天数窗口:overdueDays 须落在 [restructureOverdueMinDpd, restructureOverdueMaxDpd] 双闭区间,前端默认 30/90。
"`accountInfo.overdueDays`(后端 `OVERDUE_DAYS`)须落在 `[restructureOverdueMinDpd, restructureOverdueMaxDpd]`(**双闭区间**,前端默认 30/90"
逾期重组入口的窗口/门槛判断只对逾期分支生效;非逾期的转分期路径不受影响,isOverDue=false 时窗口判断恒过。
"只 gate 逾期分支,非逾期的转分期路径不受影响(`isOverDue=false` 时窗口判断恒过)"
OVERDUE_DAYS 缺失时按 fail-closed 处理:两个比较均不成立,逾期重组入口隐藏。
"`OVERDUE_DAYS` 缺失时 `Number(undefined)=NaN` → 两个比较都不成立 → 入口隐藏,属有意为之"
核心系统日终批处理窗口内逾期重组交易必失败,因此前端在入口处进行拦截。
"核心系统日终批处理窗口内逾期重组交易必失败,故前端在入口处拦截"
日终维护拦截窗口为服务端时间 [23:30, 24:00),含头不含尾、不支持跨午夜;边界可由后台 restructureMaintenanceStartTime/EndTime 免发版调整,前端默认 '2330'/'2400'。
"**窗口**:`[23:30, 24:00)` **服务端时间**,含头不含尾,不支持跨午夜;边界可由后台 `restructureMaintenanceStartTime/EndTime`(`HHmm` 字符串)免发版调整,前端默认 `'2330'/'2400'`"
服务端时间来源:app 启动时从 ifes-ams getCommonPage 下发的 currentServerTime 算一次时钟偏移;字段缺失或不可解析时偏移=0,退化为设备时间(fail-open),后端交易层仍在窗口内硬拦截。
"app 启动时从 ifes-ams `getCommonPage` 下发的 `currentServerTime`(`DD/MM/YYYY HH:mm:ss`)算一次时钟偏移;字段缺失/不可解析时偏移=0 退化为设备时间(**fail-open**,后端交易层仍是窗口内的硬拦截)"
维护窗口内点击逾期重组入口弹底部弹窗(标题 The function is not available / Menu tidak tersedia,按钮 Got it),不发生任何跳转;窗口外正常路由至 new-loan?source=overdue。
"窗口内点入口弹底部弹窗(红 X,标题 `The function is not available` / `Menu tidak tersedia`,副文案"系统维护请明天再试",按钮 `Got it`,点遮罩也可关),**不发生任何跳转**;窗口外正常路由 `new-loan?source=overdue`"
维护窗口拦截仅作用于首页两个逾期重组入口(逾期 banner 的 Adjust CTA 与 Adjust Repayment Plan 菜单格);非逾期 Adjust 流程与账单页入口不在范围内。
"仅首页两个逾期重组入口(逾期 banner 的 Adjust CTA + Adjust Repayment Plan 菜单格,共用 `onAdjustRepayClicked`);**非逾期 Adjust 流程与账单页入口不在本期范围**"
回滚方式:后台把维护窗口配成 start ≥ end(如都 '0000')即永不命中,免发版。
"后台把窗口推成 start ≥ end(如都 `'0000'`)即永不命中,免发版"
维护窗口边界行为:23:29:59 放行、23:30:00 拦截、23:59:59 拦截、00:00:00 放行。
"23:29:59 放行 / 23:30:00 拦 / 23:59:59 拦 / 00:00:00 放行"
修正后:逾期重组 banner 提到 overdueTimes 计数分支之上,overdueTimes>1 的多次逾期用户也正常展示 Adjust CTA。
"逾期重组 banner 被 `overdueTimes` 计数分支挡掉、多次逾期用户看不到 CTA → banner 提到分支之上,`overdueTimes>1` 也正常展示"
修正后:账单页 SIKLUS TAGIHAN 与 DETAIL TAGIHAN 的 Adjust CTA 与首页同款走 needRestructurePrepay → PrepayIntro,不再绕过预付步骤。
"SIKLUS TAGIHAN(`bill/OverDues.vue`)与 DETAIL TAGIHAN(`bill/components/BillCard.vue`)的 Adjust CTA 直接推 NewLoan、绕过首页强制的预付步骤 → 与首页同款走 `needRestructurePrepay` → PrepayIntro"
修正后:PrepayIntro「Remaining total amount」展示剩余应还总额 ACCT_SUM_PAID_OUT(本金+利息+罚息+费用),试算 AMOUNT 不变仍用剩余本金。
"展示剩余**本金** `ACCT_PRIN_PAID_OUT` → 展示剩余**应还总额** `ACCT_SUM_PAID_OUT`(本金+利息+罚息+费用);试算 `AMOUNT` 不变仍用剩余本金"
修正后:逾期直入重组的提交本金 LOAN_INIT_PRIN 改取精确剩余本金 ACCT_PRIN_PAID_OUT,与展示金额、试算入参三者对齐;MULTI_SETTLE 分支不变。
"`LOAN_INIT_PRIN` 取试算回显值 → 改取精确剩余本金 `ACCT_PRIN_PAID_OUT`(residualPrincipal),与展示金额、试算入参三者对齐;MULTI_SETTLE 分支不变"
修正后:重组失败 Try Again 路由对逾期直入用户回 NewLoan?source=overdue(与入口一致),不再一律回多借据选择页。
"一律回多借据选择页(adjust-repayment-plan)→ 逾期直入用户回 `NewLoan?source=overdue`(与入口一致)"
预付门槛判定来源改为专用 AMS 预付状态接口 restructurePrepayStatus;命中条件为 restructurePrepaySwitch='Y' 且 prepayRequired='Y' 且 prepayStatus≠'PAID'(PENDING/VERIFYING 均拦);开关关或接口缺失则不设门槛直接放行。
"预付 gate 的输入改从专用 AMS 预付状态读接口(`payLaterRepayment.restructurePrepayStatus`)取,**不再来自 negotiate**;命中 = 总开关 `restructurePrepaySwitch='Y'` 且 `prepayRequired='Y'` 且 `prepayStatus≠'PAID'`(PENDING/VERIFYING 均拦);开关关/接口缺失 = 不设门槛直接放行"
白名单用户当期账单金额=0 或账单已还清、且下一个未出账单金额>0 时,模块展示下个未出账账单金额并新增展期入口,点击进入现有展期流程;其他账单状态按原有展示。
"当白名单用户**当期账单金额 = 0 或账单已还清**、且**下一个未出账单金额 > 0** 时,模块展示下个未出账的账单金额,并在此模块下新增**展期入口**,点击进入现有展期流程;其他账单状态按原有展示"
展期入口与 06 转分期底层是同一个 EXTENSION(展期)能力,走 TXN_CODE=EXTENSION / TRANSACTION_TYPE='EX',两个入口复用同一笔后台交易。
"转分期走 `TXN_CODE=EXTENSION` / `TRANSACTION_TYPE='EX'`(`service/convert/Select.vue:206`、`service/convert/List.vue:84`)"
PayLater 提前还款费(Biaya Pelunasan dipercepat)为提前结清金额的 8%。
"**PayLater 提前还款费(Biaya Pelunasan dipercepat)= 提前结清金额的 8%**"
逾期费(Biaya Keterlambatan)为逾期账单金额的 0.3%/日;账单到期日为每月 10 日。
"逾期费(Biaya Keterlambatan)= 逾期账单金额的 **0.3%/日**;账单到期日为每月 **10 日**"
Instant Cash 的提前还款费为 10%(与 PayLater 的 8% 不同)。
"Instant Cash 的提前还款费为 **10%**(与 PayLater 的 8% 不同)"
最小还款能力门控:flexCode[2]==='1' 且 minimumRepaymentSwitch='Y' 且满足金额门槛。
"最小还款 | `flexCode[2]==='1'` + `minimumRepaymentSwitch='Y'` + 金额门槛"
账单分期能力门控:repayByInstallmentSwitch='Y' 且 flexCode 第 1 位命中。
"账单分期 | `repayByInstallmentSwitch='Y'`(+ flexCode第1位)"
逾期重组能力门控:flexCode.charAt(18)∈{'1','2'} 且 loanRestructuringSwitch='Y' 且满足逾期 carve-out 且 DPD∈[30,90](仅逾期分支);首页入口另受维护窗口 23:30–24:00 拦截。
"逾期重组 | `flexCode.charAt(18)∈{'1','2'}` + `loanRestructuringSwitch='Y'` + 逾期 carve-out + **DPD∈[30,90](仅逾期分支,K-S-2607)**;首页入口另受维护窗口 23:30–24:00 拦截"
逾期 carve-out:逾期场景在读 Flex 第 19 位 + loanRestructuringSwitch 之上额外叠加 loanRestructuringOverdueSwitch,isAdjustRepayAllow 先判断 isOverDue && loanRestructuringOverdueSwitch==='N' 时返回 false,再读位段。
"逾期场景在此之上**额外**叠加后台开关 `loanRestructuringOverdueSwitch` carve-out——`isAdjustRepayAllow`(`home/Index.vue:783-787`)先 `if(isOverDue && loanRestructuringOverdueSwitch==='N') return false`,再读位段 + `loanRestructuringSwitch`"
loanRestructuringOverdueSwitch=N 时即便 Flex 位段命中也禁用逾期入口;它是叠加的 carve-out,不取代位段读取。
"该开关=N 时即便位段命中也禁用逾期入口,但它是叠加的 carve-out,不取代位段读取"
各类还款都需接合同(RIPLAY)iframe 并做密码验证(COMMON_PASSWORD_VERIFY)。
"各还款都接合同(RIPLAY)iframe + 密码验证(`COMMON_PASSWORD_VERIFY`)"
两个还款页分流:isY001 或提前结清走基础页;否则走常规页。
"分流在 `utils/view.js:96-160`(isY001 或提前结清 → 基础页;否则 → 常规页)"
基础还款页面向 Y001 与提前结清场景,常规还款页面向非 Y001 的账单还款
"面向 | Y001 / 提前结清 | 非 Y001 账单还款"
常规还款页当输入金额≥最低还款额且≠全额时首次弹出「Try minimum」弹窗
"「Try minimum」弹窗(金额≥最低且≠全额时首次弹)"
基础还款页验证走 PIN(scene=OTHER),IM3/BIMA 客群走 IOH OTP(category=REPAYMENT);常规还款页验证走 PIN
"验证 | PIN(scene=OTHER,category 按提前结清区分);**IM3/BIMA 走 IOH OTP**(category=REPAYMENT)| PIN"
基础还款页提交调用 coreTransApplyRepay,参数含 TXN_CODE(BillRepay/IOURepay)、REPAY_TYPE='VA'、TOT_AMOUNT、session,LOAN_LIST 仅结清时携带
"提交 | `coreTransApplyRepay{TXN_CODE: BillRepay/IOURepay, REPAY_TYPE:'VA', TOT_AMOUNT, session, LOAN_LIST(仅结清带)}`"
常规还款页全额提交同基础页但不带 LOAN_LIST,最低还款走 coreTransMinimumRepayApply
"全额同左(无 LOAN_LIST);最低走 `coreTransMinimumRepayApply`"
基础还款页结果轮询调用 coreTransQueryRepayResult,2s×8,Loading 15s
"轮询 | `coreTransQueryRepayResult{ORI_BIZ_SEQ_NO, ORI_MER_BIZ_NO}` 2s×8(Loading 15s)"
常规还款页轮询同接口但 Loading 30s,最低还款走 coreTransRepayInstallmentResult,2s×6
"同接口(Loading 30s);最低还款走 `coreTransRepayInstallmentResult{FLOW_NO}` 2s×6"
常规还款页最低还款成功页为 COMMON_RESULT_BILL_REPAY,含五态 status 1/2/3/5/6
"全额 `COMMON_RESULT` / 最低 `COMMON_RESULT_BILL_REPAY`(五态 status 1/2/3/5/6)"
还款轮询以 REPAY_STATUS='S' 且 MARKET_CODE_HANDLE_STATUS='END'(调额引擎处理完)为成功终态,PENDING 继续轮询
"轮询以 `REPAY_STATUS='S'` **且** `MARKET_CODE_HANDLE_STATUS='END'`(调额引擎处理完)为成功终态,PENDING 继续轮"
Y001 还款成功后 Promise.all 并发三路奖励查询,凑齐后随成功页展示
"成功后 `Promise.all` 并发三路,凑齐后随成功页展示"
杠杆变化奖励仅当 MARKET_CODE_HANDLE_STATUS='END' 时调用 coreTransFlexibleLimitPledgeLeverageLimitInfo,带新旧 marketCode
"仅 `MARKET_CODE_HANDLE_STATUS='END'` 时调 `coreTransFlexibleLimitPledgeLeverageLimitInfo{marketCode: NEW_MARKET_CODE, originalMarketCode: ORI_MARKET_CODE}`"
还款提额奖励轮询 coreTransFlexibleLimitHistory(BIZ_TYPE='PayLaterRepayment') 1s×4,校验 ADJ_TIME 是当日且 TRAN_AMT>0
"**还款提额奖励**:轮询 `coreTransFlexibleLimitHistory{BIZ_TYPE:'PayLaterRepayment'}` 1s×4,校验 `ADJ_TIME` 是当日且 `TRAN_AMT>0`"
活跃还款 bonus 轮询 coreTransFlexibleLimitHistory(BIZ_TYPE='ActiveRepayment'),规则同还款提额奖励
"**活跃还款 bonus**:同上 `BIZ_TYPE:'ActiveRepayment'`"
还款成功页可弹出会员升级引导,跳转 PAY_LATER_FLEXIBLE_LIMIT_MEMBER
"成功页可弹会员升级引导(→ `PAY_LATER_FLEXIBLE_LIMIT_MEMBER`)"
提前结清构成由 coreTransQueryPayOffInfo 返回,含本金、利息、罚息、违约金、月费五项
"**提前结清**:`coreTransQueryPayOffInfo{REF_NBR_LIST}` 返回结清构成——本金 `LOAN_PAID_OUT_PRIN_AMT` / 利息 `LOAN_PAID_OUT_INT_AMT` / 罚息 `LOAN_PAID_OUT_PENALTY_AMT` / 违约金 `LOAN_PAID_OUT_VIOLATION_AMT` / 月费 `LOAN_PAID_OUT_INST_HANDLE_FEE_AMT`"
账单分期试算 BIZ_SCENE='JXHJ' 且 AMOUNT=账单额;月最低还款试算 BIZ_SCENE='MINI_REPAY' 且 AMOUNT='0'(额度由后端算)
"试算 | `BIZ_SCENE='JXHJ'`,AMOUNT=账单额 | `BIZ_SCENE='MINI_REPAY'`,**AMOUNT='0'**(额度由后端算)"
账单分期提交调 coreTransRepayInstallmentApply(独立 Confirm 页+RIPLAY+TnC);月最低还款提交调 coreTransMinimumRepayApply(常规页内联,额外带 MINI_REPAY_AMT)
"提交 | `coreTransRepayInstallmentApply`(独立 Confirm 页 + RIPLAY + TnC)| `coreTransMinimumRepayApply`(常规页内联,额外带 `MINI_REPAY_AMT`)"
账单分期收服务费并展示 service fee;月最低还款免服务费,卡上带 no_service_fee 徽标
"服务费 | 收(展示 service fee)| **免**(卡上 no_service_fee 徽标)"
账单分期与月最低还款共用 coreTransRepayInstallmentResult 轮询,CODE=80530014 继续轮询、80530015 为在途态
"结果 | 共用 `coreTransRepayInstallmentResult{FLOW_NO}` 轮询;`CODE=80530014`→轮询、`80530015`→在途态"
分期结果态 FLOW_STATUS:PROC_SUCC 成功、WAIT 处理中、CASH_FAIL 放款失败、REPAY_FAIL 还款失败(放款成功还款失败为 one more step 部分态)
"结果态 | FLOW_STATUS:PROC_SUCC 成功 / WAIT 处理中 / CASH_FAIL 放款失败 / REPAY_FAIL 还款失败(放款成功还款失败=「one more step」部分态)"
逾期重组多借据选择页调 coreTransLoanRestructuringList(QUERY_LOAN_STATUS='UN_PAID_OUT') 拉列表,按 eligibleForRestructure='Y' 分可选/不可选
"`coreTransLoanRestructuringList{QUERY_LOAN_STATUS:'UN_PAID_OUT'}` 拉列表,按 `eligibleForRestructure='Y'` 分可选/不可选"
MULTI_SETTLE 新贷金额为选中借据本金合计;OVERDUE_RESTRUCTURE 新贷金额为残余本金 acctPrinPaidOut
"金额 | 选中借据本金合计 | 残余本金 `acctPrinPaidOut`(Personal Center call#2)"
MULTI_SETTLE 提交调 coreTransRepayInstallmentApply(200029)带 ORIG_STMT_BAL_AMT+逐笔 LOAN_LIST;OVERDUE_RESTRUCTURE 提交调专用 coreTransOverdueRestructuringApply(200037)且 LOAN_LIST=null
"提交接口 | `coreTransRepayInstallmentApply`(200029),带 `ORIG_STMT_BAL_AMT`+逐笔 `LOAN_LIST` | **专用 `coreTransOverdueRestructuringApply`(200037)**,`LOAN_LIST=null`"
OVERDUE_RESTRUCTURE 入口有逾期减免弹窗,feeWaivedAmt=账户利息+罚息合计;MULTI_SETTLE 无入口弹窗
"入口弹窗 | 无 | 逾期减免弹窗(`feeWaivedAmt` = 账户利息+罚息合计)"
逾期重组结果页四态:成功(含重组前后账单对比)、处理中、失败(Try Again 逾期回 NewLoan、多选回选择页)、one-more-step(新贷已放款但还款失败,引导去还款)
"**结果页四态**(`AdjustRepaymentPlanResult`):成功(含重组前后账单对比)/ 处理中 / 失败(**Try Again**:逾期回 NewLoan、多选回选择页——K-S-2607 修正)/ **one-more-step**(新贷已放款但还款失败,引导去还款)"
预付回流闭环流程:needRestructurePrepay 满足(开关+prepayRequired='Y'+状态≠PAID)→ PrepayIntro → 预付还款走常规还款页(restructurePrepay='1')→ 成功调 restructurePrepaySettle 核销 → 成功页续到 NewLoan?source=overdue
"**预付回流闭环**:`needRestructurePrepay`(开关+`prepayRequired='Y'`+状态≠PAID)→ PrepayIntro → 预付还款走**常规还款页**(`restructurePrepay='1'` 定制文案)→ 成功时调 `restructurePrepaySettle`(带双流水)核销 → 成功页「Restructure my plan now」直接续到 `NewLoan?source=overdue`"
预付状态四值 PENDING/VERIFYING/PAID/EXPIRED,VERIFYING 状态轮询 5s×12
"预付状态四值 `PENDING/VERIFYING/PAID/EXPIRED`,VERIFYING 轮询 5s×12"
借新还旧方案状态三值 promiseResult:NO_PLAN 无、UNACTIVE_PLAN 未生效(首页入口卡→弹窗选方案)、ACTIVE_PLAN 已生效(→方案详情页)
"方案状态三值(`promiseResult`):`NO_PLAN` 无 / `UNACTIVE_PLAN` 未生效(首页入口卡 → 弹窗选方案)/ `ACTIVE_PLAN` 已生效(→ 方案详情页)"
接受协商方案调 negotiateRepaymentPlanConfirm,减免维度为本金/费用/罚息三个比例
"接受方案 = `negotiateRepaymentPlanConfirm{promiseCode, version, term, reducePrinRatio, reduceFeeRatio, reducePenaltyRatio}`——**减免维度是本金/费用/罚息三个比例**"
协商方案生效后每月还款复用普通 BillRepay,方案详情页 Repay 按钮带下期金额进还款页
"生效后每月还款**复用普通 BillRepay**(方案详情页 Repay 按钮带下期金额进还款页)"
还款段对外上报仅入口级(VIEW_BILLING_CYCLE_PAGE 及 REPAY 点击类),还款成功无对外上报、全链路无 GPS 上报
"对外上报仅入口级:`VIEW_BILLING_CYCLE_PAGE`、`BILLING_CYCLE_REPAY_THIS_BILL_CLICK/NO_CLICK`、`BILLING_CYCLE_REPAY_NOW_CLICK/NO_CLICK`;**还款成功无对外上报、全链路无 GPS 上报**"