作者:字节跳动技术团队
链接:https://juejin.cn/post/690332...
- 引言
======
在日常生活中,从线下的超市购物到线上的外卖点餐、电商网购等,支付无时无刻不在发生,不论是通过现金、pos 机刷卡还是微信支付宝等第三方支付。线上支付有着及时便捷一气呵成的极致体验,当然也有少数的时候体验不够丝滑,比如早期我们在 PC 版 12306 买火车票,当支付完成后,订单的支付状态却经常不能及时更新,会有一段时间的延迟,有时甚至会等待很长时间处在未支付状态。
在支付的过程中由于各种各样的原因(比如外部渠道处理出了问题,异步回调迟迟不来)导致流程走了一半停了下来,用户看到订单依然是未支付状态,会不知所措,此时就需要一种机制来推动完成这笔交易。本文就以三方支付系统中的补单机制为例,来介绍一种较为通用的单据补偿模式。
- 三方支付系统简介
============
1.1 什么是三方支付
所谓第三方支付,就是和各大银行签约,独立于商户和银行,具备一定实力和信誉保障的,为商户与消费者提供支付结算服务的第三方独立机构。它是处于买方和卖方之间具备公信力的第三方,承担担保人和资金托管人的角色。三方支付也可以称为虚拟账户支付,由消费者在第三方支付机构开设虚拟账户,并用虚拟账户中的资金进行支付。业界常见的三方支付有支付宝、微信支付、美团支付、京东支付等等。
1.2 三方支付中的交易&支付系统
交易是什么,最直观的描述就是“一手交钱、一手交货” ,交易会使买卖双方形成债权和债务关系。交易的存在是支付发生的前提,用户通过使用某种支付方式去完成交易。交易是支付流程的驱动者,根据具体场景组合不同的支付指令,来完成交易资金的转移。
支付是交易处理资金流的工具,目的是清偿债权和债务关系;支持多种支付方式(如银行卡支付、余额支付、优惠券组合支付、类似花呗的信用支付等),负责对接账务、会计、计费系统等资金处理能力,接收支付指令,驱动完成资金交换。将实际的支付行为(实际资金)与内部的记账(虚拟资金)相结合,保证虚实一致。
三方支付整体业务架构如图 1 所示,其中交易核心与支付核心在业务划分上处于"收单支付域",具备普通交易的收款、付款、退款及充值、转账与提现等常见功能,还包括了支撑电商业务的合单支付、担保与分账的能力。其中交易与支付核心都有一个异常查补模块,它囊括了所有业务的补偿流程,也是本文主要介绍的部分。
图 10. 异常补偿体系
- 总结
======
本文首先介绍了什么是补单,接着基于三方支付系统的实现完整阐述了补单机制的演进过程,最终演化为一种相对通用的异常处理模式,即基于消息队列、有限状态机与多重任务兜底的业务层最终一致性保障机制,供大家参考指正。
推荐阅读:
刷Github时发现了一本阿里大神的算法笔记!标星70.5K
为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我懂了
看完三件事❤️
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
关注公众号 『 Java斗帝 』,不定期分享原创知识。
同时可以期待后续文章ing🚀