文章目录

  • 线上和线下
  • 线下支付场景分类
    • 付款码支付
    • 扫码支付
  • 线上支付场景
    • APP支付
    • 公众号支付
    • H5支付和手机WAP支付
    • 小程序支付
    • 网关支付

从事支付行业开发多年,做过很多不同的场景。发现各种支付方式多样化,还有各种不同的叫法,很多人都是一知半解,容易混淆一些概念。这篇文章希望根据自己的理解,尽量的把几种支付方式说清楚。

线上和线下

首先从大类上,任意一种支付方式必定属于这两类。线上和线下的区别在于商品交易的场景是在实体的店铺还是互联网上(比如电商平台)。

线下支付场景分类

付款码支付

也有叫条码支付的,也有叫被扫(从用户的角度)。**其实名字不重要,关键看场景。**它的场景是这样的:

商家使用扫码枪等条码识别设备扫描用户APP上的条码(一维码或者二维码),完成收款。用户仅需出示付款码,所有收款操作由商家端完成。支付宝的示例如下图:


图片来自网络

具体步骤是:

  1. 用户打开支付APP(支付宝,微信或者云闪付等),找到付款码界面;
  2. 收银员在商家收银系统操作生成订单,用户确认支付金额;
  3. 收银员使用扫码设备(包括扫码枪,POS机等),扫描用户手机上的条码(一维码或者二维码),商家收银系统提交支付。
  4. 机构后台(支付宝,微信支付,银联等)收到支付请求在后台进行交易处理。
  5. 付款成功(或者失败)后商家的收银系统和用户都会有相关的提示。

在第三步,支付机构会提供支付的接口,接口提供的方式有多种,比如有SDK的方式,还有HTTP的方式。请求的报文里携带付款码的信息(是一串数字,不同的支付机构特征不一样)。

这里还是拿支付宝的条码支付举个栗子:

https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.trade.pay&app_id=2284&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&biz_content={"out_trade_no":"20150320010101001","scene":"bar_code,wave_code","auth_code":"28763443825664394","subject":"Iphone6 16G","seller_id":"2088102146225135","total_amount":"88.88","store_id":"NJ_001"}

其中auth_code就是付款码的信息。

这种场景和传统的POS收款其实异曲同工,本人早年从事过POS机支付相关的开发工作,POS机线下收款获取的是银行的信息,而条码支付获取的是用户APP上的付款码信息。获取信息之后都是往第三方付支付机构(包括银行,支付宝,微信等)发起支付请求并最终完成整个支付流程。


图片来自网络

扫码支付

扫码支付也是一种线下的支付方式。它和付款码的区别扫码的主体互换了。是由用户使用APP扫描商户收银端生成的二维码。支付宝的示例如下图:


图片来自网络

具体步骤是:

  1. 商家的收银系统根据用户购买的商品生成订单信息,并根据订单信息并生成二维码;
  2. 用户打开APP的扫一扫界面,扫描第一步的二维码,核对金额然后支付;
  3. 用户付款后商家收银系统会拿到支付成功或者失败的结果。同时用户本身也会收到相应的结果。

扫码支付的场景多见于自动售货机。大家仔细回想下在自动售货机上购买商品的过程就明白了。

