订单状态机与业务编排
1. 状态机原则
手机分期订单主状态只表达业务主链路,不把首付单、放款单、支付流水、锁机状态塞进主状态机。
首付收款、商户放款、支付通道处理使用子单状态承载;主订单只记录是否已经到达下一业务阶段。
风险正式审批支持“通过、退回补件、拒绝”三类结果。FixRequired 是补件中的可恢复状态:SA 在原订单补齐风险明确指定的资料后重提审批;降级报价仍为后续扩展口径。
2. 主状态定义
| 主状态 | 进入条件 | 退出条件 | 责任方 |
|---|
Drafting | SA 完成客户验证并创建草稿订单 | 正式提交进件 | bns |
Reviewing | bns 提交风控审批 | 审批返回通过或拒绝 | bns + res/fds |
FixRequired | 风险审批返回待补件 | SA 完成指定资料并重提,或客户放弃/超期 | bns + res/fds |
Approved | 审批通过 | 客户完成合同签署 | bns + fcs |
Signed | 合同签署完成 | 首付满足放行条件 | bns + pmt |
Paid | bns 确认首付实收金额大于等于应收首付,具备商户放款前置 | 商户放款成功、SA 交机确认、IMEI 反查机型一致且客户还款 App 登录成功 | bns + fcs + pmt |
Completed | 商户放款成功,SA 回填 IMEI,IMEI 反查品牌/型号与进件商品一致,客户完成还款 App 登录并交机 | 结清后保持完成态或进入贷后完成标识 | bns + fcs |
Closed | 拒绝、取消、超时、异常关闭 | 终态 | bns |
3. 状态流转
stateDiagram-v2
[*] --> Drafting
Drafting --> Reviewing: 提交进件
Reviewing --> Approved: 审批通过
Reviewing --> FixRequired: 审批退回补件
Reviewing --> Closed: 拒绝
FixRequired --> Reviewing: 补齐资料后重提
FixRequired --> Closed: 放弃/补件超期
Approved --> Signed: 合同签署
Approved --> Closed: 客户拒绝/超时
Signed --> Paid: 首付满足放行条件
Signed --> Closed: 签约失效/取消
Paid --> Completed: 商户放款成功 + 交机 + IMEI 反查机型一致 + 还款 App 登录成功
Paid --> Closed: 放款异常人工关闭
Completed --> [*]
Closed --> [*]
4. 子状态
4.1 首付单状态
| 状态 | 含义 |
|---|
INIT | 首付单已创建,未申请虚拟账户 |
ACCOUNT_CREATED | 订单级虚拟账户已创建 |
PAYING | 等待客户转账 |
PARTIAL_PAID | 已少付,待补足 |
PAID | 实收金额大于等于应收首付 |
FAILED | 收款失败 |
REVERSED | 已到账后冲正 |
CLOSED | 订单取消或签约失效,首付单关闭 |
4.2 商户放款单状态
| 状态 | 含义 |
|---|
INIT | 放款单已创建 |
PROCESSING | 支付域已提交通道 |
SUCCESS | 商户打款成功 |
FAILED | 商户打款失败,可重试或人工处理 |
UNKNOWN | 通道结果未知,等待查询或对账 |
REVERSED | 成功后发生冲正或撤销 |
5. 编排责任
| 编排动作 | 触发方 | 被调用方 | 说明 |
|---|
| 创建草稿订单 | PocketBuy SA | bns | 绑定 SA、门店、客户手机号、商品 |
| 提交审批 | bns | res/fds | 携带客户、商品、门店、客户选择方案、pfs 试算快照和三方结果 |
| 审批结果回调 | res/fds | bns | 推进到 Approved / FixRequired / Closed;退回时必须返回待补材料和补充原因 |
| 合同签署 | PocketBuy SA / 客户 | bns + fcs | 签署完成后进入 Signed |
| 创建首付单 | bns | bns + pmt | bns 记首付应收和业务状态,pmt 建虚拟账户 |
| 首付到账通知 | pmt | bns | pmt 收到款后通知 bns,bns 记实收并判断是否足额 |
| 发起商户放款 | bns | fcs | 首付足额后,bns 通知 fcs;fcs 按商品金额 S 调 pmt 打给商户 |
| 商户放款结果 | pmt | fcs -> bns | 成功后允许进入交机流程;失败保留在 Paid |
| 交机确认 | PocketBuy SA | bns | 必须校验放款成功,回填 IMEI,通过 IMEI 反查确认品牌/型号与进件商品一致,并确认客户还款 App 登录成功后 Completed |
6. 状态推进约束
| 约束 | 说明 |
|---|
Signed -> Paid | 只能由 bns 根据 pmt 到账通知确认首付实收金额大于等于应收首付后驱动,SA 不能手工直接推进 |
Paid -> Completed | 必须同时满足商户放款成功、IMEI 回填、IMEI 反查品牌/型号与进件商品一致、客户还款 App 登录成功 |
| 人脸有效期 | 人脸/活体结果当天有效;签约中断或跨日后重进签约,必须重新采集客户人脸和合照 |
| 照片来源 | 全流程照片只允许现场拍摄,不允许从相册上传 |
| 放款失败 | 订单保持 Paid,不允许交机 |
| 交机机型不一致 | 订单保持 Paid,不允许完成交机,需核对 IMEI、实物设备或进件商品信息 |
| 锁机 | 不参与任何 MVP 状态推进 |
| 重试 | 审批、首付到账、商户放款回调均需幂等 |
6.1 订单有效期
订单有效期用于限制 SA 和客户在关键阶段的推进窗口,避免长期占用审批结论、门店库存、报价快照和收款链路。
| 主状态 | 有效期 / 推进窗口 | 到期处理 | 说明 |
|---|
Drafting | 7 天 | 不允许继续原草稿;可由运营归档为 Closed | 草稿可中途恢复;超过 7 天后客户资料、商品价格和政策预览均需重新采集 |
Reviewing | 不由订单状态机控制 | 不自动关闭 | 审批时长由风控 控制;本期只等待通过或拒绝结果 |
FixRequired | 默认 7 个自然日(后台可配置) | 到期关闭为 Closed,关闭原因 fix_expired | 退回时间起算;SA 完成风险指定资料后重提回 Reviewing |
Approved | 72 小时 | 自动关闭为 Closed,关闭原因 expired | 审核通过后的签约有效期;超过 72 小时后审批结论和报价快照失效,需重新办单 |
Signed | 24 小时 | 自动关闭为 Closed,关闭原因 expired | 合同已签但首付未完成时,限制客户付款窗口;到期后首付单关闭 |
Paid | 24 小时 | 保持 Paid 并进入人工处理,必要时关闭为 Closed | 首付已到账后不建议自动关闭;需运营核查放款、交机或退款处理 |
Completed | 长期有效 | 不自动关闭 | 已完成交机并进入贷后,后续由借据和账务状态管理 |
Closed | 终态 | 不可重开 | 如需继续办理,必须新建订单并重新审批 |
7. 最小数据落库要求
主订单只保存跨流程需要稳定追溯的数据,首付单由 bns 保存明细,支付流水由 pmt 保存明细,商户放款单由 fcs/pmt 保存明细。
| 数据 | 必备字段 | 说明 |
|---|
| 手机分期订单 | 订单号、客户号、SA、门店、商户、SKU、售价、首付、期数、频率、主状态、报价快照 ID | 支撑状态流转、审批追溯、签约、放款和交机 |
| 交机 IMEI 校验 | IMEI、IMEI 反查记录 ID、反查品牌、反查型号、与进件商品品牌/型号比对结果、校验时间 | 支撑交机放行、异常核查和售后追溯 |
| pfs 报价快照引用 | 产品 ID、费率 ID、利率、费项、单期应还、总利息、还款计划摘要、合同模板版本、报价版本 | 详细快照由 fcs/pfs 管理,bns 保存引用和关键摘要 |
| 审批追溯引用 | approval_request_id、policy_id、policy_version、审批结果、审批版本、补件客户标记、补件轮次、补件单引用 | 支撑通过、退回、拒绝原因和后续审计 |