流程
包含4个核心流程:
1.预授权支付
2.预授权撤销
3.预授权完成
4.预授权完成撤销
详细说明继续看下文。
预授权支付
这一步没有记账,只是把钱从消费者银行卡转账到支付公司备付金。但是,商家没有收到钱。
预授权支付之后,正常情况下,下一步是预授权完成:1.给商家入账 2.退押金给消费者。
异常情况,是预授权撤销:退钱给消费者。
预授权撤销
什么情况下,会触发预授权撤销?
就是在预授权支付之后,但是没有预授权完成。
根据是否支付成功,细分为两种情况:
1.支付成功
退钱给消费者,并且更新状态为预授权撤销。
2.支付未成功
如果支付未成功,只是更新状态为预授权撤销。
预授权完成
在预授权支付之后,下一步,正常情况下,就是预授权完成。
预授权完成,主要做了两个事情:
1.给商家入账
2.退押金给消费者
预授权完成撤销
什么情况下,会触发预授权完成撤销?
顾名思义,就是在预授权完成之后,才撤销。
预授权完成撤销,主要干了一件事:把给商家的钱,也要退给消费者。其实就是字面意思,这个订单,现在已经被撤销了。
在预授权完成撤销之后,其实就相当于全额退款了。
预授权完成,相当于是部分退款。
小结
上面核心流程,具体的接口实现,有两种方法:
1.预授权支付
使用单独接口。
2.预授权撤销,预授权完成,预授权完成撤销
可以使用同一个接口,但是要根据入参类型字段来区分不同的业务。
使用同一个接口,好吗?
不是不可以,但是最好不同的核心业务流程,还是使用不同的接口。这样一目了然,而且看接口名字,就知道核心业务流程是哪几个。
支付宝
支付宝的预授权接口文档地址:opendocs.alipay.com/open/201804…
核心流程
支付宝的名字是这么划分的:
1.预授权
即相当于是预授权支付,其实就是把消费者的钱先冻结了,但是钱没有入账给商家。
但是,钱已经到了支付公司备付金银行卡,所以,支付公司才能给消费者和商家做担保。
2.支付
即相当于是预授权完成,其实也是:1.入账给商家 2.退押金给消费者。
只不过,支付宝的预授权撤销和预授权完成撤销,稍微有点区别。预授权撤销,有两种方法:1.预授权撤销 2.预授权解冻。预授权完成撤销,是通过退款接口实现。
但是,无论叫什么名字,其实本质和核心步骤,是差不多的。具体的细节,看下文。
预授权支付
对应截图里的:授权冻结接口。
预授权撤销
有两种方法,对应截图里的解冻和撤销:
1.解冻
最佳实践是使用解冻,使用解冻之前,先查询冻结是否成功,如果冻结成功,就使用解冻。解冻,就是退款。
如果是非成功的中间状态,就使用撤销。
2.撤销
如果冻结之后的结果未知,即查询冻结的结果是中间状态,就使用撤销。
撤销是分两种情况:1)如果冻结已经成功,就退款,这种情况和解冻功能一样 2)如果冻结没有成功,只更新状态为撤销。
参考支付宝文档,建议优先使用解冻:1.先查询冻结结果是否成功 2.如果冻结成功,就解冻(即退款)。
预授权完成
对应截图里的:统一收单交易支付接口。
预授权完成撤销
截图里的:退款接口。
其实就是这个时候已经完成了预授权支付,然后进行退款。
因为预授权支付主要是:1.入账300给商家 2.退押金200给消费者。
所以,预授权退款的主要业务:其实就是把入账给商家余额的钱退款给消费者,即退300给消费者。
微信
微信的预授权业务的文档:pay.weixin.qq.com/wiki/doc/ap…
注:或者在浏览器搜微信支付文档 + 酒店,可以找到该文档。
架构
按记账次数,分两种不同的架构:
1.记账两次
入住的时候:消费者入账1000给酒店。
退房的时候:酒店退300给消费者。
2.只记账一次
入住的时候:不入账给酒店。
退房的时候:入账700给酒店。
架构图如下
两种架构的区别在于,酒店记账了几次。
微信为什么使用架构2来优化?因为这样使得商家只记账1次,记账更清晰易懂。一个人入住酒店一次,就记账一次,而不是先入账后退款,搞了两次。
接口
正常情况下,核心流程是:
1.预授权
入住酒店的时候,预授权。
2.支付
退房的时候,真正支付。
其实就是入住酒店的时候:预授权。然后退房的时候:支付。
异常情况:
1.如果预授权异常
就调用撤销接口撤销。
注:或者不是异常,只是在预授权之后,如果想撤销,也是调用撤销接口撤销。
2.如果支付成功之后,又想退款
就是调用退款接口退款。
总结
不同的支付公司,每个核心流程的名字和叫法不一样,但是本质其实是一样的。
重点是记账,即关注每个核心流程的记账情况,因为支付和支付系统的核心就是资金的流转。