當前位置:
首頁 > 知識 > 手機沒聯網,支付寶也支付成功了,這靠譜嗎?

手機沒聯網,支付寶也支付成功了,這靠譜嗎?


題圖來源:Yestone.com 版權圖片庫




支付寶和微信的付款沒網路時也可以支付是怎麼做到的?



用支付寶時發現沒開網路也能付款成功,原理是什麼呢?有沒有被破解的可能?




知友 | 天順



事實上支付寶和微信的「當面付」產品,是一款聯機在線支付產品,所以不允許雙方均離線的場景下支付(這一點和公交卡圈存支付不一樣,公交卡的近場支付事實上允許雙方離線)。




題目中所知的支付寶和微信沒有網路,指的都是消費者客戶端沒有網路,而不是雙方都沒有網路。



嚴格來說,當面付產品(特指商戶主動掃消費者錢包客戶端上的 token 碼進行支付的形態)必須要商戶在線方可進行聯機交易,原因有以下兩點:




1. 支付公司為了保證資金安全必須要確保每筆用戶的支付行為背後都真正發生了資金扣款,所以在線聯機確保支付成功是必要的。(這裡解釋了為什麼不允許雙方離線)




2. 商戶為了確保用戶的支付結果可信賴,必須要自己的終端或者系統從支付公司獲得支付結果,而不能以消費者的支付結果憑證作為結論。



以傳統 POS 業務舉例,你可以認為你的刷卡信息等同於支付寶的當面付碼,商戶必須要看到 POS 機打出支付成功單據後才認為支付有效,如果 POS 支付超時沒有回執,光憑客戶手中的銀行簡訊通知是不會讓客戶走的,而是會沖正掉上一筆交易讓客戶重新刷一筆。(這裡解釋了為什麼要選擇商戶必須聯機的方案)




那麼,我們來看看一個標準的當面付產品的信息流是什麼樣的(原諒我草草畫了一下):





我們可以看到在這個圖裡紅色圈圈部分,商戶系統和支付寶系統是對接上的,所以商戶系統是聯機的——而用戶的手機,在展示 code 的時候,我並未強調是否和支付寶服務端聯機。




事實上,不論是微信還是支付寶都支持兩種用戶碼生成模式,即在線碼和離線碼。




在線碼其實很容易理解,用戶目前是登錄錢包的狀態,只要點擊「付款」按鈕,客戶端就向支付寶的服務端申請一個針對這個客戶賬戶的支付憑證碼並展現到客戶手機上。




這個支付憑證碼在支付寶的服務端會有一組資料庫記錄其與真實客戶賬戶之間的關聯,並且這份關聯的有效期為 60S,超過時效即便商戶上送這個碼,支付寶也會認為這是作廢碼而不予處理。




用戶每次點開「付款」、等待超過 60S、主動刷新付款碼,都會觸發客戶端向伺服器申請一個新碼的請求。




這個方案的好處是:






  • 相對安全,每次碼都是服務端生成。



  • 業務靈活,即便對碼的安全演算法等進行較大的調整,也不用升級客戶端,因為是服務端發碼。




那離線碼的劣勢呢,我們看看:






  • 用戶 root/ 越獄手機後,保密存儲的種子數據有可能被不法分子利用惡意程序獲取到,導致離線碼被隨意生成用於消費。




恩……怎麼說呢,畢竟現在不是發燒友主動 root 越獄的用戶並不多,這是其一。




即便是 root 越獄,如果用戶使用手機的習慣良好,被惡意程序攻擊手機的概率也很低,這是其二。




每家公司都有自己的安全團隊去保障自己客戶端的數據安全,並不是說 root 的用戶就只能坐以待斃了,否則微信和支付寶早被搞破產了,這是其三。




當然從我個人的角度來說,普通用戶我都不建議去 root 或者越獄。




這個問題最粗暴的方案就跟反方向的鐘所說的一樣,監測到系統被 root 了就對用戶限權(很多銀行的客戶端方案都是這麼搞的)。




作為直接面向消費者市場且充分競爭的產品,微信支付和支付寶斷然不會採用上面那個方案的。






怎麼能又開放離線碼給用戶,又能確保用戶支付安全,本身也是支付公司安全競爭力的一部分,這裡就省略幾萬字了。




數據碰撞可能導致 A 用戶的碼扣到 B 用戶的賬戶?




恩,這裡涉及一些演算法問題,業務上就是碰了巧了 A 用戶碼算出來和 B 用戶碼一模一樣且都有效(兩個客戶端都沒作弊)。




在線碼之所以可以避免這個問題是因為在線碼是服務端發的,可以控冪等。




離線碼是客戶端自己根據演算法生成的,所以沒法控。




其實原因和哈希演算法的數據碰撞類似,是個小概率的純技術問題,就不展開贅述了。




解決方案:優化演算法(確保碰撞概率低到一定程度甚至杜絕),如果真的出現就認栽給客戶賠錢(賠多了技術部門老大就肯定痛定思痛優化演算法了)。




事實上這個問題發生的概率極低極低,所以可以忽略不計。




演算法調整不如在線碼靈活?




因為離線碼生成邏輯都在客戶端,所以通常來說安全演算法升級會導致客戶端升級,比在線碼升級更影響用戶一些。




分析到上面這層,各位產品經理相信應該就知道如何做方案選型了。(裝個逼,事實上我覺得了解到上面那個層面是支付行業產品經理的基本素質)




後話:




我在寫這個答案的時候其實都在刻意迴避公司實現這些業務的具體邏輯和演算法。而我個人並非當面付產品的產品經理,所以大家放心,這篇文章不算泄密。




寫這個答案的目的是希望能盡量站在產品和業務角度還原業務原理,希望更多的非行業內的知友知其然,也知其所以然。




點擊「閱讀原文」下載知乎日報 App


TAG: |

您可能感興趣

網聯實力打臉支付寶,移動支付或將收費?看來馬雲是難逃一劫了!
刷臉支付來真的?馬云:支付寶只差這一步了!
你掛了,支付寶里的錢怎麼辦?
支付寶不再需要手機?馬雲已經開始做了!
出門購物可以不帶手機?靜脈支付又刷新認知,支付還能怎麼玩?
還有這種操作?未來坐公交也能刷支付寶了!
支付寶「刷臉支付」即將上線!你還敢亂髮自拍嗎?
智能支付:馬雲帶來支付黑科技,付錢連手機都不用拿啦
你的手就是你的錢包!刷臉支付之後靜脈支付也來了
扔掉手機!剛剛,支付寶打響第一槍 蘋果或急眼了!
如果有一天支付寶倒閉了,那麼支付寶的錢怎麼辦?
馬雲的支付寶即將解鎖新技能:刷臉支付不是夢!
蘋果到了後面,為什麼不封殺淘寶和支付寶?不敢了?
牛了比!蘋果手機不能刷公交卡?支付寶幫它實現了
扔掉手機!剛剛,支付寶打響第一槍 蘋果或急眼了
靠臉吃飯?支付寶「刷臉支付」功能曝光
扔掉手機!剛剛,支付寶打響第一槍!
支付寶怎麼在一夜之間變身「支付鴇」了?
支付寶,你好棒噢!