支付系统 - 支付模型抽象

2,189 阅读6分钟

在不同的公司,由于接入的通道和应用的差别,所以对模型的抽象有所不同。这里综合支付场景和业务,抽象出如下几大概念。当遇到新的通道对接时,灵活的进行分类,就能够轻松的组合出想要的产品。

通道

微信、支付宝、易宝支付、拉卡拉、翼支付、PayPal等。

支付种类

如:微信支付、支付宝支付、网银支付、快捷支付、预付费卡、百度钱包、京东支付、账户支付等。

可能很多同学会有疑问,微信支付宝这种这样的不应该算是通道吗?不错,微信和支付宝确实是通道。在支付平台这个维度上来讲,不仅可以直接对接微信的支付接口,也可以对接如易宝支付等其他支付公司的微信支付接口。举个生活中的例子你就明白了:当你摆地摊时,别人问你怎么收钱,微信还是支付宝,此处指的就是支付种类而不是支付通道。

支付方式

这一层抽象是和用户支付手段相关,这块可能需要你做下梳理归类,为了方便大家理解拿实际的支付场景举例:

你打开快狗打车APP,下了个搬家订单选择了微信并完成了支付,那么你使用的是微信APP支付。当然如果你选择了支付宝,那就是支付宝APP支付。聪明的读者可能想到了,我在小程序里支付就是小程序支付,在公众号里支付就是公众号支付。这个东西这么简单,还需要你说?

抱歉,请看微信的产品设计。

微信支付场景
微信支付场景

如你所见,这里就有一些我们需要调研才能清楚的场景。JSAPI支付,我们看一下微信给出的描述:

JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。
应用场景有:
线下场所:调用接口生成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付。
公众号场景:用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付。
PC网站场景:在网站中展示二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付。

OK,有没有发现什么共性?所有的支付必须在微信浏览器中完成。但是发现这个共性对于我们设计模型有没有什么帮助?现在还不好说,但是这符合我们的常规思路,发现共性->尝试抽象->抽象成功(失败)。这里的抽象我们姑且称为是浏览器内模式。先记住这个概念,等会即使对我们设计无用,对我们理解支付场景也是有帮助的。

同样的,通过查看介绍可以轻松得知

  • H5支付:指用户在微信浏览器外发起支付随后唤起微信客户端后完成支付。
  • 付款码支付:其实就是商家使用扫码枪等设备扫描用户出示的付款码,这里方便描述称为被扫。
  • Native支付:也是二维码支付,你打开某个电商网站出现一个二维码需要你主动扫码支付。

Tips

JSAPI支付和Native支付都支持PC网站支付,区别是Native不需要输入金额,JSAPI需要。
看了下微信的接入场景指引,只有PC网站支付时可以使用Native支付,其它场景中没有提及。

接下来请看支付宝的产品设计:

支付宝支付场景
支付宝支付场景

图中我们需要关注的支付方式:当面付、APP支付、刷脸付、手机网站支付、电脑网站支付。

  • 当面付:包含商家主扫,用户主扫
  • 手机网站支付:用户在商家手机网站消费,通过浏览器自动跳转支付宝APP或支付宝网页完成付款。
  • 电脑网站支付:用户在商家PC网站消费,自动跳转支付宝PC网站收银台完成付款。

为了方便大家理解微信支付宝之间的差异,我画了个图

支付宝/微信支付产品异同
支付宝/微信支付产品异同

Tips

其实支付宝还有小程序支付,需要在支付宝开放平台中才能看到。

箭头相连代表是同一种支付场景。OK,我们发现微信和支付宝抽象的层次不同。支付宝的支付产品让人感觉比较容易理解,很快的就能找到对应的开发文档,反观微信就不是那么友好了。从这里我们就可以得出结论,之前的抽象浏览器内模式是失败的。抽象的方法是找到几组类似事物的相似性,尝试提取相同的部分忽略差异。如果这种抽象没有对我们的设计产生什么便利反而带来了条条框框的限制,那么它就是失败的。

假设我们使用这种抽象,意味着我们可能会得到如下的组合:

  1. 微信浏览器内支付/微信浏览器外支付
  2. 支付宝浏览器内支付/支付宝浏览器外支付

显然,支付宝的设计并不能套用此框架。

这里给出最终支付方式可能的值:扫码、刷卡、公众号、APP、H5、借记卡、贷记卡、B2C-API、B2C收银台

请注意:支付方式的选择直接影响设计,需要根据业务场景进行合理取舍。比如,如果业务中只会使用Native扫码支付,那么支付方式可以只有一种扫码;如果还有PC网站扫码这种模式,就需要细分到Native扫码,PC网站扫码这一层。在近一步,Native扫码还有模式一模式二,具体如何细分取决于业务场景。分的越细,程序中就会少很多分支判断,如果是模式一怎么样,如果是模式二怎么样。以微信扫码支付方式设计举例,最简单的是扫码,最复杂的是Native扫码模式一、Native扫码模式二、JSAPI电脑网站扫码。

支付产品

由支付种类和支付方式组合产生,很自然的理解。如微信公众号支付,支付宝电脑网站支付等。如果你支付方式有Native扫码模式一,那支付产品就叫微信Native扫码模式一。

通道支付产品

支付模型
支付模型

这里就是我们最终的目标了,和通道结合起来,最终得到通道支付产品。

参考资源

产品中心-微信商户平台
场景接入指引-微信开放社区
支付产品-支付宝商家中心
小程序支付-支付宝开放平台