这是《百图解码支付系统设计与实现》专栏系列文章中的第(8)篇。
收银核心和支付引擎是支付系统最核心的两个子系统之一。
本篇主要讲清楚收银核心和支付引擎的设计与实现,包括收银核心如何渲染可用支付方式,支付引擎如何去为商户扣款,以及它们的领域模型设计,状态机设计等。
如果说电子商务是现代经济的繁华都市,那么在线支付系统无疑就是最繁忙的交通大动脉。在这个每年数十万亿规模的在线支付交易世界中,有两个默契十足的队友密切配合,确保每一笔交易都像优雅的华尔兹舞步一样流畅 -- 这就是我们今天的主角:收银核心和支付引擎。
先给一个直观的协同作战的图,有一个整体的印象。
想象一下,你走进了一家精品咖啡店,在这里收银核心就好比是那位亲切的侍者,不仅为你呈上菜单上各式支付方式的大餐,还会确保核验你的身份,然后查出你留存在咖啡店的预存款。在支付你的账单时,还会偷偷做个背影调查(风控检查),以确保你不是正在洗钱。
收银核心是支付系统的门面,负责处理用户的支付请求,核心能力就两个:1)支付方式咨询,告诉用户本次可以使用哪些支付方式。2)提交支付后的各种校验,比如订单是否有效,商户权限,用户身份,风控等。
上面的图分别是电商(京东)的收银台,支付平台(微信支付)的收银台。
支付咨询阶段,需要做以下几个工作:
最后把支付方式返回给用户,供用户在支付时选择。
用户选择好支付方式,点击“确认支付”,就到了支付受理阶段。主要做以下几个工作:
特别说明一下:为什么轮询结果是从收单平台而不是支付引擎?因为对用户而言,收单的结果代表最终的支付结果。比如用户支付回来后,支付引擎是成功的,但是收单平台因为已经订单过期关闭,就会发起资金退回操作,这样收单平台的订单实际是没有支付成功的。就会提示用户:“订单已关闭,如果已经扣款,支付款项预计在15个工作日内原路退回。”
提供给用户有多种支付方式:卡、余额、网银等。
收单产品主要包括:标准收银台,前置收银台,扫码付等。其中标准收银是由支付平台提供,需要跳转到支付平台,而前置收银台是直接嵌入到商户收银台里面完成支付。
核心服务包括:支付咨询、支付受理、风控挑战并支付等。
外部依赖主要有:会员、商服、卡中心、风控、渠道网关、支付引擎等。
快捷支付
通过在支付系统中提前绑定银行卡信息,快速完成支付交易,不需要每次都填写完整的卡详情。
代扣/协议支付
个人授权商户直接去支付平台或银行进行扣款,不需要用户参与支付过程。比如水电煤代扣,滴滴打车代扣。
卡支付
使用信用卡或借记卡支付。
网银支付
需要跳转到银行提供的支付页面,输入银行账户信息进行支付。
VA支付
Virtual Account。虚拟账户是银行临时生成的一个账户,与用户和订单临时关联。一般在东南亚的支付场景,或者国际收款场景下使用得比较多。
东南亚很多人没有银行卡,但又要在线买东西,就可以临时生成一个VA。以支付流程为例:用户选择某个银行的VA支付方式,支付系统调用银行接口,先为用户订单生成一个VA号,用户拿着VA去钱下ATM机转账,银行收到钱后,通知支付系统,支付系统再通知商户,商户给用户发货。
OTC支付
Over-the-Counter。柜台支付。一般指大型连锁线下零售商提供的支付能力,比如7-11或肯德基提供的支付能力。整体流程和VA很像。区别在于VA通常指银行提供的。
同样以支付流程为例:用户选择某个OTC服务提供商的OTC支付方式,比如7-11,支付系统调用7-11接口,先为用户订单生成一个OTC码,用户拿着OTC码去钱下7-11柜台拿现金充值,7-11收到钱后,通知支付系统,支付系统再通知商户,商户给用户发货。
第三方钱包支付
非银行机构提供的在线支付服务。比如支付宝、微信支付,国外的PayPal等。
余额支付
使用账户余额进行支付。
正扫
商户生成二维码,用户扫商户二维码。
反扫
消费者生成二维码,商户扫消费者的二维码。
见:在线支付系统的精英搭档:深入剖析收银核心与支付引擎的协同作战(二)