本發明涉及計算機互聯網技術領域,尤其涉及一種流水號的生成方法及終端。
背景技術:
在當前“互聯網+”的大環境下,電子商務和O2O應用變得越來越普遍,用戶可以方便地通過電腦、手機、平板電腦等終端設備向服務器發起線上支付或移動支付的交易請求。針對每一筆交易請求,客戶端均需按照一定的規則為該交易請求生成一個流水號,作為標識信息。服務器根據這個流水號處理這筆交易請求,并跟蹤這筆交易的完整交易日志。
現有技術中的流水號生成方法,采用較為簡單的生成規則,只包含時間信息和隨機數,該時間信息為以年月日時分秒的格式保存的終端中設定的時間,隨機數為終端為該交易請求在一定范圍內隨機生成的整數。由于時間信息只能精確到秒的量級,所以在大量終端并發的情況下,不同客戶端在同一時間發來的交易請求可能會出現流水號中的時間信息和隨機數都相同的情況,即使是不同終端在不同時間發來的交易請求,也有可能因為不同終端時間設定的差別,出現流水號中的時間信息和隨機數都相同的情況,從而導致流水號重復的問題。如不同終端的交易請求的流水號重復,則流水號不能用于唯一地標識一筆交易,這給后續服務器根據這個流水號處理交易請求,以及后續交易日志的查詢跟蹤等都帶來了困難。
技術實現要素:
本發明提供一種流水號的生成方法及終端,用于解決不同終端的交易請求的流水號重復的問題。
本發明實施例提供的一種流水號的生成方法,包括:
終端接收交易的流水號分配請求消息;
所述終端根據所述分配請求消息,獲取所述終端的標識信息和當前時間信息,并為所述交易生成一個隨機數;
所述終端至少根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號。
可選的,所述終端獲取所述終端的標識信息和當前時間信息,包括:
所述終端獲取所述終端的初始標識信息和初始當前時間信息;
所述終端對所述初始標識信息和所述初始當前時間信息進行編碼,得到所述終端的標識信息和當前時間信息;所述終端的標識信息所占用的位數小于所述終端的初始標識信息所占用的位數,所述終端的當前時間信息所占用的位數小于所述終端的初始當前時間信息所占用的位數。
可選的,所述終端為所述交易生成一個隨機數,包括:
所述終端為所述交易生成一個初始隨機數;
所述終端根據對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統對所述初始隨機數進行編碼,得到所述隨機數;所述隨機數所占用的位數小于所述初始隨機數所占用的位數。
可選的,所述終端對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統為36進制數字系統。
可選的,所述終端至少根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號之前,還包括:
所述終端獲取所述終端采用的運行系統的標識信息;
所述終端至少根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號,包括:
所述終端根據所述運行系統的標識信息、所述終端的標識信息、所述當前時間信息以及所述隨機數生成所述交易的流水號。
本發明實施例提供的一種終端,包括:
接收模塊,用于接收交易的流水號分配請求消息;
處理模塊,用于根據所述分配請求消息,獲取所述終端的標識信息和當前時間信息,并為所述交易生成一個隨機數;
生成模塊,用于至少根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號。
可選的,所述處理模塊具體用于:
獲取所述終端的初始標識信息和初始當前時間信息;
對所述初始標識信息和所述初始當前時間信息進行編碼,得到所述終端的標識信息和當前時間信息;所述終端的標識信息所占用的位數小于所述終端的初始標識信息所占用的位數,所述終端的當前時間信息所占用的位數小于所述終端的初始當前時間信息所占用的位數。
可選的,所述處理模塊具體用于:
為所述交易生成一個初始隨機數;
根據對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統對所述初始隨機數進行編碼,得到所述隨機數;所述隨機數所占用的位數小于所述初始隨機數所占用的位數。
可選的,所述處理模塊對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統為36進制數字系統。
可選的,所述生成模塊還用于:
獲取所述終端采用的運行系統的標識信息;
根據所述運行系統的標識信息、所述終端的標識信息、所述當前時間信息以及所述隨機數生成所述交易的流水號。
本發明實施例中,終端在接收到交易的流水號分配消息后,獲取所述終端的標識信息和當前時間信息,并為所述交易生成一個隨機數,進而終端至少根據終端的標識信息、當前時間信息以及隨機數為所述交易生成一個流水號。由于在流水號中引入了終端的標識信息,可以使得不同終端發起的交易請求即使時間信息和隨機數都相同,也會因存在不同的終端標識,具有不同的流水號,從而有效避免流水號重復的問題,保證了流水號的唯一性。而且,服務器可以通過流水號中終端的標識信息識別發起交易請求的終端,從而使得服務器進行交易請求處理、異常情況處理以及功能擴展時都較為便利。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域的普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例中的一種流水號的生成方法所對應的流程示意圖;
圖2是本發明實施例中的一種終端的結構示意圖;
具體實施方式
為了使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述,顯然,所描述的實施例,僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬于本發明保護的范圍。
本發明實施例中的終端可以為電腦、智能手機、平板電腦等多種類型的智能終端。終端安裝與服務器端的服務程序相對應的客戶端軟件后,可以與服務器端進行通訊,進而通過該客戶端軟件發起交易請求,并為該交易請求生成唯一的流水號。
下面結合說明書附圖對本發明實施例作進一步詳細描述。
圖1為本發明實施例提供的一種流水號的生成方法所對應的流程示意圖,如圖1所示,包括以下步驟101至步驟103:
步驟101:終端接收交易的流水號分配請求消息;
步驟102:所述終端根據所述分配請求消息,獲取所述終端的標識信息和當前時間信息,并為所述交易生成一個隨機數;
步驟103:所述終端至少根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號。
本發明實施例中,由于不同的終端具有不同的標識信息,所以在流水號中引入了終端的標識信息后,可以使得不同終端的交易請求即使時間信息和隨機數都相同,也會因為不同的終端的標識信息而具有不同的流水號,從而有效避免了流水號重復的問題,保證了流水號的唯一性。
具體來說,在步驟101中,當用戶在一客戶端軟件中提交一筆交易請求后,客戶端軟件向終端發送該交易的流水號分配請求消息,從而觸發終端為該交易分配流水號。
隨后,在步驟102中,終端獲取所述終端的標識信息和當前時間信息,包括:終端獲取所述終端的初始標識信息和初始當前時間信息,并對所述初始標識信息和所述初始當前時間信息進行編碼,得到所述終端的標識信息和當前時間信息,所述終端的標識信息所占用的位數小于所述終端的初始標識信息所占用的位數,所述終端的當前時間信息所占用的位數小于所述終端的初始當前時間信息所占用的位數。
需要說明的是,本發明實施例中,終端的初始標識信息和標識信息均是指用于唯一標識終端的信息,二者的區別僅在于所采用的表示形式不同。同樣地,初始當前時間信息和當前時間信息均是指終端接收到流水號分配請求消息,開始分配流水號時的時間信息,二者的區別也僅在于所采用的表示形式不同。
具體來說,服務器會預先為各個終端分配ID,用于唯一標示終端,ID可以為以數字形式表示的一串號碼,其中可包含終端的多種硬件設備信息,如網卡號等。進一步地,ID通常采用12位的十進制數字的形式來表示,例如999999999999。本發明實施例中,終端的初始標識信息即為服務器預先為該終端分配的采用十進制數字表示的ID。
終端可通過應用程序接口獲取到初始當前時間信息。初始當前時間信息可采用多種形式表示,本發明實施例中,初始當前時間信息可以采用十進制數字形式表示。進一步地,為避免時間精度低的情況下,時間信息相同的現象,本發明實施例優選采用可精確到毫秒量級的13位十進制數字形式表示,例如1231235959999。其中,前4位1231為月日信息,表示12月31日,后9位235959999為時分毫秒數信息。
考慮到終端的初始標識信息和初始當前時間信息若采用十進制數字來標示時,初始標識信息和初始當前時間信息在流水號中占的位數較長,本發明實施例中,為了有效縮短后續生成的流水號的長度,可在終端獲取到終端的初始標識信息和初始當前時間信息后,對初始標識信息和初始當前時間信息進行編碼,以便于減少其所占用的位數,例如,可對初始標識信息和初始當前時間信息采用36進制的數字系統進行編碼,編碼后即可得到終端的標識信息和當前時間信息。其中,第一閾值可由本領域技術人員根據經驗設置。
具體來說,在進行編碼時,為使初始當前信息中的月日信息和時分毫秒數信息都有固定的位數,采用將月日信息和時分毫秒數分別編碼的方式,即針對月日信息和時分毫秒數分別采用36進制的數字系統進行編碼。根據上述介紹,終端的初始標識信息和初始當前時間信息采用十進制數字的形式表示時,分別占用12位和13位,則對初始標識信息和初始當前時間信息進行36進制編碼后,可得到終端的標識信息和當前時間信息,其中,終端的標識信息所占的位數為8位,當前時間信息所占的位數也為8位。
在步驟102中,終端還要為所述交易生成一個隨機數,包括:終端為所述交易生成一個初始隨機數,所述終端根據對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統對所述初始隨機數進行編碼,得到所述隨機數。初始隨機數通常為終端為一交易生成的一個隨機數字,對所述初始隨機數進行編碼后,可以有效減小隨機數所占的位數,也就是說編碼后生成的隨機數所占用的位數小于所述初始隨機數所占用的位數。本發明實施例中,初始隨機數可以為十進制的隨機數字,可以采用與初始標識信息和初始當前信息編碼相同的數字系統(例如36進制的數字系統)對初始隨機數字進行編碼,進而得到隨機數,具體來說,隨機數可以為由數字和大寫字母組成的36進制的4位數字的形式,如ABCD。
在步驟103中,終端可根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號。進一步地,本發明實施例中,為便于服務器根據終端的類型處理交易請求,終端還可獲取所述終端采用的運行系統的標識信息,隨后,終端可根據運行系統的標識信息、終端的標識信息、當前時間信息以及隨機數生成所述交易的流水號,從而服務器可以通過流水號中終端的標識信息以及終端運行系統的標識信息識別發起交易請求的終端和終端類型,可以使得服務器在處理交易請求、查詢追蹤交易的異常情況、擴展服務器功能時都較為便利。
其中,終端的運行系統是指終端設備的操作系統,舉例來說,如終端為手機,則終端的運行系統可以是Android、iOS等多種類型,如終端為電腦,則終端的運行系統可以是win8、win10等多種類型。在本發明實施例中,終端采用的運行系統的標識信息為服務器為各種運行系統分配的一位采用36進制數字表示的數字或字母。例如,服務器為Android系統分配標識信息A,為iOS系統分配標識信息B;終端可通過多種方式獲取運行系統的標識信息,在本發明實施例中,優選為,終端從發起交易請求的客戶端軟件的安裝包中獲取到運行系統的標識信息。
下面結合一個具體實施例對本發明實施例中流水號的生成方法的整個過程進行具體說明。
用戶通過Android終端上的某個客戶端軟件發起一交易請求,終端在接收到該交易的流水號分配請求消息后,獲取到該終端采用的運行系統的標識信息A,12位的該終端的初始標識信息999999999999,以及13位的初始當前時間1231235959999,然后為減小數據長度,終端將初始標識信息和初始當前時間進行36進行編碼,對終端的初始標識信息進行36進制編碼后得到8位的終端的標識信息CRE66I9R,對初始當前時間中的月日信息和時分毫秒數分別進行36進制編碼后,得到8位的當前時間信息,其中月日信息為Y7,時分毫秒數為3WHFWF,然后終端為該交易生成一個初始隨機數481261,然后將初始隨機數進行36進制編碼,得到隨機數為ABCD,進而終端將運行系統的標識信息、終端的標識信息、當前時間信息和隨機數等4個維度的信息集成到一個通訊報文中作為該交易請求的流水號。
本發明實施例,通過在流水號中引入終端的標識信息和采用的運行系統的標識信息,使得不同終端的交易請求的流水號即使在大量終端并發的情況下也不會相同,有效避免流水號重復的問題,保證了流水號的唯一性;而且,服務器可以通過流水號中終端的標識信息以及終端運行系統的標識信息識別發起交易請求的終端和終端類型,可以使得服務器在處理交易請求、查詢追蹤交易的異常情況、擴展服務器功能時都較為便利,進一步地,由于由于對終端的標識信息和當前時間信息采用了36進制的編碼方法,可有效降低該流水號的通信報文長度,增強終端與服務器間通訊的可靠性和效率。
圖2為本發明實施例提供的一種終端所對應的結構示意圖,如圖2所示,所述終端包括:
接收模塊201,用于接收交易的流水號分配請求消息;
處理模塊202,用于根據所述分配請求消息,獲取所述終端的標識信息和當前時間信息,并為所述交易生成一個隨機數;
生成模塊203,用于至少根據所述終端的標識信息、當前時間信息以及所述隨機數生成所述交易的流水號。
可選的,所述處理模塊202具體用于:
獲取所述終端的初始標識信息和初始當前時間信息;
對所述初始標識信息和所述初始當前時間信息進行編碼,得到所述終端的標識信息和當前時間信息;所述終端的標識信息所占用的位數小于所述終端的初始標識信息所占用的位數,所述終端的當前時間信息所占用的位數小于所述終端的初始當前時間信息所占用的位數。
可選的,所述處理模塊202具體用于:
為所述交易生成一個初始隨機數;
根據對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統對所述初始隨機數進行編碼,得到所述隨機數;所述隨機數所占用的位數小于所述初始隨機數所占用的位數。
可選的,所述處理模塊202對所述初始標識信息和所述初始當前時間信息進行編碼所采用的數字系統為36進制數字系統。
可選的,所述生成模塊203還用于:
獲取所述終端采用的運行系統的標識信息;
根據所述運行系統的標識信息、所述終端的標識信息、所述當前時間信息以及所述隨機數生成所述交易的流水號。
從上述內容可以看出:
本發明實施例中,終端在接收到交易的流水號分配消息后,獲取所述終端的標識信息和當前時間信息,并為所述交易生成一個隨機數,進而終端至少根據終端的標識信息、當前時間信息以及隨機數為所述交易生成一個流水號。由于在流水號中引入了終端的標識信息,可以使得不同終端發起的交易請求即使時間信息和隨機數都相同,也會因存在不同的終端標識,具有不同的流水號,從而有效避免流水號重復的問題,保證了流水號的唯一性。而且,服務器可以通過流水號中終端的標識信息識別發起交易請求的終端,從而使得服務器進行交易請求處理、異常情況處理以及功能擴展時都較為便利。
本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或兩個以上其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或兩個以上流程和/或方框圖一個方框或兩個以上方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或兩個以上流程和/或方框圖一個方框或兩個以上方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或兩個以上流程和/或方框圖一個方框或兩個以上方框中指定的功能的步驟。
盡管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明范圍的所有變更和修改。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。