本發(fā)明涉及二維碼支付方法,具體說(shuō)是一種基于二維碼的脫機(jī)支付方法。
背景技術(shù):
隨著智能手機(jī)的逐漸普及,二維碼作為一種成熟的圖像數(shù)據(jù)編碼識(shí)別技術(shù),具有手機(jī)硬件要求低、識(shí)別速度快、可支持用戶(hù)量大的優(yōu)點(diǎn),獲得越來(lái)越廣的應(yīng)用。而傳統(tǒng)的公交行業(yè)還停留在刷卡或投幣的方式,因此市民對(duì)二維碼支付在公交行業(yè)應(yīng)用提出了需求。
由于車(chē)輛移動(dòng)、電磁干擾、人流密集以及站臺(tái)地理位置等因素的影響,公交車(chē)輛聯(lián)網(wǎng)網(wǎng)絡(luò)存在穩(wěn)定性差、可靠性低的問(wèn)題,完全依靠網(wǎng)絡(luò)的二維碼聯(lián)機(jī)支付模式不具備可行性。由此,對(duì)二維碼脫機(jī)支付提出了需求。
二維碼脫機(jī)支付應(yīng)滿(mǎn)足安全性和便攜性的要求。目前,支付代理服務(wù)市場(chǎng)處于多家競(jìng)爭(zhēng)的局面,對(duì)終端受理支持提出了開(kāi)放性和公平競(jìng)爭(zhēng)的需求:1、實(shí)現(xiàn)二維碼支付流程的安全性和有效性;2、實(shí)現(xiàn)支付交易數(shù)據(jù)的完整性和不可抵賴(lài)性;3、實(shí)現(xiàn)多賬戶(hù)發(fā)行方接入機(jī)制。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于二維碼的脫機(jī)支付方法,可解決上述背景要求。
本發(fā)明一種基于二維碼的脫機(jī)支付方法,包括以下步驟:
1)賬戶(hù)發(fā)行方服務(wù)器產(chǎn)生用于證書(shū)簽名的非對(duì)稱(chēng)密鑰,并將包含有非對(duì)稱(chēng)密鑰對(duì)的公鑰和賬戶(hù)發(fā)行方信息的賬戶(hù)發(fā)行方信息列表以及黑名單發(fā)布給終端服務(wù)器,將用私鑰簽名的用戶(hù)證書(shū)發(fā)送到通過(guò)賬戶(hù)申請(qǐng)的手機(jī)客戶(hù)端;
2)終端服務(wù)器生成終端運(yùn)營(yíng)方時(shí)間戳主密鑰,以特定的算法和分散因子分散得到終端運(yùn)營(yíng)方時(shí)間戳子密鑰并發(fā)送到賬戶(hù)發(fā)行方服務(wù)器;同時(shí)賬戶(hù)發(fā)行方服務(wù)器獲取終端服務(wù)器系統(tǒng)時(shí)鐘完成時(shí)間同步,生成賬戶(hù)發(fā)行方時(shí)間戳主密鑰,同樣以特定的算法和分散因子分散得到賬號(hào)發(fā)行方時(shí)間戳子密鑰;
3)聯(lián)網(wǎng)狀態(tài)下手機(jī)客戶(hù)端通過(guò)服務(wù)接口從賬戶(hù)發(fā)行方獲取終端運(yùn)營(yíng)方時(shí)間戳子密鑰、賬戶(hù)發(fā)行方時(shí)間戳子密鑰和系統(tǒng)時(shí)鐘,在脫機(jī)支付時(shí)根據(jù)本地時(shí)間和系統(tǒng)時(shí)鐘的時(shí)間偏差計(jì)算正確的系統(tǒng)時(shí)間,同時(shí)根據(jù)終端運(yùn)營(yíng)方時(shí)間戳子密鑰和賬戶(hù)發(fā)行方時(shí)間戳子密鑰分別獲取終端運(yùn)營(yíng)方時(shí)間戳和賬戶(hù)發(fā)行方時(shí)間戳,并將用戶(hù)證書(shū)、系統(tǒng)時(shí)間、終端運(yùn)營(yíng)方時(shí)間戳和賬戶(hù)發(fā)行方時(shí)間戳作為二維碼數(shù)據(jù)合成二維碼;
4)終端在聯(lián)網(wǎng)狀態(tài)下與終端服務(wù)器完成時(shí)鐘同步,并通過(guò)服務(wù)端口獲取用以?huà)叽a驗(yàn)證數(shù)據(jù)的系統(tǒng)時(shí)鐘、黑名單、終端時(shí)間戳主密鑰和賬號(hào)發(fā)行方信息列表,在脫機(jī)狀態(tài)下完成掃碼驗(yàn)證;
5)支付驗(yàn)證通過(guò)后,終端將相關(guān)的交易數(shù)據(jù)保存,聯(lián)網(wǎng)時(shí)發(fā)送到終端服務(wù)器,再由終端服務(wù)器形成交易訂單提交給賬戶(hù)發(fā)行方服務(wù)器,賬戶(hù)發(fā)行方服務(wù)器利用賬戶(hù)發(fā)行方時(shí)間戳主密鑰驗(yàn)證交易訂單賬戶(hù)發(fā)行方時(shí)間戳,驗(yàn)證通過(guò)則應(yīng)予支付,完成交易訂單;否則拒絕支付,交易訂單作廢。
進(jìn)一步地,所述的非對(duì)稱(chēng)密鑰采用sm2算法密鑰。
進(jìn)一步地,步驟1)中的所述的用戶(hù)證書(shū)包括用戶(hù)信息和證書(shū)有效期。
進(jìn)一步地,步驟2)中所述的終端運(yùn)營(yíng)方時(shí)間戳主密鑰和賬戶(hù)發(fā)行方時(shí)間戳主密鑰均為按日周期產(chǎn)生的對(duì)稱(chēng)密鑰,可由固定密鑰對(duì)時(shí)間數(shù)據(jù)分散產(chǎn)生或由隨機(jī)數(shù)構(gòu)成。
進(jìn)一步地,步驟2)中所述的分散因子包括用戶(hù)賬戶(hù)信息和證書(shū)有效期。
進(jìn)一步地,步驟4)中掃碼驗(yàn)證分為以下步驟:
s1、終端掃描手機(jī)客戶(hù)端生成的二維碼,獲取二維碼數(shù)據(jù);
s2、終端使用賬戶(hù)發(fā)行方信息列表中的公鑰信息判斷用戶(hù)證書(shū)簽名的有效性,通過(guò)進(jìn)行下一步s3,不通過(guò)跳轉(zhuǎn)s7;
s3、終端使用運(yùn)營(yíng)方時(shí)間戳主密鑰按照相同的算法和分散因子計(jì)算終端運(yùn)營(yíng)方時(shí)間戳子密鑰,驗(yàn)證二維碼數(shù)據(jù)的終端運(yùn)營(yíng)方時(shí)間戳的有效性,通過(guò)進(jìn)行下一步s4,不通過(guò)跳轉(zhuǎn)s7;
s4、終端驗(yàn)證用戶(hù)證書(shū)有效期的有效性,通過(guò)進(jìn)行下一步s5,不通過(guò)跳轉(zhuǎn)s7;
s5、終端驗(yàn)證二維碼展示有限期的有效性,通過(guò)進(jìn)行下一步s6,不通過(guò)跳轉(zhuǎn)s7;
s6、終端判斷用戶(hù)是否屬于黑名單,“是”進(jìn)行下一步s7,“否”跳轉(zhuǎn)到s8;
s7、交易終止,終端不記錄交易數(shù)據(jù),跳轉(zhuǎn)s1;
s8、終端認(rèn)可交易,顯示交易成功,并記錄交易數(shù)據(jù);
s9、終端檢測(cè)聯(lián)網(wǎng)信號(hào),若與終端服務(wù)器通訊暢通,則終端啟動(dòng)另一線(xiàn)程將交易數(shù)據(jù)上傳到終端服務(wù)器,完成后進(jìn)行下一步s10;否則直接跳轉(zhuǎn)s10;
s10、跳轉(zhuǎn)s1,終端主線(xiàn)程循環(huán)上述步驟。
進(jìn)一步地,步驟5)中驗(yàn)證通過(guò)后,賬戶(hù)發(fā)行方服務(wù)器利用風(fēng)控系統(tǒng)對(duì)拒絕支付的用戶(hù)判斷是否拉入黑名單。
本方法針對(duì)公交行業(yè)二維碼應(yīng)用的要求和現(xiàn)狀提出脫機(jī)交易的機(jī)制,解決脫機(jī)支付的安全性問(wèn)題:
1、采用非對(duì)稱(chēng)密鑰簽發(fā)證書(shū),杜絕用戶(hù)身份信息被偽造和纂改;
2、非對(duì)稱(chēng)密鑰由帳戶(hù)發(fā)行方管理,確保帳戶(hù)發(fā)行方的安全權(quán)益,終端采用動(dòng)態(tài)更新公鑰列表的方式,實(shí)現(xiàn)對(duì)多個(gè)帳戶(hù)發(fā)行方的支持,并保持程序的簡(jiǎn)單和不變;
3、非對(duì)稱(chēng)密鑰選取國(guó)密sm2標(biāo)準(zhǔn)算法,在保障密鑰強(qiáng)度的前提下,減少簽名數(shù)據(jù)長(zhǎng)度,從而提高二維碼的數(shù)據(jù)容量,提高識(shí)別率;
4、使用時(shí)間戳機(jī)制,二維碼含有時(shí)間信息及對(duì)時(shí)間信息加密計(jì)算的時(shí)間戳,終端依靠對(duì)時(shí)間戳的認(rèn)證,限制二維碼脫機(jī)使用的時(shí)間范圍,可使二維碼在數(shù)秒后永久失效,解決二維碼被復(fù)制重發(fā)的安全問(wèn)題;
5、采用服務(wù)器時(shí)鐘同步接口,手機(jī)客戶(hù)端和終端統(tǒng)一到服務(wù)器進(jìn)行時(shí)鐘同步,并使用記錄的時(shí)間偏移進(jìn)行糾正,減少終端盒手機(jī)客戶(hù)端的時(shí)鐘誤差。
6、采用雙時(shí)間戳機(jī)制,其中一個(gè)時(shí)間戳密鑰由終端運(yùn)營(yíng)方控制,用于防止復(fù)制重發(fā),另一個(gè)由帳戶(hù)發(fā)行方控制,用于防止終端運(yùn)營(yíng)方偽造交易。
7、采用緊急黑名單機(jī)制,解決用戶(hù)惡意透支及用戶(hù)手機(jī)客戶(hù)端被黑客攻擊導(dǎo)致透支額及頻度異常的問(wèn)題。
附圖說(shuō)明
圖1是本發(fā)明的支付流程圖;
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的實(shí)施例作詳細(xì)描述,以下僅為本發(fā)明較佳的實(shí)施例,并非用于限制本發(fā)明。
如圖1,基于二維碼的脫機(jī)支付,首先需要系統(tǒng)進(jìn)行初始化,賬戶(hù)發(fā)行方服務(wù)器采用sm2算法生成以日周期形式更新的非對(duì)稱(chēng)密鑰;終端服務(wù)器定期更新賬戶(hù)發(fā)行方信息列表和用戶(hù)黑名單,賬戶(hù)發(fā)行方信息列表包括賬戶(hù)發(fā)行方信息和非對(duì)稱(chēng)密鑰的公鑰信息;賬戶(hù)發(fā)行方服務(wù)器對(duì)用戶(hù)進(jìn)行信用評(píng)估,對(duì)用戶(hù)提供小額支付信用擔(dān)保,用戶(hù)通過(guò)手機(jī)客戶(hù)端向賬號(hào)發(fā)行方服務(wù)器發(fā)出賬號(hào)申請(qǐng),獲得相應(yīng)以非對(duì)稱(chēng)密鑰對(duì)的私鑰簽名的用戶(hù)證書(shū),用戶(hù)證書(shū)包括有用戶(hù)信息和證書(shū)有效期信息。
終端以日周期進(jìn)行初始化,初始化時(shí)會(huì)通過(guò)服務(wù)器接口與終端服務(wù)器聯(lián)網(wǎng)完成時(shí)鐘同步并下載最新的賬戶(hù)發(fā)行方列表和黑名單;終端服務(wù)器生成當(dāng)前日期對(duì)應(yīng)的終端運(yùn)營(yíng)方時(shí)間戳主密鑰,一天對(duì)應(yīng)一條,可一次生成當(dāng)前日期之后多天的密鑰,同時(shí)終端通過(guò)服務(wù)器接口下載運(yùn)營(yíng)方時(shí)間戳主密鑰,可一次下載當(dāng)前日期之后多天的密鑰;終端運(yùn)營(yíng)方時(shí)間戳主密鑰以用戶(hù)信息和證書(shū)有效期作為分散因子,分散獲得的終端運(yùn)營(yíng)方時(shí)間戳子密鑰發(fā)送到賬戶(hù)發(fā)行方服務(wù)器。
手機(jī)客戶(hù)端也會(huì)按日周期進(jìn)行初始化,通過(guò)服務(wù)接口向賬戶(hù)發(fā)行方服務(wù)器獲取系統(tǒng)時(shí)鐘、賬戶(hù)發(fā)行方時(shí)間戳子密鑰和終端運(yùn)營(yíng)方子密鑰;賬戶(hù)發(fā)行方子密鑰由賬戶(hù)發(fā)行方服務(wù)器以日周期生成的賬戶(hù)發(fā)行方時(shí)間戳主密鑰以用戶(hù)證書(shū)和證書(shū)有效期作為分散因子所獲得的。
公交車(chē)是移動(dòng)的,無(wú)法使用有線(xiàn)網(wǎng)絡(luò),站點(diǎn)的無(wú)線(xiàn)信號(hào)不穩(wěn)定,終端與終端服務(wù)器通訊不暢通;客流量峰值大,人流密集,導(dǎo)致用戶(hù)端的網(wǎng)絡(luò)不穩(wěn)定。公交支付對(duì)交易速度和交易穩(wěn)定性要求高,而聯(lián)機(jī)交易速度慢且依賴(lài)網(wǎng)絡(luò),環(huán)境要求高,只有采取終端和手機(jī)客戶(hù)端全脫機(jī)驗(yàn)證的方式。
在脫機(jī)狀態(tài)下,手機(jī)根據(jù)系統(tǒng)時(shí)鐘和本地時(shí)間的時(shí)間偏差計(jì)算正確的系統(tǒng)時(shí)間,由運(yùn)營(yíng)方時(shí)間戳子密鑰和賬戶(hù)發(fā)行方時(shí)間戳子密鑰獲取運(yùn)營(yíng)方時(shí)間戳和賬戶(hù)發(fā)行方時(shí)間戳,并以用戶(hù)證書(shū)、系統(tǒng)時(shí)間、運(yùn)營(yíng)方時(shí)間戳和賬號(hào)發(fā)行方時(shí)間戳作為二維碼數(shù)據(jù)合成二維碼;終端對(duì)二維碼進(jìn)行掃碼,獲取二維碼數(shù)據(jù),利用事先下載好的系統(tǒng)時(shí)鐘、黑名單、終端運(yùn)營(yíng)方時(shí)間戳主密鑰和賬戶(hù)發(fā)行方列表對(duì)二維碼進(jìn)行驗(yàn)證,具體步驟如下:
s1、終端掃描手機(jī)客戶(hù)端生成的二維碼,獲取二維碼數(shù)據(jù);
s2、終端使用賬戶(hù)發(fā)行方信息列表中的公鑰信息判斷用戶(hù)證書(shū)簽名的有效性,通過(guò)進(jìn)行下一步s3,不通過(guò)跳轉(zhuǎn)s7;
s3、終端使用運(yùn)營(yíng)方時(shí)間戳主密鑰按照相同的算法和分散因子計(jì)算終端運(yùn)營(yíng)方時(shí)間戳子密鑰,驗(yàn)證二維碼數(shù)據(jù)的終端運(yùn)營(yíng)方時(shí)間戳的有效性,通過(guò)進(jìn)行下一步s4,不通過(guò)跳轉(zhuǎn)s7;
s4、終端驗(yàn)證用戶(hù)證書(shū)有效期的有效性,通過(guò)進(jìn)行下一步s5,不通過(guò)跳轉(zhuǎn)s7;
s5、終端驗(yàn)證二維碼展示有限期的有效性,通過(guò)進(jìn)行下一步s6,不通過(guò)跳轉(zhuǎn)s7;
s6、終端判斷用戶(hù)是否屬于黑名單,“是”進(jìn)行下一步s7,“否”跳轉(zhuǎn)到s8;
s7、交易終止,終端不記錄交易數(shù)據(jù),跳轉(zhuǎn)s1;
s8、終端認(rèn)可交易,顯示交易成功,并記錄交易數(shù)據(jù);
s9、終端檢測(cè)聯(lián)網(wǎng)信號(hào),若與終端服務(wù)器通訊暢通,則終端啟動(dòng)另一線(xiàn)程將交易數(shù)據(jù)上傳到終端服務(wù)器,完成后進(jìn)行下一步s10;否則直接跳轉(zhuǎn)s10;
s10、跳轉(zhuǎn)s1,終端主線(xiàn)程循環(huán)上述步驟。
支付驗(yàn)證通過(guò)后,終端將相關(guān)的交易數(shù)據(jù)保存,聯(lián)網(wǎng)時(shí)發(fā)送到終端服務(wù)器,再由終端服務(wù)器形成交易訂單提交給賬戶(hù)發(fā)行方服務(wù)器,賬戶(hù)發(fā)行方服務(wù)器利用賬戶(hù)發(fā)行方時(shí)間戳主密鑰驗(yàn)證交易訂單賬戶(hù)發(fā)行方時(shí)間戳,驗(yàn)證通過(guò)則應(yīng)予支付,完成交易訂單;否則拒絕支付,交易訂單作廢。交易訂單通過(guò)后,用戶(hù)可能通過(guò)不同途徑產(chǎn)生止付操作,賬戶(hù)發(fā)行方服務(wù)器可通過(guò)風(fēng)控系統(tǒng)分析交易行為產(chǎn)生黑名單。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。