高佩



關鍵詞:移動支付;二維碼支付;在線支付;脫機碼;弱網絡判斷
0 引言
隨著科技的日新月異,移動支付發展迅猛,我國2021年第三方移動支付規模為288.1萬億元,近三年保持高速增長,預計2025年該市場規模擴大為500萬億元[1]。移動支付已經深入人們生活的各個方面,二維碼支付作為移動支付的主要方式發揮著舉足輕重的作用。二維碼支付主要包括二維碼主掃支付和付款碼支付等方式。付款碼支付主要用于線下商戶付款,如超市排隊掃碼支付、地鐵掃碼過閘等場景[2],由于其支付的快捷性、便利性,深受人們喜愛。目前付款碼支付主要是在聯機狀況下進行,在網絡狀況比較差的情況下無法快速生成付款碼進行支付,造成用戶支付等待或者取消支付交易等問題。為此本文提出了一種不同網絡狀態下主動選擇最優付款碼的支付方案,以實現不同網絡環境下快速生成付款碼進行支付,為用戶帶來快速、安全、便捷的支付體驗。
1 現有技術方案及問題
1.1 當前付款碼支付實現方法
目前付款碼支付主要采取付款時直接聯機發起請求生成付款碼,并展示給商戶進行掃碼支付,經過支付驗證(短信驗證碼、支付密碼以及生物特征驗證)之后實時獲取支付結果。這種方式的優點是用戶的客戶端和服務器時刻保持通信,在線驗證并結合營銷活動,豐富支付場景,保障支付安全,同時用戶可以實時獲取到支付結果,具有較好的用戶交互體驗。
1.2 現有技術方案存在的問題
現有付款碼支付方式雖然有其自身優勢,但是也存在如下問題:
1) 在網絡比較差的情況下,無法快速生成付款碼進行支付。目前很多商場網絡狀況不是很好,用戶客戶端無法與服務器建立有效連接,導致用戶無法生成付款碼或生成付款碼緩慢,影響用戶支付。
2) 網絡請求多,耗費用戶流量,同時造成后臺壓力。支付過程中用戶客戶端需要與服務器建立連接,不斷發送網絡請求,實時獲取支付狀態,浪費用戶流量。同時,在營銷活動期間用戶集中使用付款碼支付時,容易造成服務器壓力甚至宕機。
3) 無法針對不同網絡狀況主動選擇最優的付款碼支付方式。目前很多應用未對用戶終端網絡狀態進行主動偵測和評估,進而無法實現綜合考慮安全性和高效性等因素,在不同網絡狀態下及時為用戶切換為最優的付款碼支付方式,導致用戶體驗不佳。
2 不同網絡狀態下主動選擇最優付款碼的支付方案
鑒于目前付款碼支付方案存在的問題,本文將脫機碼算法應用于付款碼支付,提出了一種不同網絡狀態下主動選擇最優付款碼的支付方案。
2.1 方案總體設計
該方案通過發送socket包的方式進行弱網絡檢測,能夠實時獲取用戶移動設備目前網絡狀況,當用戶打開付款碼時,若此時網絡狀態良好則優先發起聯機付款碼請求,應答成功則直接展示聯機碼;若5s網絡應答還未成功,為減少用戶等待時間,優先展示脫機碼。當用戶打開付款碼時,若網絡狀態不佳則優先展示脫機碼。這樣能夠保證用戶在不同網絡狀況下,綜合考慮安全性和高效性等因素,快速生成付款碼進行支付,減少等待時間,提升用戶支付體驗[3]。方案中付款碼支付業務主要涉及弱網絡檢測、聯機碼在線支付及脫機碼離線支付等模塊,方案總體框架圖如圖1 所示。
2.2 付款碼在線支付過程
付款碼在線支付要求用戶客戶端保持網絡在線狀態,當用戶點擊付款碼時客戶端發起網絡請求,根據服務器應答判斷當前用戶是否滿足實名、設置支付密碼、有可支付卡等條件,若滿足相應支付條件則直接生成聯機碼并展示給商戶,否則跳轉至相應引導流程處理。在展示付款碼過程中,客戶端會不斷發送請求,查詢付款碼是否被掃碼,若已經被掃則根據服務器返回的驗證要素,要求用戶輸入短信驗證碼、支付密碼或者生物特征要素進行支付驗證[4]。當所有支付驗證要素驗證通過則不斷發送請求輪詢支付結果,查詢成功則直接展示交易結果頁。付款碼在線支付具體流程如圖3所示。
付款碼在線支付通過客戶端與服務器不斷通信交互,實現快速申碼—在線支付驗證—展示交易結果的支付流程,具有較高的安全性和良好的用戶支付體驗。
2.3 付款碼離線支付過程
在用戶客戶端斷網或網絡比較差的情況下,通過弱網絡檢測機制偵測出當前網絡狀態,若判斷為弱網絡,則生成脫機碼進行離線支付。脫機碼是客戶端將從服務器預先獲取的種子信息通過一系列算法運算生成的脫機付款碼,當用戶進行支付被掃時,將相應脫機碼傳遞給后臺,后臺將其與該用戶對應時間窗口的脫機碼列表(服務器運用與客戶端相同的算法將種子生成相應的脫機碼列表)進行比對,有相同脫機碼則驗證通過,并將支付成功結果通知商戶[5]。這樣就實現了在用戶移動設備網絡狀態不佳或無網絡的情況下進行支付,滿足用戶離線支付的需求。
1) 種子申請及脫機碼生成過程
客戶端在特定時機(啟動、前后臺切換等)檢測本地種子是否過期,過期則發起請求申請更新種子信息。獲取到種子信息后將其拆分為不同的屬性文件進行加密存儲,當需要使用脫機碼時,客戶端讀取屬性文件經過一系列格式轉換、OTP算法及FPE算法最終生成脫機碼用于用戶離線支付。具體流程見圖4。
2) 脫機碼文件存儲方式及文件內容
客戶端發起申請種子的請求,后臺以列表的形式返回種子列表(包含卡號掩碼、種子、混淆因子及種子有效期等若干屬性)??蛻舳双@取到種子列表后將其中的屬性打散分開存儲到多個不同文件,每個屬性文件只存儲其中的若干個屬性,本地每個種子文件中僅維護各屬性的一個數組,并不保存種子列表的具體結構。所有文件存儲到文件系統特定目錄中,每次退出登錄都會刪除相應目錄及文件,確保種子文件數據安全。
3) 脫機碼文件加密方式及密鑰安全
每個屬性文件分別采用不同的對稱密鑰(AES) 進行加密,其中對稱加密密鑰為用戶標識與本地密鑰組合而成,做到不同用戶不同密鑰,以避免單個用戶密鑰泄露影響其他用戶數據安全。每個屬性文件有單獨一套密鑰,單套密鑰泄露并不會影響數據安全。每套密鑰在C++代碼中保存,進行分段混淆,存儲在不同位置,并打包成靜態包.a文件導入工程中,避免被破解風險。
4) 種子列表組裝及脫機碼生成使用
每次需要使用種子時,從本地讀取各個屬性文件,并根據相應規則進行組裝、解密,以得到完整的種子列表。獲取到相應的種子及種子要素之后,將其進行一系列格式轉換并傳入OTP算法,最終再通過FPE 算法生成脫機碼,展示給用戶用于離線支付。
2.4 付款碼支付安全性保障
付款碼在線支付時客戶端能夠根據后臺指定的風控級別分別采用免密/密碼/密碼+短信/生物特征驗證等不同級別的校驗方式,進行實時風控;付款碼離線支付時對種子屬性文件進行拆分,并使用對稱密鑰(AES) 進行加密和混淆,避免本地種子屬性文件外泄,且不同用戶種子文件無法共用,通過脫機碼算法生成的付款碼在有效期內僅可支付一次,無法重復使用。同時后臺能夠根據不同地區和用戶級別對付款碼支付功能進行灰度,并對用戶當日交易金額和交易筆數進行限制,避免異常交易帶來的風險,從而保證付款碼支付更加安全可靠。
3 結束語
基于安全性和高效性的原則,本文提出了一種不同網絡狀態下主動選擇最優付款碼的支付方案。該方案將脫機碼算法運用于付款碼支付場景,由本地預獲取的種子信息生成脫機付款碼,進行離線支付。同時通過弱網絡檢測機制偵測出當前用戶移動設備的網絡狀態,綜合安全、高效、便捷的原則,為用戶快速自動切換聯機碼或脫機碼,減少用戶等待時間,優化支付流程,保障支付安全,為用戶提供更好的支付體驗。