刷你银行卡的时候,你的银行卡需要联网吗?
作为支付凭证,本来就不需要联网,只需要读取方可以确认你的账户就可以了。
而条码定时刷新则是为了防止盗刷的情况出现,银行卡是通过在磁条上储存卡号之外的信息来实现验证的。
所以,支付宝只要通过某种算法,把你的账户和某些验证信息一起算出一个条码就可以了,并不需要联网。
刚刚思考了一下,算法很可能是这样:
支付宝支付凭证(支付宝登陆时,连上网时,由服务器端定时推送) + 自增标识
通过某种算法得到一个条码
服务器端扫到这个条码解出支付宝支付凭证,再到库中查询对应账号,然后验证自增标识大于上次付款的自增标识,则认为支付合法。
这个算法足够安全:
1、支付凭证是由服务器端下发,也就是说你的账号如果没有在手机登陆,就绝对不可能被付款,在手机登录后,只有你的这个手机知道支付凭证,不可能通过其他手段算出。
2、支付凭证定期更新,即使破解出支付凭证,届时支付凭证已经过期。
3、自增标识可以避免拍照盗刷,即使拍到你的条码信息,只要进行一次支付,那么拍到的条码就作废了,或者我们可以约定每过多久自增标识就要增加1,这样即使你不进行支付,拍下来的条码在一段时间内也会作废。