现在很多人出行只带一部手机,身上根本不会带零钱,所以手机网络也成为人们生活的至关重要之物,若是手机突然停网了,手机里的支付宝,微信在没网络的情况下还能支付吗?答案是可以的,但是你不能扫商家的二维码,只能出示自己的二维码。这种情况叫离线支付,所谓离线支付,通俗的说就是先通过信用校验方式进行账务处理,完成交易,等待具备网络的时候进行核实,结算。

我们可以想象一下,如果我到商店买东西而忘记带钱,老板认识我的情况下我可以赊账拿到要买的东西,然后下次拿钱去还账。这其实就类似是一种离线支付。支付宝和微信支付实现起来应该更容易一些,当我处于无网络的状态下,我的手机终端仍然能够代表我的身份,以我的身份生成一个授信的条码或者二维码,这是我的身份信用证明,好比我对老板出示我的身份证。商家读取这个支付码后,会自动识别我的身份,如果商家是在线的,就可以和支付宝、微信支付的服务器端取得联系,确认我的身份信息和资金信息。这就类似商店老板认识我,知道我有足够的资金支付。

离线码是什么原理?我们平时离线付款的流程是这样的:商家在收款系统里设置好金额——我们打开支付宝——出示付款码——商家扫码——过了几秒钟商家收到信息“付款成功”。我们的支付宝和微信在绑定银行卡时都是经过实名认证的。所以支付软件上的识别系统会 根据我们每个人的信息设定好的算法、种子数据和时间等等因素来生成一个二维码,当我们用这个离线码进行支付的时候,商家的扫码枪会通过内部的计算来识别验证,识别正确后会进行支付扣费操作。

其实这个原理也很好理解,你存进支付宝微信里的钱并不是存在你的手机上,而是以一个数据存在终端服务器上,你的手机上产生的支付宝微信付款吗只是你一个凭证,当商家扫描你的手机付款码时代表着你出示了该凭证,商家会根据他办理三方收款平台连接的支付宝和微信在服务器上扣除,你手上的付款码就好比银行卡一样,钱不是存在银行卡里,卡只是一个凭证而已。

就像我们有些公交车收款系统不是实时在线的,可能跑完一趟车在联网或者一天结束后再联网,而收款系统在联网的时候才进行扣款的。就是双方都离线,就先记账,等到有网时候在进行验证扣款。这种付款它的原理来自于OTP,也称动态口令,是根据专门的算法在每隔60秒生成一个口令。它同样是通过客户端以及服务器之间共享秘密的一次认证技术!它要求,时间同步,在短短的60s内让动态令牌和动态口令验证服务器的时间比对;时间同步,通过特定的事件次序及相同的种子值作为输入,在HASH算法中获得相同密码,最后在挑战/应答中,验证通过。