Android商家端线下支付流程详解
对于Android应用客户端来说,通常情况下的支付方式分为微信和支付宝两种,实现方式是通过接入微信和支付宝的SDK,调用手机已安装微信和支付宝应用来完成支付操作,并将支付结果回调给该应用,根据支付结果再做出的相应的处理,这样就完成了一次客户端支付流程。
但是呢,Android应用还可以用于商家端,安装在商家门店设备上,用于和顾客日常收银交互(相当于简易版的POS),这时候,就无法再通过接入SDK的方式来实现了,不仅如此,在线下收银时,可能存在的支付方式也不仅仅是微信和支付宝,下面就逐个详解对应的支付流程。
- 微信和支付宝
微信和支付宝一般都是通过后台服务器先封装一层支付接口,再由Android应用端调用,完整调用流程如下:
需要注意的是,轮询支付结果一般为1分钟,5s轮询一次,也可以根据实际场景做修改。如果轮询结束还没有得到明确的支付结果,则认为支付失败,如果后台实际支付成功,则由后台做异常处理,将对应支付记录撤销。
现金
现金支付不需要发起支付请求,只负责记录该条支付记录并做相应处理。银行卡
银行卡支付需要和对接银行的手柄对接,通过对接银行提供的.dll文件,调用指定支付方法发起支付,完整流程如下所示:
银行卡支付和微信支付宝支付的区别就在于如果轮询支付结果依旧未知的情况下是否需要发起冲正,银行卡如果发起冲正解析冲正结果时无法明确得知冲正结果,需要再次发起冲正,依旧是一分钟的时限,在一分钟内如果冲正结果都为未知冲正结果,则认为支付失败,Android端不再处理该种异常情况,交由后台处理。