从事支付行业开发多年,做过很多不同的场景。发现各种支付方式多样化,还有各种不同的叫法,很多人都是一知半解,容易混淆一些概念。这篇文章希望根据自己的理解,尽量的把几种支付方式说清楚。
首先从大类上,任意一种支付方式必定属于这两类。线上和线下的区别在于商品交易的场景是在实体的店铺还是互联网上(比如电商平台)。
付款码支付
也有叫条码支付的,也有叫被扫(从用户的角度)。其实名字不重要,关键看场景。它的场景是这样的:
商家使用扫码枪等条码识别设备扫描用户APP上的条码(一维码或者二维码),完成收款。用户仅需出示付款码,所有收款操作由商家端完成。支付宝的示例如下图:
image 图片来自网络
具体步骤是:
在第三步,支付机构会提供支付的接口,接口提供的方式有多种,比如有SDK的方式,还有HTTP的方式。请求的报文里携带付款码的信息(是一串数字,不同的支付机构特征不一样)。
这里还是拿支付宝的条码支付举个栗子:
其中auth_code就是付款码的信息。
这种场景和传统的POS收款其实异曲同工,本人早年从事过POS机支付相关的开发工作,POS机线下收款获取的是银行的信息,而条码支付获取的是用户APP上的付款码信息。获取信息之后都是往第三方付支付机构(包括银行,支付宝,微信等)发起支付请求并最终完成整个支付流程。
扫码支付
也是一种线下的支付方式。它和付款码的区别扫码的主体互换了。是由用户使用APP扫描商户收银端生成的二维码。支付宝的示例如下图:
具体步骤是:
扫码支付的场景多见于自动售货机。大家仔细回想下在自动售货机上购买商品的过程就明白了。
APP支付
场景是商家在APP上集成支付宝或者微信支付的功能。比如我们使用美团外面APP订外卖,付款的时候会弹出微信APP进行支付,这就是APP支付的场景。
示例如下图:
步骤如下:
APP支付一般是提供手机端的封装好的SDK给到商户的APP调用,所以有安卓和IOS两个版本,这是和HTTP接口不同的地方。这里拿支付宝的安卓端SDK举个栗子(这里只展示关键部分的代码):
PayTask就是SDK提供的用于发起支付的核心类,通过调用它的方法payV2发起支付请求。payV2的第一个参数就是封装的订单信息对象。
公众号支付
微信叫公众号支付,支付宝叫生活号支付(也有叫支付宝服务窗支付的)。其实针对的场景是相似的,微信针对的是公众号里面的商家H5页面发起支付的场景,而支付宝针对的是生活号里的商家H5页面发起的支付场景。
这个拿大家熟悉的微信公众号举个栗子,具体的流程如下:
这里有几个关键的点说明以下:
H5支付和手机WAP支付
这两个其实是一回事,只是叫法不同。场景都是在普通的浏览器(非支付宝和微信内置浏览器)打开商户的H5页面发起支付,唤起支付APP进行支付的情况。支付完后跳回到商家H5页面内,最后展示支付结果。
据我的了解,这种场景应该是目前使用的最广泛的。比如我小区的电梯里经常看到一些蛋糕的广告,扫描上面的二维码就进入了商家的H5页面,然后选择商品购买即可,非常方便!
小程序支付
微信和支付宝现在都再力推小程序,那怎么能少得了支付的支持呢!
小程序的支付这里不详述了,因为它和公众号支付基本是一样的。就是在配置上有些差异,比如微信小程序支付不需要配置支付目录,授权域名这些了,简化了一些流程。
网关支付
网关支付也是属于线上支付,但它又不同于前面介绍的互联网支付方式。它属于传统的银行网银支付。一般情况下是符合资质的第三方支付机构提供的一种支付服务。
这些机构后台会接入多家银行,然后在前台放出接口给到商家。交易的时候需要在商家的收银系统上选择银行,然后通过第三方支付机构跳转到对应的银行网银完成支付流程。