业务规则 — 非常规摊还
本页汇总了管辖非常规摊还的创建、清算与取消的各项不变量。当端点页面引用某个错误码、字段或需要额外上下文的条件时,请查阅本页。
参考日期(reference_date)
reference_date 由调用方在创建请求中提供,是本服务使用的唯一时间基准 — 系统从不使用 date.today()。所有依赖日期的逻辑(逾期分期的分类、现值的按比例折现、early_amortization 和 nominal_amount 可选分期的筛选)均以该字段为起点。向 security-service 查询现值时也会传入同一个 reference_date。
摊还类型
支持的 7 种类型,以及每种类型如何在 installment_list 的分期之间分配 amount:
| 类型 | 在所选分期之间的分配规则 | 是否允许部分支付 |
|---|---|---|
equal_amount | 按现值比例分配,先逾期后未来 | 否 |
first_installments | 依次应用于所选分期中(按到期日)的前 N 期,N = number_of_installments | 否 |
present_amount | 按分期显式指定;折扣顺序为利息 → 罚金 → 本金 | 否 |
matured_installments | 仅限已到期的分期,按到期日顺序 | 否 |
early_amortization | 单笔未来分期,金额不超过其现值 | 是 |
nominal_amount | 未来分期按名义价值(本金 + 利息)结清,按到期日顺序,不折现到现值 | 是 |
full_amortization | 按现值比例分配到所有所选分期,不做级联;每期全额结清 | 否 |
installment_list(整数 installment_number 数组)对所有类型均为必填 — 省略时返回 EVC100002。服务会将每个 installment_number 解析为 security 中对应的分期,并逐期查询所选分期的现值;amortization_type 只决定 amount 在这些分期之间的分配方式。
提前摊还(early_amortization)
early_amortization 允许部分支付(nominal_amount 同样允许)。以下所有条件均适用:
installment_list中恰好 1 期分期 — 否则返回EVC100015。- 目标分期不得已逾期 — 否则返回
EVC100016。 amount必须小于等于该分期的现值 — 否则返回EVC100017。- 允许部分支付。
paid_amount > 0 AND paid_amount < expected_amount这一状态是从相关列派生出来的;并没有新增状态枚举值。pending_conciliation同时表示"未支付"和"部分支付";只有当total_paid_amount >= total_expected_amount - tolerance_amount时才会转为paid。
按名义价值摊还(nominal_amount)
nominal_amount 按名义价值 — 到期日的本金加利息 — 结清未来分期,不将其折现到 reference_date 的现值。以下所有条件均适用:
installment_list中所有分期的due_date必须不早于reference_date— 已逾期的分期返回EVC100030。amount按到期日顺序分配,依次按名义价值覆盖每期分期直至用尽;最后一期被覆盖的分期可能只收到部分金额。amount必须小于等于所选分期的名义价值之和 — 否则返回EVC100031。- 清算时允许部分支付,派生状态与
early_amortization所述相同。
全额结清(full_amortization)
full_amortization 使用所声明的 amount 结清 installment_list 中的所有分期,与每期的现值无关:
amount按各期在reference_date的现值比例分配,不做级联 — 没有任何分期会没有份额。- 每个
event_conciliation创建时的expected_amount等于其份额,discount_amount等于现值与份额之差。 amount不能超过所选分期现值之和 — 否则返回EVC100035。- 清算时,支付该份额会在 security-service 中全额结清该分期:已付金额记为已付,差额记为该分期的折扣。
present_amount同样适用。
amount 与分配结果的一致 性
分配 amount 之后,服务会对所有类型按以下顺序校验结果:
amount大于已分配分期的现值之和 →EVC100035(按现值定价的类型;early_amortization和nominal_amount仍分别返回EVC100017和EVC100031)。- 任一所选分期的
expected_amount将为零 →EVC100034。不会创建带有零金额子事件的事件;请只选择amount能覆盖的分期。 - 已分配的
expected_amount之和与amount相差超过 R$ 0.01 →EVC100033。对于present_amount,amount必须等于现值之和减去total_discount。
expected_amount 以分为单位存储,四舍五入的余数计入最后一期,因此事件的 total_expected_amount 始终等于其子事件之和。
清算流程
内部编排。 非常规事件的清算在检测到付款时由 QI Tech(account-liquidation-api)执行 — 集成方在此环节无需调用任何端点,也不会收到专门针对状态转换的 webhook。以下规则描述的是内部行为,便于你理解创建之后发生了什么。
常规清算发出完整总额(规则 4)。 在 due_date 进行的常规清算仍会通过 SQS 发出该分期完整的 total_amount