『壹』 支付寶和微信的付款沒網路時也可以支付是怎麼做到的
離線支付的關鍵點一:付款碼可以離線生成
付款碼生成過程:
1、用戶打開支付寶App時,會向服務端申請令牌種子;
2、支付寶伺服器會根據演算法生成一個令牌種子,返回給支付寶App;
3、支付寶App得到令牌種子後,根據演算法生成付款碼(可以離線生成)。
離線支付的關鍵點二:付款碼是一次性且實時更新
1、支付寶App生成的付款碼會包含有用戶標識、令牌值等信息;
2、付款碼是一次性的,且每分鍾會更新一次。
這樣就不會出現別人把你的付散前款碼列印出來再去付款。
離線支付的關鍵點三:付款碼能離線,掃碼槍需在線
付款埋滾碼離線支付過程:
1、線下支付時,用戶打開支付寶App,出示付款碼(可以離線);
2、商家用掃碼槍讀取付款碼,並上傳至支付寶伺服器;
3、支付寶伺服器收到商家傳來的付款碼後,與令牌系統里保存的信息進行對比;
4、比對通過則創建支付訂單,並返回給商戶訂單信息,如果余額足夠便可完成支付。
也就是說,付款方可以離線,但收款方得在線。通過在線的收款方搭橋,將沖液清離線的付款信息傳到支付寶伺服器端進行校驗。
離線支付的特殊情況:付款方、收款方雙離線
前面說到離線支付通常得付款方、收款方有一方得在線。但有一種特殊的場景,雙方都能離線。
在支付寶的城市服務里,有公交付款的功能,目前已在部分城市部分線路落地。將來出門再也不必帶公交卡、帶零錢了,帶著手機就行。開通這個功能的用戶,頁面會生成特定的付款碼(與支付寶首頁的付款碼不是同一個),通過花唄進行付款,也是一次性、每分鍾更新的。
用戶乘坐公交車時,用公交車付款碼進行付款。但有些公交車的收款系統不是實時在線的,可能是一路車跑完一趟後聯網,也可能是一天結束時聯網,而只有在公交車的收款系統聯網時才會進行扣費。
所以一句話來說,就是手機離線,就通過扣款電腦搭橋做安全驗證;如果雙方都離線,就先記賬,等能做安全驗證時再扣款。