支付流程概要
参考视频:8分钟带你走进第三方支付_哔哩哔哩_bilibili
支付系统有个支付订单表,订单系统调用支付系统发起支付时,支付订单表会记录一条记录并标记状态为支付中,后续支付宝/微信的回调请求来时,支付订单状态再变为支付完成
第三方支付
第四步,会从买家银行卡中将资金经过网联打给支付宝
第九步,支付宝收到客户的收货确认后,才将资金通过网联打给商家银行卡
第十步,也就是上面的5.入账,写错了,其实是10.入账
网联存在的意义
网联,又叫做网联清算有限公司
银联负责银行与银行之间的清算
网联是负责第三方支付机构的清算
第三方支付的盈利模式
沉淀资金,就是暂存在支付宝还没打给商家银行卡的钱
四方模式
信息流转
商户POS机扫描客户支付二维码来支付100元后,POS机向POS机所属的收单机构发送支付请求,再到银联/网联这样的请求转接/清算机构,转接到客户的发卡行。发卡行从客户银行卡扣100元到发卡行备付金账户,并通过银联/网联返回扣款成功的通知给收单机构,收单机构将收款成功信息返回给商家,同步的客户的微信/支付宝的支付界面也能显示扣款成功
资金流转
每天银联/网联会将收单机构发起的所有收单指令汇总,并将处于发卡机构备付金账户的资金划拨到收单机构的备付金账户
收单机构则会每天从银联/网联拉取对账文件,这些收单机构的清算系统,会将当日的交易数据进行分类、汇总,并计算出商户结算金额、收入、分润、费用等,并生成清算列表
一般T+1日,收单机构的清算系统核实收到的T日的清算金额无误,扣除收单手续费后,银联/网联又会将各个收单机构备付金账户的钱真正打给商家账户
1. 收单机构
第三方支付收单机构是指从商户处收取交易款项并将款项结算给商户的机构。目前,市场上的第三方支付收单机构主要有以下几种:
(1)银行收单机构
银行收单机构是指各大银行的收单部门,主要负责与商户签订收单协议,提供POS机等收款设备,并将商户的交易款项结算给商户
(2)第三方支付公司收单机构
第三方支付公司收单机构是指支付宝、微信支付、银联在线等第三方支付公司的收单部门,主要负责与商户签订收单协议,提供二维码等收款设备,并将商户的交易款项结算给商户
POS机扫码支付
提供POS机的收单模式,是商家拿着收单机构提供的POS机,扫描客户出示的支付二维码
二维码扫码支付
提供二维码的收单模式,是客户拿着支付宝/微信等第三方支付app,扫描收单机构为商家提供的收款二维码
问题一:支付宝或者微信支付等第三方支付系统,支付流程为什么不做成同步返回结果?
1. 支付宝或者微信的支付是异步的,他的系统请求支付宝进行支付,支付宝响应成功,只代表支付宝成功接受到了你的支付请求,后续的实际支付操作支付宝还要异步调很多渠道,比如银行卡就要和对应的银行系统交互,比如账户余额就要和支付宝的余额系统进行交互,比如花呗可能还要调花呗的系统,当支付宝和这些渠道交互成功后才是实际的扣款,这时支付宝才能回调实际的支付结果给他。为什么不做成同步?可以说同步链路拉的太长,用户等很久
2. 更多还是考虑到IO并发数量问题吧,rt响应时间太高会占用大量连接
问题二:这种第三方支付系统是如何保证支付一致性的?
1. 支付宝或者微信在支付成功后,会回调你自己的支付系统,来告知该笔支付订单的支付结果
2. 如果一定时间后还没有收到支付宝或者微信的支付回调结果,本地支付系统会有定时任务轮训,类似于本地消息表的最终一致性解决方案,轮训那些在支付中,但是还没有扭转到支付成功或者支付失败的支付订单,去主动调用支付宝或者微信查询支付结果
问题三:关于微信的离线支付,如何防止别人通过截图或者什么别的方式,拿着自己的付款二维码到处刷呢?
1. 微信客户端自动刷新付款二维码
2. 付款二维码中除了带有微信支付的账户信息外,还带有时间戳。扫码枪扫描获取到微信支付的账户信息和时间戳,并传递到微信支付服务端,微信服务端会校验该微信账户余额够不够本次扣款,还会校验时间戳是否已经过期
问题四:如何根据商品金额生成固定金额的微信收款码,让用户通过微信扫码支付?
Java微信支付开发之扫码支付模式一_java 微信生成带金额的erweima-CSDN博客
openid说明
openid是微信用户在公众帐号(包括小程序)、H5、APP下的唯一标识。每个不同的第三方应用都有一个唯一的appid,不同的appid下,同一个自然人也会对应的不同openid