支付域(plutus-pmt + plutus-ims + zoo)
| 领域 | 服务(实现) |
|---|---|
| 支付域 | plutus-pmt(支付通道/放款/扣款/Mandate)、plutus-ims(绑卡)、zoo(支付编排 MQ,缺口) |
实现级开发设计(开发就绪,含调用时序 / 入口契约 / 配置键 / 待确认清单)见 03-支付域-开发设计。
业务口径
- 支付域只负责资金通道执行、虚拟账户收款、在途挂账、合并出账、回调和结果回流,不维护手机分期业务状态机。
- 现金贷放款到客户账户;手机分期放款到门店/商户账户,收款账户由 bns 按
store_id从渠道商品域取得后传入账务/支付链路。 - 手机分期首付先进入我方虚拟账户;bns 判断首付到账后,再指令支付域把在途首付 D 与借据本金 P 合并一笔付款给商户。
- Mandate / 卡扣 / 绑卡复用现网能力;系统化对账不进 MVP,MVP 期间人工对账。
现状
pmt 编译可部署,已集成 15+ 尼日利亚通道(Paystack/Monnify/Flutterwave/Opay/Palmpay/Remita/Seerbit/Zestpay/InterSwitch/NIBSS 等),含放款、扣款、Mandate 代扣授权、虚拟账户收款(vitualAccountRepay)、通道路由切换、回调、对账补偿、争议、冲正、代偿。ims 绑卡完整。zoo 支付编排(MQ destination)为缺口。
MVP 目标
放款到客户(现金贷)与商户(手机分期)、扣款、Mandate 代扣,经 pmt 现有通道执行。
改造点清单
| 改造点 | 类型 | 复杂度 | 说明 |
|---|---|---|---|
| 放款到商户账户 | 改造 | 中 | 现网放款到客户,扩展商户收款方(手机分期) |
| 手机分期首付收款(虚拟账户) | 改造 | 中 | 客户首付付至我方虚拟账户(vitualAccountRepay 现网已有);pmt 只做收款 + 在途持有 + 到账通知 bns,放款时按指令合并在途首付 + 放款本金一笔给商户。不建首付业务状态机、不判断前置(首付订单状态 Signed→Paid 在 bns,见 01-业务编排域) |
| 手机分期多期代扣调度对接 | 改造 | 低 | Mandate / 卡扣能力已有,按期触发 |
| MVP 通道确认(Paystack / Monnify) | 复用 | 低 | 现网已集成 |
| zoo 支付编排缺口确认 | 待确认 | 中 | 放款/还款 MQ 编排,拿 bns/账务码时一并确认,缺则补 |
| 绑卡复用 | 复用 | 低 | ims 现网完整 |
| 对账系统化 | 排除 | — | MVP 人工对账 |
依赖
接收 信贷账务域 的放款/还款指令;放款结果回流账务建据/销账。
验收
现金贷放款到客户、手机分期首付经虚拟账户收款入账、放款到商户(含首付)、还款代扣(多期按期)均经 pmt 通道成功,结果回流账务。
通道能力实证(Paystack / Monnify)
代码实证(payment-middle):MVP 两家通道的放款 / 还款 / 查询 / 代扣全链路均已实现。
| 能力 | Paystack | Monnify |
|---|---|---|
| 放款(pay/transfer) | paystack.pay.url + pay.recipient.url(创建收款人) + PaystackPayment + transfer 回调 | monnify.pay.url + MonnifyPayment + disburse 回调 |
| 还款(repay/charge) | paystack.repay.url / partial.repay.url / batch.repay.url + PaystackChargeReq + charge 回调 | monnify.repay.url + MonnifyMandatePayment(代扣) + collection 回调 |
| 查询/对账 | pay.query / repay.query / balance.query | pay.query / repay.query / balance.query |
| 代扣授权 | Recurring charge(卡 token) | Mandate(NIBSS direct debit,含创建/debit/status) |
接入方式与改造判断
Paystack / Monnify 的放款 + 还款 + 查询 + 回调 + 代扣(Mandate)全链路代码已具备,配置全外置在 Apollo(URL + 按商户/渠道分组的密钥 Map,支持多商户/多品牌)。因此:
- 已有通道接入 = 配置为主,不改通道代码:Apollo 配生产 URL + 按 MVP 商户加密钥条目;Provider 侧开商户号、注册 callback、Paystack transfer recipient、Monnify reserved account / NIBSS mandate contractCode(非代码对接)。
- 真正的开发量在「放款到商户」的账务/编排串接(通道 transfer 支持任意收款账户,但把收款方设为商户是账务→支付指令的改造,见上「改造点清单」与 02-信贷账务域),不在通道本身。
外部供应商(MVP 选定)
pmt 现网已集成 15+ 通道;MVP 主用以下两家,支付域统一封装、支持路由切换。
Paystack
- 银行列表:https://paystack.com/docs/api/miscellaneous/#bank
- 账户姓名核验:https://paystack.com/docs/identity-verification/verify-account-number/#resolve-account-number
- 放款(Transfer):https://paystack.com/docs/transfers/creating-transfer-recipients/
- 卡扣(Recurring Charges):https://paystack.com/docs/payments/recurring-charges/
- 银行账户代扣(Direct Debit):https://paystack.com/docs/payments/direct-debit/
Monnify
- 单笔 / 批量转账:https://developers.monnify.com/docs/disbursements/single-transfers
- 银行账户代扣(Direct Debit):https://developers.monnify.com/docs/collections/direct-debits
- 卡扣(Card Tokenization):https://developers.monnify.com/docs/collections/recurring-payments
- 虚拟账号(Reserved Account):https://developers.monnify.com/docs/collections/customer-reserved-account
- 验证(账户名 / BVN / NIN):https://developers.monnify.com/api#tag/verification-apis