[外链图片转存失败(img-VfFd9NG4-1567745094317)(http://img.dav01.com/e/2018/6/21/davinfo_215546_1529562031320_1555442136.png)]

图片来自网络

线上支付场景

APP支付

场景是商家在APP上集成支付宝或者微信支付的功能。比如我们使用美团外面APP订外卖,付款的时候会弹出微信APP进行支付,这就是APP支付的场景。

示例如下图:


图片来自网络

步骤如下:

  1. 用户进入商户APP,选择商品下单、确认购买,进入支付环节。商户服务后台生成支付订单数据,然后由商户APP调用支付SDK的接口;
  2. 支付APP这个时候会被调用起来进行输入密码等操作并完成支付;

APP支付一般是提供手机端的封装好的SDK给到商户的APP调用,所以有安卓和IOS两个版本,这是和HTTP接口不同的地方。这里拿支付宝的安卓端SDK举个栗子(这里只展示关键部分的代码):

public void payV2(View v) {...final Runnable payRunnable = new Runnable() {@Overridepublic void run() {PayTask alipay = new PayTask(PayDemoActivity.this);Map<String, String> result = alipay.payV2(orderInfo, true);Log.i("msp", result.toString());Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};...}

PayTask就是SDK提供的用于发起支付的核心类,通过调用它的方法payV2发起支付请求。payV2的第一个参数就是封装的订单信息对象。

公众号支付

微信叫公众号支付,支付宝叫生活号支付(也有叫支付宝服务窗支付的)。其实针对的场景是相似的,微信针对的是公众号里面的商家H5页面发起支付的场景,而支付宝针对的是生活号里的商家H5页面发起的支付场景。

这个拿大家熟悉的微信公众号举个栗子,具体的流程如下:

  1. 进入公众号自定义菜单,用户点击进入商户网页选择购买商品;
  2. 调起微信支付控件,用户输入支付密码完成支付;
  3. 商户后台得到支付成功(或者失败)的通知;



图片来自网络

这里有几个关键的点说明以下:

  • 支付过程并不会唤起微信APP,而是启动了一个微信支付的控件
  • 支付请求参数中需要携带用户的openid,这个也是由公众号支付的特殊性决定的,在微信内置浏览器中是可以获取到用户的openid的;

H5支付和手机WAP支付

这两个其实是一回事,只是叫法不同。场景都是在普通的浏览器(非支付宝和微信内置浏览器)打开商户的H5页面发起支付,唤起支付APP进行支付的情况。支付完后跳回到商家H5页面内,最后展示支付结果。



图片来自网络

据我的了解,这种场景应该是目前使用的最广泛的。比如我小区的电梯里经常看到一些蛋糕的广告,扫描上面的二维码就进入了商家的H5页面,然后选择商品购买即可,非常方便!

小程序支付

微信和支付宝现在都再力推小程序,那怎么能少得了支付的支持呢!

小程序的支付这里不详述了,因为它和公众号支付基本是一样的。就是在配置上有些差异,比如微信小程序支付不需要配置支付目录,授权域名这些了,简化了一些流程。

网关支付

网关支付也是属于线上支付,但它又不同于前面介绍的互联网支付方式。它属于传统的银行网银支付。一般情况下是符合资质的第三方支付机构提供的一种支付服务。

这些机构后台会接入多家银行,然后在前台放出接口给到商家。交易的时候需要在商家的收银系统上选择银行,然后通过第三方支付机构跳转到对应的银行网银完成支付流程。

图片来自网络

网关支付一般是在PC端的IE浏览器进行操作,移动端也有些机构提供,但是似乎兼容性一直不太好。场景一般是有大额往来的B2B业务。


欢迎大家关注我的公众号

一文读懂H5,APP,WAP,公众号支付等多种支付方式的区别相关推荐

  1. 第三方微信支付,WAP、H5、APP、公众号支付的区别

    你说一个微信支付被腾讯搞了N个版本出来,是技术问题还收费原因不得而知.公众号支付,H5(wap)支付,APP支付.看得小编一头雾水. 带点N个疑问? 1.公众号支付是在公众号里支付,支众号里引入的三方 ...

  2. 支付宝H5,微信H5,微信公众号支付回调

    业务场景 应公司需求,需要在项目中接入支付宝h5支付,微信h5支付和微信公众号支付功能,本编主要讲述支付踩坑和h5支付后跳转的回调问题 微信h5支付 微信h5支付时需要校验下单域名,微信从refere ...

  3. 一文读懂云计算、大数据和人工智能间的关系和区别

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 今天跟大家讲讲云计算.大数据和人工智能.为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系 ...

  4. 解析|一文读懂AGV的关键技术——激光SLAM与视觉SLAM的区别

    来源:新机器视觉 移动机器人(AGV)是工业机器人的一种.它由计算机控制,具有移动.自动导航.多传感器控制.网络交互等功能,在实际生产中最主要的用途是搬运,可以说只要有搬运需求的地方,就有移动机器人的 ...

  5. c语言 overflow_一文读懂:C语言编程中“堆”和“栈”的七大区别

    对于编程初学者来说会接触到一些难以理解的名称,比如堆(heap).栈(stack).堆栈(stack)等,初学开发过程中往往让人混淆不清.今天我们来谈谈堆和栈的具体区别,来帮助初学者理清思路. 堆和栈 ...

  6. 一文读懂RS-232与RS-422及RS-485三者之间的特性与区别

    RS232概述 RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是EIA-RS-232(简称232,RS232).它被广泛用于计算机串行接口外设连接.连接电缆和 ...

  7. rs232 距离_一文读懂RS232、RS422、RS485三者之间的特性与区别

    点击蓝字  关注伺服与运动控制 RS-232.RS-422.RS-485简介 RS232概述 RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是EIA-RS-2 ...

  8. 422器件与lvds接收器的区别_一文读懂RS232与RS422及RS485三者之间的特性与区别

    好多人说,现在都网络时代了,咋还谈到了什么这个话题呢?其实想想很简单,这个是建立在原来工业控制网络基础上. 凡是从业安防十几年以上的基本上都用过485传输设备,那时候云台是需要单独控制线的.即使是在N ...

  9. 使用beecloud和easychat 做微信H5 微信公众号支付遇到的坑

    首先我先来说明微信h5和微信公众号支付的区别 微信H5指的是微信网页端支付.微信公众号支付指的是微信浏览器内发起微信支付,这种支付都是属于微信公众号支付.俩者本质的区别就是H5不需要微信网页授权,但是 ...

最新文章

  1. hexo-github-博客搭建指南
  2. 成功解决​​​​​​​安装pywin32时出现python version 3.6 required, which was not found in the registry
  3. [转载] 大道至简:软件工程实践者的思想——第十章 是思考还是思想
  4. Linux 环境 C语言 操作MySql 的接口范例
  5. vim打造成C++的IDE
  6. 《Python游戏趣味编程》 第4章 疯狂的小圆圈
  7. myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.
  8. 拍乐云基于AV1的实时视频系统技术实践 | 2021 LiveVideoStackCon 演讲回顾
  9. JavaScript 操作 session 方法
  10. 用python 控制台打印图片示例
  11. 海康摄像机在Win10系统的Web浏览器中无法在线预览解决办法
  12. 第27月第25天 clang -rewrite-objc main.m
  13. html中的长度单位
  14. nck课程笔记:破解补丁工具的使用
  15. 在word如何显示左侧的索引目录
  16. 第十四届蓝桥杯三月真题刷题训练——第 27 天
  17. Java中的数组缩减题目解答
  18. matlab彩色图像边缘检测,canny算法实现彩色图像边缘检测
  19. java基础与案例开发详解 pdf下载_Java基础与案例开发详解(张孝祥) pdf_IT教程网...
  20. excel怎么截取字符串

热门文章

  1. 怎么去除PDF中的水印
  2. 钓鱼台美高梅酒店集团第二届“赏味星厨”美食活动正式启幕
  3. 爱丽丝漫游奇景注释版拿到手了
  4. 11种常见的多变量分析方法
  5. RK3399平台开发系列讲解(SPI子系统)4.16、SPI子系统之spidev驱动分析
  6. 哪些企业需要用工厂生产管理系统?
  7. 架构师如何高效的学习技术?
  8. 徕雨科技HDMI网线延长器
  9. Python os.work()函数
  10. Fineplus(QQ完美助手) v0.39SP3