为了解决平台的资金"二清"问题,支付机构和银行开始推出各自的"分账系统"。尽管在实现方式上均有不同,但最终的效果还是大都一致。因此本人以自己在支付机构从0-1的打造"分账系统",来分享自己的分账系统项目方法论。 1. 是否有建立标准规范? 参数名的命名规范; 请求、应答、异步通知接口的参数规范; 响应码的规范,是否有统一响应码,是否有一个意思但是不同的响应码; 单位、字符长度的规范性; 加密方式的规范性。 2. 是否有建立监督机制? 需求是否合理,是否经过讨论? 技术实现上是否灵活,是否有多人评估? 接口文档的样例是否真实验证过,还只是随机修改参数? 代码上线前,是否有代码复核机制? 上线之后是否建立全面预警机制? 上线之后是否有跟进商户反馈,来促进产品迭代? 是否进行培训,是否建立一套运营机制? 一、分账方入网 1. 接口添加 是否有接口请求记录? 是否有日志查询? 2. 系统认证 一旦添加分账方是否一定创建认证订单? 而认证完成是否一定更新商户状态? 更新失败了怎么办? 认证失败是否会将失败原因回传给商户? 3. 打款验证专户资金不足怎么办? 是否有预警机制? 一旦金额不足,商户状态和商户认证状态是怎样的? 目前每次认证的打款金额都是0.01元,而不是随机0-1元打款是否合理? 4. 修改接口 以相同信息重新请求是否会重新调取认证接口? 修改接口是否对所有添加的版本做了兼容? 5. 异步通知 商户对接异步通知,是否一定会发送异步通知? 认证失败是否有异步通知,以及失败原因? 二、分账请求 1. 实时分账 实时分账是否会出现支付完成但未创建分账可能性? 是否出现一直认证不成功的情况?即已创建 出现不成功/已创建的情况,系统有做补偿措施没?预警机制? 商户对接异步,是否一定会到异步,收不到怎么办? 2. 延迟分账 延迟接口请求是否有请求记录查看,日志是否有记录 延迟接口请求通过是否一定创建分账订单,没创建怎么办,并发请求呢? 创建订单是否一定会分账成功,不成功怎么办? 账务处理完成,通知订单状态扭转若失败怎么办?预警机制是否有? 延迟接口是否有预留30天内自动分账的功能?(央行规定在途时间不得超过30)对每个行业都适用吗? 延迟分账对外全套接口是否足够完整,是否标准? 延迟分账的并发请求峰值。 3. 多次分账 多次分账请求接口是否规范,是否有日志追踪? 代码层面、对外接口是否进行多人复核检测? 接口是否足够规范? 多次分账接口请求是否一定创建分账订单,没创建怎么办? 并发请求,汇聚是否能够支撑住? 请求超时怎么处理?客户如果同一笔订单多次请求超时,但是有一笔直接返回已分账,那么如何帮助客户查询是那一笔分账成功? 三、结算 自动结算,是否每日定时清算后会自动处理?没有处理怎么办? 如果跑批失败,或者本来10分钟完成提到银行卡,结果耗了一整天的时间,这些会怎么办?是否有告警机制,快速处理的补偿机制? 如果结算订单创建,但并未请求打款(请求未通过),系统是否有补发功能?预警功能? 如果一笔订单一直处于打款中,如何处理?是否有预警通知,因为我们对外有承诺时间的。 结算请求接口,假设请求失败,则请求失败的失败原因是否足够合理? 结算失败,是否有异步通知?错误原因返回,返回码是否经过加工处理? 接口结算的对外全套接口是否足够完整,是否标准? 四、退款 1. 正常退款 退款支持的并发请求峰值是多少?如果超过并发峰值会怎么样? 分账退款请求是否有日志记录? 同一笔订单,其支付订单的退款成功,而分账订单的分账退款,是否会出现一笔成功,一笔失败/处理中的情况?如果出现了会怎么办 退款完成,是否会出现更新支付退款状态,但未更新分账退款状态。 更新退款状态,但是账务金额不足会怎么办,是否有监控? 多次退款,能否一下子查出的该订单所有的退款记录 分账退款金额是否一定要小于分账金额? 超额退款是否可行? 2. 异常退款 入账异常,是否会通知商户,是否提供查询接口? (目前已彻底解决入账异常问题,解决的方式是以贷记卡进行试算,如果平台分账金额小于手续费,则拦截交易) 重复支付、入账异常、失败交易等不同类的自动退款模式,假设系统退款发起失败,是否有补偿机制,邮件预警机制? 五、账户 目前分账方账户结构为3层,用户根本看不懂;是否可以简化? 能否定制化推出个人类型账户、普通商家账户、VIP商家账户? 简化账户模式,如何才能不影响已对接使用的商户? 账户支付模式的要素,以及前提是什么?