專利名稱:訪問pos終端的系統(tǒng)、下載和更新應用的方法以及使用這種系統(tǒng)執(zhí)行電子操作的方法
技術領域:
本發(fā)明涉及使用由網(wǎng)絡連接到至少一個服務器的客戶機系統(tǒng)訪問POS和個人識別號輸入器(pin pad)的系統(tǒng),以及用于使用所述系統(tǒng)更新和下載應用和執(zhí)行多種操作的方法。
背景技術:
在電子操作行業(yè)(衛(wèi)生保健保險、誠信、預付費再充值、禮品卡等)的許多公司,不斷在尋求改進其服務并提供新服務以更具競爭力的解決方案。
在本發(fā)明出現(xiàn)之前,用戶,也稱為需求方,被提供的是技術上有限的終端。
關于可移植性,每個銷售點終端,本文稱其為POS終端,僅包括它們的專用硬件和操作系統(tǒng)。因此,應用需被重寫和適配于每種終端型號,這是既費力又昂貴的過程。應用的共享也不足,因為網(wǎng)絡中使用的POS終端只能發(fā)送和接收交易數(shù)據(jù),而不利用其它的網(wǎng)絡設施,例如應用服務器。而且,由于應用是硬編碼到POS終端(胖客戶機)內(nèi),所以,由于存儲器和開發(fā)的限制,要在同一機器上使用不同的應用就極其困難,甚至不可能。
于是,每臺POS終端過去都是在非自動化的過程中獨立更新的。近來,由POS終端制造商提供的非均勻環(huán)境和遠程升級系統(tǒng)常應用在升級過程中。但這些終端和它們相應的升級系統(tǒng)互相都不兼容,對每個系統(tǒng)和每個供貨商都要求特定的知識和維護人員,于是工作量和成本都要加倍。
現(xiàn)有技術中存在的另一問題是,需要具有先進的編程技巧以及對市場上每個終端制造商的專用操作環(huán)境有關其特異性有深刻的了解。這導致大量的成本用于培訓員工、應用開發(fā)和維護,結(jié)果限制了可用的POS服務和應用的范圍。
鑒于上述缺點,本發(fā)明提供了一種用于訪問POS設備的系統(tǒng),它將POS網(wǎng)絡轉(zhuǎn)換成服務網(wǎng)絡,并降低了在實現(xiàn)和管理這種POS網(wǎng)絡中的成本。
本發(fā)明的另一目的是提供一種系統(tǒng),它的特點是對于不同型號的POS終端中的應用具有更好的可移植性,以及允許在同一POS設備中共享多個應用。
本發(fā)明還有一個目的是提供一種用于訪問設備的系統(tǒng),它能使用戶在由不同供貨商制造的POS終端中執(zhí)行應用,而無需定制。
本發(fā)明的一個重要方面是該系統(tǒng)要設計成能補充標準POS終端的使用,而不是與它們競爭,因為許多公司,例如VeriFone、Ingenico、Lipman、Sagem、Axalto和Intellect等等,在很久以前就已經(jīng)開發(fā)了這種POS終端。
發(fā)明內(nèi)容本發(fā)明涉及用于訪問POS和個人識別號輸入器的客戶機系統(tǒng),將這種POS終端連接到包括至少一個服務器的網(wǎng)絡。該系統(tǒng)以類似于因特網(wǎng)的處理方式,使用TCP/IP(因特網(wǎng)、內(nèi)部網(wǎng)、VPN等)以及WML(無線標記語言)頁面和腳本,能使任何POS終端執(zhí)行位于連接到POS網(wǎng)絡的應用服務器上的應用。
客戶機系統(tǒng)技術實現(xiàn)了用于客戶機/服務器體系結(jié)構(gòu)的瘦客戶機模型。它假定客戶機直接訪問服務器,服務器上保留有所有的業(yè)務邏輯。這種假定本身對軟件開發(fā)和維護提供了兩個主要的優(yōu)點。應用開發(fā)全部發(fā)生在服務器端,這里有許多高生產(chǎn)率工具可用,且在服務器端更新之后客戶機端應用可立即自動升級。
針對第一代蜂窩電話的WAP標準和客戶機和服務器之間的通信懲罰有關。所以,WAP論壇規(guī)定了一些信息持續(xù)和數(shù)據(jù)確認的機制,它們在連續(xù)的WML(無線標記語言)頁面轉(zhuǎn)變期間大大減少了通過網(wǎng)絡交換的信息量。不變的屏幕頁面請求也可用HTTP或WSP Web協(xié)議高速緩存機制來避免,雖然仍然依賴于客戶機驅(qū)動的更新過程。因此,和WML腳本數(shù)據(jù)確認例行程序一起,WML瀏覽幾乎很像屏幕的POS應用流。
WML是目標在于創(chuàng)建數(shù)據(jù)錄入屏幕的說明性標記語言。它提供基本的輸入打字設施和基本的選項選擇。它具有易失性可變環(huán)境,用于在相同交易流的屏幕之間存儲信息。WML腳本是一個很小的寫腳本語言,設計為進行簡單的數(shù)據(jù)確認腳本寫入。WML和WML腳本都不提供任何持續(xù)的數(shù)據(jù)存儲,也不假定存在有任何特定的外圍設備。
用類推的方法,客戶機系統(tǒng)概念被引入到POS終端。具體的說,WML瀏覽器已顯示為是最接近的標準,其能對POS終端提供web和瀏覽益處,即使仍然缺少由電子操作所要求的一些關鍵特性,例如憑單打印和交易歷史存儲等等。
POS終端常具有外設,例如磁卡閱讀器、熱敏式打印機、個人識別號輸入器錄入設備、智能卡閱讀器以及通常通過標準RS-232接口集成的其它串行設備,例如條碼閱讀器、Mifare非接觸式讀卡器和/或支票閱讀器。除了外圍設備訪問之外,POS應用還要求有在標準WML和WML腳本定義上不可用的一些特性,例如持續(xù)數(shù)據(jù)記錄存儲、ISO8583消息格式化、分類信息加密以及增強數(shù)據(jù)錄入支持、EMV交易授權(quán)、以及用于撥號終端的SDLC和X.28傳統(tǒng)網(wǎng)絡支持。此外,還要求有服務器驅(qū)動的高速緩存更新策略,以便適合當前的交易服務器更新機制。
如在本發(fā)明中所述,該客戶機系統(tǒng)技術允許將POS終端用作多應用共享和增值服務的一個“低成本”平臺,將POS網(wǎng)絡變成一個“實際上”的服務網(wǎng)絡。
圖1示出經(jīng)由不同的通信協(xié)議連接到多個網(wǎng)絡的POS終端。
圖2示出由現(xiàn)有技術發(fā)展水平說明的每個POS終端的各自定制。
圖3示出本發(fā)明如何使任何定制POS終端能與應用服務器通信。
圖4示出由本發(fā)明執(zhí)行的上載-下載圖和電子操作圖。
圖5示出POS客戶機系統(tǒng)應用上載-下載序列圖。
圖6示出POS客戶機系統(tǒng)電子操作序列圖。
圖7示出POS客戶機系統(tǒng)體系結(jié)構(gòu)和協(xié)議層。
具體實施方式本發(fā)明包括一種用于訪問和連接定制POS終端10到任何網(wǎng)絡的系統(tǒng),使用的是特定的客戶機系統(tǒng)15。操作時,客戶機系統(tǒng)15承擔對POS終端10所有資源的控制,起操作系統(tǒng)的作用。它使任何POS終端10,以類似于因特網(wǎng)的處理方式,使用TCP/IP(因特網(wǎng)、內(nèi)部網(wǎng)、VPN等)以及WML(無線標記語言)頁面和腳本,能執(zhí)行位于連接到POS網(wǎng)絡的應用服務器30中的應用25??蛻魴C系統(tǒng)15在連接到截然不同的訪問網(wǎng)絡時還能使相同的應用25使用多個通信協(xié)議20,從而有可能使用TCP/IP、傳統(tǒng)網(wǎng)絡(例如SDLC和X.28)以及其它(GSM、GPRS、CDMA、以太網(wǎng)、Wi-Fi、藍牙、IR等),如圖1所示。另外,客戶機系統(tǒng)15還具有先進的高速緩存特性,其目的在于增加數(shù)據(jù)交換速度,甚至允許真正的離線操作??蛻魴C系統(tǒng)15還識別和控制連接到POS的所有輸入和輸出設備,例如磁卡閱讀器、智能卡閱讀器、打印機、個人識別號輸入器、條碼閱讀器、支票閱讀器、鍵盤、Mifare非接觸式讀卡器等等。
本發(fā)明提供的對應用服務器30的訪問使之有可能將因特網(wǎng)上可用的有關服務和應用的所有靈活性和功能性都引入到POS網(wǎng)絡。結(jié)果,這降低了維護成本并對應用升級過程增加了靈活性。此外,由于能夠使用截然不同的物理網(wǎng)絡,應用升級過程對于使用基于SDLC或其它異步協(xié)議的傳統(tǒng)網(wǎng)絡的平均數(shù)據(jù)交換時間不會造成損害。
圖2示出POS終端10過去經(jīng)常如何升級的。在本發(fā)明之前,應用需被定制,以便對每個POS終端型號必須執(zhí)行各個進入端口(porting)。這種操作過去都是逐個執(zhí)行的,對每個POS終端系統(tǒng)都要求有特定的知識和維護人員。
從圖3可見,使用通過網(wǎng)絡連接的應用服務器30,客戶機系統(tǒng)操作環(huán)境允許僅在一個POS終端10中共享任意數(shù)量的應用25,而且能夠遠程、自動和實時地升級這些應用。
為了解決上述問題,本發(fā)明定義了web客戶機系統(tǒng)擴展,它們將標準WAP瀏覽器適配為使用POS外設并將其擴展為執(zhí)行電子操作。
該解決方案用新技術解決了現(xiàn)有問題,將ISO8583操作在傳統(tǒng)協(xié)議諸如SDLC和X.28上的可靠性和執(zhí)行速度與web應用的可維護性和開發(fā)速度結(jié)合起來。
操作時,該客戶機系統(tǒng)15承擔對所有POS終端資源的控制,本身起操作系統(tǒng)的作用。它能使任何POS終端10,以類似于因特網(wǎng)的處理方式,使用在TCP/IP上的HTTP,可選由SSL協(xié)議保護,來運行從連接到POS網(wǎng)絡的應用服務器30下載的web應用25。使用簡單的撥號連接,或?qū)拵ЬW(wǎng)絡如GPRS、CDMA 1X、Ethernet II和Wi-Fi(IEEE802.11),就可完成對應用服務器30的TCP/IP訪問。
POS web應用,由WML頁面、腳本和其它文件組成,與交易服務器35執(zhí)行ISO8583電子操作,假裝是一個常規(guī)的C應用程序。這些操作在SDLC/X.28撥號連接上或在TCP/IP寬帶網(wǎng)絡上流過。
該方案示于圖4。觀察這個圖,就可發(fā)覺在POS客戶機系統(tǒng)15的生命周期上有兩個截然不同的情況。第一個是當其連接到應用服務器30以下載或更新web應用時,且第二個是當該應用25連接到交易服務器35以進行電子交易時。
按照圖5,應用下載可在以下步驟詳述1.技術人員鍵入應用服務器連接設置。
2.POS客戶機系統(tǒng)15連接到遠程訪問服務器(RAS)45或附著到寬帶網(wǎng)絡。
3.POS客戶機系統(tǒng)15接收網(wǎng)際協(xié)議(IP)地址。
4.POS客戶機系統(tǒng)15與應用服務器30建立傳送控制協(xié)議(TCP)會話,并發(fā)送應用下載/更新請求,通常帶有HTTP(或HTTPs)POST命令。
5.應用服務器30處理該請求。
6.應用服務器30,假裝是POS終端10,用TCP/IP連接上的ISO8583消息,聯(lián)系交易服務器35。
7.交易服務器35用POS客戶機系統(tǒng)配置設置對應用服務器30作出響應。
8.應用服務器30處理該應用設置并建立定制型Web應用。
9.應用服務器30向POS客戶機系統(tǒng)15發(fā)送Web應用頁面、腳本和數(shù)據(jù)文件。
10.POS客戶機系統(tǒng)15處理所接收的文件。
11.POS客戶機系統(tǒng)15向技術人員發(fā)出應用下載/更新完成憑單。
12.POS客戶機系統(tǒng)15自動開始Web應用。
上述步驟6和7在該解決方案中是可選的。在另一使用情況下,應用服務器可只下載整個應用,而無需應用定制化過程或訪問交易服務器。
另外,電子操作執(zhí)行較簡單的過程,這可用以下步驟詳述,如圖6所示1.POS用戶鍵入交易數(shù)據(jù);2.POS客戶機系統(tǒng)15連接到遠程訪問服務器(RAS)45或附著到寬帶網(wǎng)絡。
3.POS客戶機系統(tǒng)15接收網(wǎng)絡訪問。
4.POS客戶機系統(tǒng)建立ISO8583消息。
5.POS客戶機系統(tǒng)向交易服務器35發(fā)送ISO8583消息。
6.交易服務器35用ISO8583消息對POS客戶機系統(tǒng)作出響應。
7.POS客戶機系統(tǒng)15處理所接收的消息。
8.POS客戶機系統(tǒng)15發(fā)出交易憑單。
1.體系結(jié)構(gòu)和協(xié)議層為了更好的定義本發(fā)明,以下詳述客戶機系統(tǒng)的體系結(jié)構(gòu),并將其分成特定層,如圖7所示。
1.1-通信協(xié)議關于通信協(xié)議,客戶機系統(tǒng)能夠通過以下協(xié)議之一運行操作TCP/IP/PPP、SDLC、X.28、GSM、GPRS、CDMA、以太網(wǎng)、Wi-Fi、藍牙、IR等。該應用負責選擇在操作期間應使用哪個協(xié)議。
1.2-安全協(xié)議瘦客戶機應用通過基于SSL 3.0標準的HTTPS協(xié)議與web服務器交換數(shù)據(jù)。SSL層在TCP協(xié)議之上運行,并對HTTP客戶機提供支持,以建立與任何依從服務器的安全連接。
客戶機系統(tǒng)支持以下加密機制RSA+RC4+MD5和RSA+3DES+MD5。這二者都支持PEM格式的服務器證書認證和客戶機證書認證。具有3DES的加密機制還支持PKCS12格式的客戶機證書認證。
1.3-交易協(xié)議客戶機系統(tǒng)支持HTTP、ISO8583和XML操作。HTTP操作通過WML標簽<go>即可用,且GET和POST命令都被支持。ISO8583和XML操作由WML腳本擴展提供。所有協(xié)議可共存于同一應用中,并可按照應用設置連接到截然不同的服務器。
1.4-運行時間引擎在提示用戶界面后,客戶機系統(tǒng)繼續(xù)等待用戶的交互,以相對于運行時間引擎觸發(fā)事件。這些事件按照當前頁面定義處理,并可觸發(fā)某種局部WML腳本處理或調(diào)用要加載的另一頁面。當新的WML頁面被加載時,由WML定制的XML語法分析程序分析其語法,并產(chǎn)生DOM語法樹。然后遍歷該語法樹,且設置運行時間間隔結(jié)構(gòu),以正確響應下一用戶產(chǎn)生的事件。頁面和腳本都可在客戶機系統(tǒng)的高速緩存中找到,或可向HTTP(S)服務器提出請求。
1.5-多應用管理器(MAM)客戶機系統(tǒng)多應用管理器允許多于一個應用在同一POS中駐留或被執(zhí)行。客戶機系統(tǒng)使用不同的虛擬執(zhí)行環(huán)境,使應用和其它應用隔離。資源(WML、腳本、數(shù)據(jù)文件和變量)僅可被所有者應用創(chuàng)建、讀取或更新。
使用串行通信可將應用從PC配置到終端中,或可在TCP/IP上從服務器獲取該應用?;九渲么鎯υ赑OS中的應用表(TA)中,此表存儲有關當前應用集合的信息。
MAM主要功能·應用自動加載、更新或刪除-主應用,具有特權(quán)且通常屬于POS所有者,可以向服務器請求應用表更新,以便添加、刪除或更新在該終端中的應用。技術人員也可通過配置菜單完成同樣的操作。見下述多應用配置功能。
·應用之間的通信-客戶機系統(tǒng)允許應用之間的通信。應用A可開始應用B,也可從一個應用向另一應用發(fā)送參數(shù)。
·應用之間的轉(zhuǎn)換-用戶可從一個應用轉(zhuǎn)換到另一應用,方法是按壓可調(diào)用客戶機系統(tǒng)主菜單的軟鍵。從該主菜單用戶可選擇其它的應用。
·應用表確認-使用一個密鑰來驗證當前有效的應用表(TA)是否屬于當前POS。如果密鑰不匹配,則需要新的TA。
·多應用配置-為POS操作員而設的界面。通過該界面,可以執(zhí)行基本的配置和操作功能,包括刪除、添加或更新應用。
1.6-EMV協(xié)議標準庫為了提取不同制造商的終端有關EMV協(xié)議的能力,客戶機系統(tǒng)假定存在EMV庫。這個庫實際上是個人識別號輸入器界面庫,它封裝客戶機系統(tǒng)和POS EMV核之間的所有交互。
客戶機系統(tǒng)將EMV庫作為WML腳本擴展庫提供到瘦客戶機應用,稱為個人識別號輸入器庫PINPadLib。
2.客戶機系統(tǒng)擴展WML和WML腳本語言原來都是設計來創(chuàng)建可在WAP瀏覽器中顯示的WEB站點,這些WAP瀏覽器通常在蜂窩電話中可用。為了滿足標準POS應用的要求,本發(fā)明對WML和WML腳本語言定義了一些擴展。
該WML標簽、屬性和腳本函數(shù)的集合,在其它各種特征中,允許在客戶機系統(tǒng)上運行的POS應用1)訪問通常在POS終端中可用的設備,如讀卡器、打印機、條碼閱讀器、個人識別號輸入器、Mifare非接觸式讀卡器、支票閱讀器等;2)在連接到截然不同的訪問網(wǎng)絡時使用多個通信協(xié)議(SDLC、X.28、TCP/IP、PPP、GPRS、CDMA、WNB等);3)持續(xù)的數(shù)據(jù)記錄存儲;4)訪問存在于POS操作系統(tǒng)中的EMV核;5)ISO8583消息格式化;6)分類信息加密;等等...。
以下說明擴展的完整列表以及它們的詳細功能。
2.1-對WML語言的標簽擴展本節(jié)給出了向WAP瀏覽器提供的新標簽以及它們的屬性,以便將其變?yōu)镻OS客戶機系統(tǒng)。
2.2-對WML語言的屬性擴展本節(jié)給出了向WAP瀏覽器提供的新屬性、值以及標準屬性新行為,以便將其變?yōu)镻OS客戶機系統(tǒng)。
2.3-對WML腳本標準庫的WML腳本函數(shù)擴展本節(jié)給出了向WAP瀏覽器提供的對WML腳本標準庫的擴展,以便將其變?yōu)镻OS客戶機系統(tǒng)。這些擴展腳本函數(shù)的定義由下表說明。
為POS客戶機系統(tǒng)創(chuàng)建的特定函數(shù)
toFloat(value)-該函數(shù)返回給定值的浮點表示。該函數(shù)準確執(zhí)行為WML腳本語言所定義的相同類型轉(zhuǎn)換。無效的value返回字符串“invalid”。在使用鍵入的變量時要求強制類型轉(zhuǎn)換。
setElementsPos(String,separator,nElements)-該函數(shù)存儲由分隔符分隔的字符串的n個元素。如果它成功,它返回一個整數(shù),含有所存儲的最后元素的最后字符的位置。通常,在調(diào)用如下所述的String.elementAtPos(elementPos)之前使用它。
elementAtPos(elementPos)-該函數(shù)返回在位置elementPos處的字符串的元素。該字符串必須已用函數(shù)setElementsPos(String,separator,nElements)的應用所組織。如果該串沒有被函數(shù)setElementsPos所組織,則將使用以前組織的串。如果出錯,它返回invalid。
formatCurrency(currencyString)-該函數(shù)格式化以貨幣符號表示的串,用逗號或句點將分以及千位等分隔開。該函數(shù)返回格式化的字符串,或如果失敗則返回invalid。
isNumeric(string)-如果自變量可成功轉(zhuǎn)換成數(shù)值,則該函數(shù)返回true(真),否則返回false(假)。
toUpper(string)-該函數(shù)返回轉(zhuǎn)換成大寫的串自變量。
toLower(string)-該函數(shù)返回轉(zhuǎn)換成小寫的串自變量。
padRight(string,pad,len)-該函數(shù)返回右邊填充有長度達len的pad字符的字符串自變量。
padLeft(string,pad,len)-該函數(shù)返回左邊填充有長度達len的pad字符的字符串自變量。
loadFile(url,fileName)-該函數(shù)檢索由絕對url表示的內(nèi)容,并保存在名為fileName的文件中。它已剝離出HTTP頭部并返回HTTP結(jié)果代碼(200意思是OK)。
LoadToCache(url)-該函數(shù)檢索由絕對url表示的內(nèi)容,并將其存儲在客戶機系統(tǒng)高速緩存中供將來使用。它返回HTTP結(jié)果代碼(200意思是OK)。
setEnv(Name,Value)-這是一個擴展,它接收POS環(huán)境變量的名稱以及表征該變量屬性的值作為參數(shù)。如果它成功改變了變量值,它返回true,或如果不能則返回false。如果失敗(例如無效參數(shù)),它返回invalid。
goExt(url,method,blsBack)-函數(shù)WMLBrowser.go()的這個擴展允許前往或返回到已定義的URL。返回到WML頁面將要求實現(xiàn)“onenterbackward”事件,如果該事件被預見到的話。它接收url、method(POST或GET)以及邏輯值blsBack作為參數(shù),表明返回到URL。如果成功,它返回空字符串,否則返回invalid。
Beep(Freq,nTimes)-該函數(shù)以Freq規(guī)定的頻率和nTimes規(guī)定的次數(shù)在輸出設備中發(fā)聲。如果成功,返回空字符串,否則返回invalid。
HangUp()-該函數(shù)使POS與電話線斷開連接。返回空字符串。
dialUp()-該函數(shù)啟動POS到電話線的異步連接。返回空字符串。
Persist()-該函數(shù)產(chǎn)生當前腳本的拷貝,名為“ipersist.wmlsc”。如果該文件已經(jīng)存在,則當前拷貝被重新命名為“ilast_persist.wmlsc”。返回在文件“ipersist.wmlsc”中記錄的字節(jié)數(shù)。如果通過清除高速緩存而當前腳本已自己清除,則調(diào)用persist的結(jié)果未被定義,并會導致運行時間錯誤。
setPostfield(name,value)-該函數(shù)設置要和下一次調(diào)用一起被發(fā)送到WMLBrowser.goExt(href,″POST″,true)的POST字段。如果成功,返回空字符串,否則返回invalid。
clearCacheWithTag(tag)-該函數(shù)從高速緩存中清除以tag開始的“VWTag”HTTP頭部的每個文件。
getFirstVarName()-該函數(shù)返回第一環(huán)境變量的名稱。它與getNextVarName()和getPrevVarName()一起向持續(xù)環(huán)境提供迭代程序。
getNextVarName()-該函數(shù)返回第一環(huán)境變量的名稱。它與getFirstVarName()和getPrevVarName()一起向持續(xù)環(huán)境提供迭代程序。
getPrevVarName()-該函數(shù)返回第一環(huán)境變量的名稱。它與getFirstVarName()和getNextVarName()一起向持續(xù)環(huán)境提供迭代程序。
pin2pin()-該函數(shù)開始操作系統(tǒng)驅(qū)動的“背對背”客戶機系統(tǒng)克隆。
dial(StringtoWhere)-該函數(shù)從記錄存儲中的配置設置撥號參數(shù)。返回連接狀態(tài)。
getConStatus()-該函數(shù)返回一個整數(shù),其值即為連接狀態(tài)。
upLoad()-該函數(shù)啟動“背對背”應用克隆上載。
addEnv(varName,increment)-該函數(shù)接收POS環(huán)境變量的名稱和要添加到該變量當前值上的整數(shù)值作為參數(shù)。如果該變量不存在,就用作為參數(shù)接收的值來創(chuàng)建該變量。如果它成功改變了變量值,則返回true,如果不成功,則返回false。如果失敗(例如無效參數(shù)),則它返回invalid。
appendVar(varName,value)-該函數(shù)接收POS環(huán)境變量的名稱和要附到該變量當前值上的字符串值作為參數(shù)。如果該變量不存在,就用作為參數(shù)接收的值來創(chuàng)建該變量。如果它成功改變了變量值,則返回true,如果不成功,則返回false。如果失敗(例如無效參數(shù)),則它返回invalid。
setEnvFromVars(varName,varList)-該函數(shù)用在以分號分隔開的變量名稱列表varList中所定義的變量來設置環(huán)境變量varName。它返回設置為varName的字符串長度,其應被保存起來以供將來和函數(shù)setVarsFromEnv()或getVarFromEnv()一起使用。
setVarsFromEnv(varName)-該函數(shù)用從環(huán)境變量varName的值中得到的變量來設置WML上下文。它返回所設置的變量數(shù),該變量數(shù)應已經(jīng)用函數(shù)setEnvFromVars()保存。
getVarFromEnv(envVarName,varName)-該函數(shù)返回從環(huán)境變量envVarName的值中命名為varName的變量的值。如果該變量未由值定義,則它返回空字符串。
deleteContext(appName)-該函數(shù)完全刪除名為appName的應用文件。該函數(shù)僅可由POS主應用調(diào)用。
isConnected()-該函數(shù)替代getConStatus()返回布爾值,表明是否連接。
installApp(appDataFile)-該函數(shù)從名為appDataFile的數(shù)據(jù)文件中安裝應用,并返回一整數(shù)表明錯誤代碼。如果該函數(shù)運行良好,則終端將被重新啟動,且返回代碼將不被測試。
setVarFromVars(varName,varList)-該函數(shù)用在以分號隔開的變量名稱列表varList中所定義的變量來設置WML變量varName。它返回設置為varName的字符串長度,其應被保存供將來和函數(shù)setVarsFromVar()或getVarFromVar()一起使用。
setVarsFromVar(varName)-該函數(shù)用從WML變量varName的值中得到的變量來設置WML上下文。它返回所設置的變量數(shù),該變量數(shù)應已由函數(shù)setVarFromVars()保存。
getVarFromVar(wmlVarName,varName)-該函數(shù)返回從WML變量wmlVarName的值中名為varName的變量值。如果該變量未由值定義,則它返回空字符串。
getVarFromStr(wmlsStringOrVar,varName)-該函數(shù)返回從WML腳本變量或字符串wmlsStringOrVar的值中名為varName的變量值。如果該變量未由值定義,則它返回空字符串。
show(message,defaultInput)-該函數(shù)在POS屏幕上顯示消息,并繼續(xù)執(zhí)行,不管用戶的請求如何。如果成功,它返回空字符串,否則它返回invalid。
showStatus(message,defaultInput)-該函數(shù)在POS屏幕上的狀態(tài)行中顯示消息。如果成功,它返回空字符串,否則它返回invalid。
2.4-WML腳本庫和函數(shù)-對WML腳本標準庫的擴展本節(jié)給出了向WAP瀏覽器提供的WML腳本擴展庫,以便將其變?yōu)镻OS客戶機系統(tǒng)。
為POS客戶機系統(tǒng)創(chuàng)建的特定庫和函數(shù)2.4.1-RECORDSTORE擴展庫該庫的目的是允許信息的持續(xù)性,將數(shù)據(jù)存儲在索引的文件中。
函數(shù)列表openStore(Name,CreateIfNecessary)-該函數(shù)接收要創(chuàng)建的文件名稱和布爾變量CreateIfNecessary作為參數(shù),指出如果文件不存在是否應被創(chuàng)建。在文件創(chuàng)建的同時,還創(chuàng)建一個相應的索引文件。返回一個有打開文件的索引(id)的整數(shù),或者如果不能打開或創(chuàng)建文件,則返回invalid。
closeStore(StoreId)-該函數(shù)接收打開的文件索引(StoreId)作為參數(shù)、關閉數(shù)據(jù)和索引文件。返回一個有關閉的文件的索引(StoreId)的整數(shù)。如果它不能成功關閉文件或如果StoreId不存在,則它返回invalid。
deleteStore(Name)-該函數(shù)接收含有打開的文件的名稱的串Name作為參數(shù),并刪除該數(shù)據(jù)文件以及其索引文件。如果它成功刪除文件,則它返回一個大于或等于零的整數(shù)。如果它不成功,則它返回invalid。
getNumRecords(StoreId)-該函數(shù)接收含有打開的文件的索引的整數(shù)StoreId作為參數(shù),并獲得注冊的記錄數(shù)。如果它成功獲得記錄數(shù),則它返回一個大于或等于零的整數(shù)。否則,它返回invalid。
getSize(StoreId)-該函數(shù)接收含有打開的文件的索引的整數(shù)StoreId作為參數(shù),并得到其以字節(jié)為單位的大小。如果操作成功,它返回具有文件大小(字節(jié)總數(shù))的整數(shù),否則它返回invalid。
addRecord(StoreId,Record)-該函數(shù)接收含有打開的文件的索引的整數(shù)StoreId以及含有要包含在文件中的數(shù)據(jù)的一個字符串Record作為參數(shù)。如果它成功添加,它返回一個具有在數(shù)據(jù)文件中所添加記錄索引的整數(shù),否則它返回invalid。
deleteRecord(StoreId,RecordId)-該函數(shù)接收兩個整數(shù)作為參數(shù)StoreId,含有打開的文件的索引;以及RecordId,含有要從文件中排除的記錄索引。如果它成功刪除,它返回一個具有所刪除記錄的索引的整數(shù),否則它返回invalid。
getRecord(StoreId,RecordId)-該函數(shù)接收兩個整數(shù)作為參數(shù)StoreId,含有打開的文件的索引;以及RecordId,含有要檢索的記錄索引。如果該讀出操作成功,則它返回一個具有所檢索記錄的索引的整數(shù),否則它返回invalid。
getNextRecordId(StoreId,RecordId)-該函數(shù)接收兩個整數(shù)作為參數(shù)StoreId,含有打開的文件的索引;以及RecordId,含有要檢索的前一記錄的索引。如果它成功找到下一記錄的索引,則它以整數(shù)返回該索引,否則它返回invalid。
getRecordSize(StoreId,RecordId)-該函數(shù)接收兩個整數(shù)作為參數(shù)StoreId,含有打開的文件的索引;以及RecordId,含有要定大小的記錄的索引。如果它成功找到該記錄索引,則它返回具有以字節(jié)為單位的其大小的整數(shù),否則它返回invalid。
setRecord(StoreId,RecordId,RecordValue)-該函數(shù)接收含有打開文件索引的整數(shù)StoreId和含有要改變的記錄索引的整數(shù)RecordId以及含有要記錄的新值的字符串RecordValue作為參數(shù)。該函數(shù)對于更新給定記錄中的信息很有用,只要它不改變其大小。如果改變很成功,則該記錄的RecordId將被返回,否則返回值將為invalid。如果記錄的大小不同,則它返回invalid。在此情況下,它必須被排除,并且應記錄新記錄中的新信息。
createDatabase(BaseName,SourceName)-該函數(shù)從源文件SourceName中在名稱BaseName下創(chuàng)建記錄存儲,這二者均作為參數(shù)提供。如果成功,該函數(shù)返回零或正整數(shù)。如果它不能創(chuàng)建記錄存儲,則它返回invalid。
findRecord(DB,Key,Pos,Separator,Ordered)-該函數(shù)搜索位于有關Separator的位置Pos中的字符串Key。如果文件DB是相對所需字段組織的,則參數(shù)Ordered可等于true,允許在DB中實現(xiàn)二進制搜索。
setOrderKey(DB,Pos,Separator)-該函數(shù)按照相對Separator的位置Pos來定義在DB文件中的搜索順序,用于函數(shù)findFirstRecord()和findNextRecord()。
findFirstRecord(StoreId)-該函數(shù)接收打開的文件的句柄(StoreId)作為參數(shù),并返回其第一記錄索引。函數(shù)setOrderKey()必須在之前已被調(diào)用。按照由函數(shù)setOrderKey(DB,Pos,Separator)所定義的順序返回有關第一記錄位置的整數(shù)索引,如果失敗(例如它不能打開文件)則返回invalid。
findNextRecord(StoreId)-該函數(shù)接收打開的文件的句柄(StoreId)作為參數(shù),并返回下一記錄索引。函數(shù)findFirstRecord()必須在之前已被調(diào)用。按照由函數(shù)setOrderKey(DB,Pos,Separator)所定義的順序返回有關下一記錄位置的整數(shù)索引,如果失敗(例如它不能打開文件)則返回invalid。
findRepeatedRecord(DB,Key,Pos,Separator,Ordered)-該函數(shù)的作用同findRecord(),但它用重復的鍵值來考慮記錄具體值。返回所找到的記錄的Id。
defragStore(StoreName)-該函數(shù)從名為StoreName的記錄存儲中物理去除已刪除的記錄。調(diào)用時記錄存儲不必打開。如果失敗,則它返回invalid。
appendLastRecord(StoreId,string)-該函數(shù)將字符串自變量添加到最后物理記錄的內(nèi)容上,如果它未被刪除的話。它應緊接在addRecord()后被調(diào)用。它返回RecordId。
addRecordFromVars(StoreId,varList)-該函數(shù)用在分號分隔的變量名稱列表varlist中所定義的變量添加一記錄到由StoreId標識的打開的記錄存儲。它返回所加記錄的id,該id應被保存,以供將來和函數(shù)setVarsFromRecord()或getVarFromRecord()一起使用。
setVarsFromRecord(StoreId,RecordId)-該函數(shù)用從StoreId標識的打開的記錄存儲的RecordId所標識的記錄中得到的變量設置WML上下文。它返回所讀出的添加記錄的id,該id應該已經(jīng)被函數(shù)addRecordFromVars()所保存。
getVarFromRecord(StoreId,RecordId,VarName)-該函數(shù)返回從StoreId標識的打開的RecordStore的RecordId所標識的記錄中名為VarName的變量值。如果該變量未被該記錄定義,它返回空字符串。
setView(DB,Key,Pos,Separator)-該函數(shù)為記錄存儲DB定義導航過濾器,在相對Separator的位置Pos的字段上具有值Key。該記錄存儲被假定由同一字段排序。用此函數(shù)創(chuàng)建的視圖向基本導航函數(shù)提供在記錄存儲上的完全透明的選擇。
deleteView(DB)-該函數(shù)刪除由當前為記錄存儲DB設置的視圖所選擇的記錄。
setFilterView(DB,Key,Pos,Separtaor)-該函數(shù)為記錄存儲DB定義導航過濾器,在相對Separator的位置Pos的字段上具有值Key。該RecordStore未被假定按任何字段排序。用此函數(shù)創(chuàng)建的視圖向基本導航函數(shù)提供在記錄存儲上的完全透明的選擇, 雖然在調(diào)用RecordStore.getNextRecordId()時,視圖外的記錄被依次跳過。
2.4.2 CONSOLE擴展庫這個庫含有的函數(shù)集合用于應用調(diào)試。
函數(shù)列表Print(string)-該函數(shù)在客戶機系統(tǒng)的信息窗口中顯示調(diào)試字符串的文本。在文本后不插入新的行符。如果成功顯示,則返回1,否則返回invalid。
printLn(string)-該函數(shù)在客戶機系統(tǒng)的信息窗口上顯示調(diào)試文本字符串。在文本后插入新的行符。如果成功顯示,則返回1,否則返回invalid。
2.4.3 CRYPTO擴展庫該庫含有的函數(shù)集合用于要更安全地通過web傳輸?shù)男畔⒌募用芎徒饷堋?br> 函數(shù)列表encrypt(Message,SessionKey)-該函數(shù)返回用DES算法加密的message參數(shù)。如果message大小大于512字節(jié),或如果加密不成功,則message返回invalid。SessionKey是16字節(jié)的字符串,對應于十六進制編碼的8字節(jié)密鑰。返回值是十六進制編碼的ASCII字符串,具有message自變量的雙倍長度。
decrypt(Message,SessionKey)-該函數(shù)返回用DES算法解密的message參數(shù)。如果message大小大于1024字節(jié),或如果加密不成功,則message返回invalid。SessionKey是16字節(jié)的字符串,對應于十六進制編碼的8字節(jié)密鑰。message參數(shù)被假定為十六進制編碼的ASCII字符串,具有返回值的雙倍長度。
encrypt2DES(Message,SessionKey)-該函數(shù)返回用DES算法加密的message參數(shù)。在加密之前,它用其長度的BCD表示對message加前綴。如果message大小大于512字節(jié),或如果加密不成功,則message返回invalid。SessionKey是16字節(jié)的串,對應于十六進制編碼的8字節(jié)密鑰。返回值是十六進制編碼的ASCII串,具有message自變量的雙倍長度。
decrypt2DES(Message,SessionKey)-該函數(shù)返回用DES算法解密的message參數(shù)。如果message大小大于1024字節(jié),或如果加密不成功,則message返回invalid。message參數(shù)被假定為十六進制編碼的ASCII串,具有返回值的雙倍長度加上該字符串的長度大小。
xor(string1,string2)-該函數(shù)接收兩個十六進制編碼的ASCII字符串并返回對應于它們的二進制值之間的“異或”的十六進制編碼的ASCII字符串。
encrypt2DESHexa(Message,SessionKey)-該函數(shù)返回用DES算法加密的message參數(shù)。在加密之前,它用其長度的BCD表示對message加前綴。message自變量被假定為十六進制編碼的ASCII字符串。如果message長度大于1024字節(jié),或如果加密不成功,則message返回invalid。SessionKey是16字節(jié)字符串,對應于十六進制編碼的8字節(jié)密鑰。返回值是十六進制編碼的ASCII字符串,長度與message自變量相同。
decryrt2DESHexa(Message,SessionKey)-該函數(shù)返回用DES算法解密的message參數(shù)。如果message大小大于1024字節(jié),或如果加密不成功,則message返回invalid。SessionKey是16字節(jié)字符串,對應于十六進制編碼的8字節(jié)密鑰。message參數(shù)被假定為十六進制編碼的ASCII字符串,具有返回值的相同長度加上該字符串長度的大小。
encryptHexa(Message,SessionKey)-和encrypt相同,但message是以十六進制表示。返回值是十六進制編碼的ASCII串,具有message自變量的雙倍長度。
decryptHexa(Message SessionKey)-和encrypt相同,但消息是以十六進制表示。返回值是用DES算法解密的message參數(shù)。
2.4.4-PRINTER庫該庫含有的函數(shù)集合用于打印。
函數(shù)列表open()-該函數(shù)打開對打印機的輸出。如果成功,它返回所獲得的句柄,否則返回invalid。
setWidthMode(mode)-該函數(shù)以mode參數(shù)作為基礎,配置發(fā)送到打印機的字體寬度。mode必須轉(zhuǎn)換為符合整數(shù)或浮點。如果成功,則它返回true,如果不成功或參數(shù)mode非法,則它返回invalid。
setHeightMode(mode)-該函數(shù)以參數(shù)mode作為基礎,配置發(fā)送到打印機的字體高度。mode必須轉(zhuǎn)換為符合整數(shù)或浮點。如果成功,它返回true,如果不成功或參數(shù)mode非法,則它返回invalid。
Print(string)-該函數(shù)打印字符串的內(nèi)容。如果打印成功,則返回true,否則返回invalid。
rrintLn(string)-該函數(shù)打印字符串的內(nèi)容,并在打印后添加新的行符。如果打印成功,則返回true,否則返回invalid。
close()-該函數(shù)關閉對打印機的輸出,返回空字符串(“”)。
printLogo(LOGOFileName)-該函數(shù)接收通到將被打印的LGO格式的位圖所位于的文件的路徑作為參數(shù)。如果失敗,則該函數(shù)返回負值,或者如果成功打印,則返回“1”。
2.4.4 CARD庫該庫含有的函數(shù)集合用于金融卡BIN的范圍檢查。
函數(shù)列表checkRanges(currentPAN,privateLabelSuffix)-該函數(shù)相對于在變量MAX/b/X和MIN/b/X上從POS環(huán)境中讀出的那些范圍檢查給定卡PAN的范圍,其中|b|代表給定的privateLabelSuffix,而X代表用于該標記的范圍計數(shù)器。X從0開始。如果currentPAN適合范圍X,則返回INF/b/X。如果它不適合任何范圍,則它返回invalid。如果沒有給出專用標記后綴,則它采用默認值“PAN”。
checkRangesInStore(currentPan,StoreName)-該函數(shù)相對于從StoreName RecordStore的記錄中讀出的那些范圍檢查給定卡PAN的范圍。每個記錄被假定為具有分號隔開的三元素字符串,例如“4400;4999;returnedinfo”。相對于每個記錄的前兩個元素檢查PAN,直到它適合于二者之間。該函數(shù)返回適合的第一記錄的第三元素。如果它不適合于任何記錄的范圍,則它返回invalid。
2.4.5 SYSTEM庫該庫含有的函數(shù)集合用于訪問系統(tǒng)時間實用程序。
函數(shù)列表currentTimeSecs()-該函數(shù)返回當前POS時間,以秒為單位,從01/01/1970,00:00:00開始。
deteTime2Seconds(datetime)-該函數(shù)返回從01/01/1970,00:00:00到以datetime表示的格式為“YYYYMMDDHHMMSS”的日期和時間所經(jīng)過的秒數(shù)。
seconds2datetime(seconds)-該函數(shù)返回對應于以seconds表示的從01/01/1970,00:00:00所經(jīng)過的秒數(shù)的日期和時間。返回值的格式為“YYYYMMDDHHMMSS”。
isValidDate(datetime)-如果datetime自變量表示為具有格式為“YYYYMMDDHHMMSS”的有效日期/時間,則該函數(shù)返回true。
Datetime()-該函數(shù)返回當前POS的日期和時間。返回值格式為“YYYYMMDDHHMMSS”。
currentTicks()-該函數(shù)返回自從POS被啟動后的毫秒數(shù)。
2.4.6 ISO庫該庫含有的函數(shù)集合處理ISO8583消息。
charToHex(String)-該函數(shù)接收字符串作為輸入,并返回具有ASCII形式的輸入字符串的HEXADECIMAL表示的另一字符串。
hexToChar(String)-該函數(shù)接收字符串作為輸入,其是字符串(ASCII形式)的HEXADECIMAL表示,并返回所表示的字符串。返回字符串的大小總是源字符串的一半。如果源字符串長度為奇數(shù),則該函數(shù)將返回invalid。
readPackager(String)-該函數(shù)更新用于打包ISO-8583消息的打包程序。輸入字符串是具有打包程序定義的文件的路徑。
返回值為錯誤代碼。如果返回是零,則沒有發(fā)生錯誤。
定義打包程序的文件格式為FIELDID=PACKAGER;LEN<;INNERPACKAGER FILEPATH>
實例#這是注釋0=IFB_NUMERIC;41=IFB_BITMAP;162=IFB_LLNUM;193=IFB_NUMERIC;6#4=IFB_NUMERIC;1234=IFB_LLLIBINARY;999;fsubdef.pdf為了減小文件大小并減少語法分析時間,在打包程序定義文件中不允許有空白字符。該文件是普通的文本文件(文本格式)。
ISO字段具有打包程序,它識別在ISO消息中將被發(fā)送的數(shù)據(jù)的格式。可選的是,一個字段可有內(nèi)部字段。內(nèi)部打包程序可被定義為讓客戶機系統(tǒng)對該字段進行語法分析。為此,可以規(guī)定含有內(nèi)部打包程序定義的文件路徑。
可能的打包程序為IFB_BITMAP,IF_HEX,IFA_LLHEX,IFA_LLLHEX,IFB_LLHEX,IFB_LLLHEX,IF_BINARY,IFA_LLBINARY,I-FA_LLLBINARY,IFB_LLBINARY,IFB_LLLBINARY,IF_CHAR,IFA_LCHAR,IFA_LLCHAR,IFA_LLLCHAR,IFB_LLCHAR,IFB_LLLCHAR,IFA_NUMERIC,IFA_LLNUM,IFA_LLLNUM,IFB_NUMERIC,IFB_LLNUM,IFB_LLLNUM,I-FA_AMOUNT,IFB_AMOUNT,IFB_LLLIHEX,IFB_LLLIBINARY,IFB_LLLICHAR和IFB_LLLINUM.
有6種類型的打包程序Numeric(數(shù)值)、Amount(數(shù)量)、Character(字符)、Hexa(十六進制)、Binary(二進制)和Bitmap(位圖)。
L、LL或LLL字符表示字段的最大的大小。如果字段是IFA_LLLNUM,意思是其大小不能大于999。
IFA或IFB前綴表示字段的數(shù)值部分以ASCII或BCD存儲。
一些打包程序名稱中的“I”(如IFB_LLLINUM)表示該字段將被標識。這對于定義內(nèi)部打包程序很有用,此處內(nèi)部字段應被標識。
Numeric該打包程序接收具有數(shù)值表示(如″12345″)的字符串。
結(jié)果IFA_NUMERIC12345 (作為字符串發(fā)送的數(shù))IFA_LLNUM0512345 (以ASCII表示的字段大小)IFA_LLLNUM00512345 (以ASCII表示的字段大小)IFB_NUMERICx12 x34 x50 (以BCD存儲的數(shù))IFB_LLNUMx05 x12 x34 x50 (也以BCD表示的字段大小)IFB_LLLNUMx00 x05 x12 x34 x50 (也以BCD表示的字段大小)IFB_LLLINUMx00 x05 x23 x12 x34 x50 (id是23。也以BCD表示)Amount該打包程序類似于Numeric,不同之處在于其前面有表示信號的字符。用于該打包程序的輸入可以是像“D12050”的字符串。
結(jié)果IFA_AMOUNTC12345 (作為字符串發(fā)送的數(shù))IFB_AMOUNTx43 x12 x34 x50 (以BCD發(fā)送的數(shù))Character該打包程序接收像“該文本ok!12345”的字符串。
結(jié)果IFA_CHAR12345 (作為字符串發(fā)送的字段)IFA_LCHAR512345 (以ASCII表示的字段大小)IFA_LLCHAR0512345 (以ASCII表示的字段大小)IFA_LLLCHAR00512345 (以ASCII表示的字段大小)IFB_CHARx31 x32 x33 x34 x35 (作為字符串發(fā)送的字段)IFB_LLCHARx05 x31 x32 x33 x34 x35 (以BCD表示的字段大小)IFB_LLLCHARx00 x05 x31 x32 x33 x34 x35 (也以BCD表示的字段大小)IFB_LLLICHARx00 x05 x23 x31 x32 x33 x34 x35 (id是23。也以BCD表示)Hexa該打包程序接收(以十六進制)表示二進制字段的String。十六進制String被轉(zhuǎn)換成二進制字段并被添加到消息中。
結(jié)果IF_HEXx31 x32 x33 x34 x35 (以二進制發(fā)送的字段)IFA_LLHEXx30 x35 x31 x32 x33 x34 x35 (以ASCII表示的大小(05))IFA_LLLHEXx30 x30 x35 x31 x32 x33 x34 x35 (以ASCII表示的大小(005))IFB_LLHEXx05 x31 x32 x33 x34 x35 (以BCD表示的大小(05))IFB_LLLHEXx00 x05 x31 x32 x33 x34 x35 (以BCD表示的大小(005))Binary該打包程序接收二進制緩沖,并在消息中創(chuàng)建二進制字段。由于沒有用于WML腳本的二進制類型,因此刻意創(chuàng)建此打包程序來包封內(nèi)部字段。內(nèi)部字段可以是numeric+char,且外部字段應定義為二進制。打包內(nèi)部字段時,二進制緩沖器結(jié)果(外部字段)將自動被引擎打包為二進制。
結(jié)果IF_BINARYx31 x32 x33 x34 x35 (以二進制發(fā)送的字段)IFA_LLBINx30 x35 x31 x32 x33 x34 x35 (以ASCII表示的大小(05))IFA_LLLBINx30 x30 x35 x31 x32 x33 x34 x35 (以ASCII表示的大小(005))IFB_LLBINx05 x31 x32 x33 x34 x35 (以BCD表示的大小(05))IFB_LLLBIN;x00 x05 x31 x32 x33 x34 x35 (以BCD表示的大小(005))Bitmap這是一個特殊的打包程序,其存儲消息中的二進制位圖。該位圖根據(jù)消息字段的存在而創(chuàng)建。該打包程序用于字段1。
transactMessage(String host,Int port,String fieldlist,String channel,String header,String trailler,String mandatoryFields)-該函數(shù)根據(jù)所配置的打包程序以及所使用的字段列表發(fā)送和接收消息。字段列表是一個字符串,它包封將在消息中發(fā)送的字段名稱。令牌用“;”字符分隔。字段用規(guī)則f<field ID>命名。如果發(fā)送的名稱是子字段名稱,則規(guī)則為f<field ID>s<sub ID>。
字段列表實例“f0;f2;f3;f28;f11;f34s0;f34s2s0;f34s2s2;f34s3;f34s5;f41;f70”
f34由f34s0、f34s2、f34s3和f34s5組成,而f34s2由f34s2s0和f34s2s2組成。此處我們找到三級內(nèi)部字段。
要在消息中發(fā)送的頭部和尾部是十六進制串,代表將要發(fā)送的二進制頭部和尾部。
實例“0600030001”產(chǎn)生x06 x00 x03 x00 x01所選信道映射在消息中存儲消息長度的方式??捎玫男诺罏椤癆SCII”、“RAW”、“NAC”和“NCC”。
實例(消息大小為256)ASCIIx30 x32 x35 x36(“0256”)RAWx00 x00 x01 x00(0000-0000 0000-0000 0000-0001 0000-0000)NACx01 x00(0000-0001 0000-0000)NCCx02 x56(BCD)用于在fieldlist參數(shù)中發(fā)送的字段的值必須在存儲器中將值存儲為變量。可以用“WMLBrowser.setvar(fieldname,value);”來設置它們。
消息將被發(fā)送到服務器,且腳本將中斷等待響應。如果發(fā)生差錯,它將被作為函數(shù)返回值檢索,否則將返回零。
響應消息由打包程序規(guī)則作語法分析。找到的字段和子字段也將在存儲器中被保存到變量中。對該響應變量的約定命名與用于發(fā)送的相同,但不是在ID前加‘f’,而是用‘r’作后綴。
mandatoryFields自變量是按照字段列表格式化的串。它強制響應被檢查。如果mandatory字段缺失,即發(fā)生差錯,該交易不被處理。
自函數(shù)返回的時刻起,應用必須恢復變量,驗證它們并進行所需進行的工作。可能打印憑單。
transactFromRecord(String host,Int port,Int storeId,Int recordId,String channel,String header String trailer String mandatoryFields)-該函數(shù)根據(jù)所配置的打包程序以及所設置的ISO字段發(fā)送和接收消息。字段被存儲在RecordStore的一個記錄中。RecordStore標識作為storeId參數(shù)傳送,且Record標識作為記錄的參數(shù)傳送。為了用ISO字段建立記錄,應使用RecordStore庫的addRecordFromVars()函數(shù)。
該函數(shù)提供了一種備選方式來設置用于ISO交易的自變量(在此情況下為ISO字段)。
要在消息中發(fā)送的頭部和尾部是十六進制串,代表將要發(fā)送的二進制頭部和尾部。
實例“0600030001”產(chǎn)生 x06 x00 x03 x00 x01所選信道映射在消息中存儲消息長度的方式。可用的信道為“ASCII”、“RAW”、“NAC”和“NCC”。
實例(消息大小為256)ASCIIx30 x32 x35 x36(“0256”)RAWx00 x00 x01 x00(0000-0000 0000-0000 0000-0001 0000-0000)NACx01 x00(0000-0001 0000-0000)NCCx02 x56(BCD)mandatoryFields自變量如果在響應中存在的話,則是要檢查的字段列表。
mandatoryFields列表實例“f0;f2;f3;f28;f11;f34s0;f34s2s0;f34s2s2;f34s3;f34s5;f41;f70”f34由f34s0、f34s2、f34s3和f34s5組成,而f34s2由f34s2s0和f34s2s2組成。此處我們找到三級內(nèi)部字段。
mandatoryFields強制響應被檢查。如果mandatory字段缺失,即發(fā)生了差錯,交易不被處理。響應消息字段被存儲在RecordStore的一個新記錄中,且其id是函數(shù)返回值。為恢復變量中的字段,應調(diào)用RecordStore庫的SetVarsFromRecord()函數(shù)。使用與transactMessage()相同的命名規(guī)則來設置變量。
transactFromRecordToVar(String host,Int port,Int storeId,IntrecordId,String channel,String header,String trailer,StringmandatoryFields)-該函數(shù)根據(jù)所配置的打包程序以及所設置的ISO字段發(fā)送和接收消息。字段被存儲在RecordStore的一個記錄中,但返回被設置為名為ISORESP的WML變量。如果結(jié)果長度超過WML最大變量長度(512),超過字節(jié)被分成500字節(jié)變量,名為ISORESPn,n=1...。WML變量ISONRESP也用存儲結(jié)果所需的變量總數(shù)來設置,包括ISORESP。RecordStore標識作為storeId參數(shù)傳送,且Record標識作為記錄的參數(shù)傳送。為了用ISO字段建立記錄,應使用RecordStore庫的addRecordFromVars()函數(shù)。
該函數(shù)提供了一種備選方式來設置用于ISO交易的自變量(在此情況下為ISO字段)。
要在消息中發(fā)送的頭部和尾部是十六進制串,代表將要發(fā)送的二進制頭部和尾部。
實例“0600030001”產(chǎn)生x06 x00 x03 x00 x01所選信道映射在消息中存儲消息長度的方式??捎玫男诺罏椤癆SCII”、“RAW”、“NAC”和“NCC”。
實例(消息大小為256)ASCIIx30 x32 x35 x36(“0256”)RAWx00 x00 x01 x00(0000-0000 0000-0000 0000-0001 0000-0000)NACx01 x00(0000-0001 0000-0000)NCCx02 x56(BCD)mandatoryFields自變量如果在響應中存在的話,則是要檢查的字段列表。
mandatoryFields列表實例“f0;f2;f3;f28;f11;f34s0;f34s2s0;f34s2s2;f34s3;f34s5;f41;f70”f34由f34s0、f34s2、f34s3和f34s5組成,而f34s2由f34s2s0和f34s2s2組成。此處我們找到三級內(nèi)部字段。
mandatoryFields強制響應被檢查。如果mandatory字段缺失,即發(fā)生錯誤,交易不被處理。響應消息字段被存儲在RecordStore的一個新記錄中,且其id是函數(shù)返回值。為恢復變量中的字段,應調(diào)用RecordStore庫的SetVarsFromRecord()函數(shù)。使用與transactMessage()相同的命名規(guī)則來設置變量。
hexTolnt(String hexa,Boolean BigEndian)-該函數(shù)接收一個整數(shù)的十六進制表示。在腳本引擎中的整數(shù)為4字節(jié)長,所以hexa參數(shù)可以是2、4、6或8字符長的字符串,代表整數(shù)字節(jié)。該表示可以作為“Big Endian”或“Little Endian”,這是在布爾參數(shù)BigEndian中被告知(如果用Big Endian表示工作,將其設置為true)。返回值是期望的整數(shù)。
intToHex(Int i,Boolean BieEndian)-該函數(shù)將一個整數(shù)轉(zhuǎn)換成整數(shù)的十六進制表示。
此外,客戶機系統(tǒng)含有稱為PinPad的庫,它含有的函數(shù)集合用于通過EMV標準界面訪問個人識別號輸入器設備和POS EMV內(nèi)核。
本發(fā)明可應用于各種商業(yè)領域,如衛(wèi)生保健服務/保險、誠信、遠程銀行、賬單支付、預付費再充值繳費、禮品卡、匯款以及年齡驗證、時間和人工管理等等。
本文所述的應用是本發(fā)明所提供的各種可能性的一個實施例。使用不同的連接部件甚至設備和網(wǎng)絡,可以設計出許多不同的應用模式。本發(fā)明的真正范圍由權(quán)利要求
定義。
權(quán)利要求
1.用于訪問POS終端(10)的系統(tǒng),包括客戶機系統(tǒng)(15),所述客戶機系統(tǒng)使用多個通信(20)和交易協(xié)議將這種POS終端(10)連接到網(wǎng)絡,所述客戶機系統(tǒng)(15)包括添加到預先存在的WAP標準的至少一個定制的WML和腳本擴展,所述用于訪問POS終端的系統(tǒng)包括用于訪問多個外圍設備的部件;用于從應用服務器(30)下載和更新應用(25)的部件;用于使用不同的交易協(xié)議與交易服務器(35)進行電子操作的部件;以及用于支持在邏輯上截然不同的環(huán)境中獨立執(zhí)行的多應用的部件。
2.如權(quán)利要求
1所述的用于訪問POS終端的系統(tǒng),其中所述不同的交易協(xié)議為HTTP、ISO8583或XML。
3.如權(quán)利要求
1所述的用于訪問POS終端的系統(tǒng),其中所述通信協(xié)議(20)可以從包括以下項的組中選擇TCP/IP、PPP、SDLC、X.28、GPRS、CDMA、CDMA 1X、以太網(wǎng)、GSM、Wi-Fi、藍牙和IR。
4.如權(quán)利要求
1所述的用于訪問POS終端的系統(tǒng),其中所述外圍設備可以從包括以下項的組中選擇磁卡閱讀器、智能卡閱讀器、打印機、個人識別號輸入器、條碼閱讀器、支票閱讀器、鍵盤、Mifare非接觸式讀卡器和敏感式觸摸屏。
5.如權(quán)利要求
1所述的用于訪問POS終端的系統(tǒng),其中添加到預先存在的WAP標準的所述定制WML和腳本擴展還包括用于與芯片卡進行電子操作的部件。
6.使用如權(quán)利要求
1到5中一項所定義的系統(tǒng)下載和更新應用的方法,包括以下步驟將所述POS客戶機系統(tǒng)(15)與網(wǎng)絡連接以接收地址;在所述客戶機系統(tǒng)(15)與所述應用服務器(30)之間建立傳送控制協(xié)議會話;發(fā)送應用下載/更新請求;在應用服務器(30)中處理所述請求;向所述POS客戶機系統(tǒng)(15)發(fā)送應用頁面、腳本和數(shù)據(jù)文件。
7.如權(quán)利要求
6所述的使用所述系統(tǒng)下載和更新應用的方法,其中在應用服務器(30)中處理所述請求的所述步驟還包括以下步驟在TCP/IP連接上用消息聯(lián)系所述交易服務器(35);用所述POS客戶機系統(tǒng)配置設置從交易服務器(35)接收應答;處理所述應用設置并建立定制型web應用;以及向所述POS客戶機系統(tǒng)(15)發(fā)送所述定制的應用頁面、腳本和數(shù)據(jù)文件。
8.如權(quán)利要求
6所述的用于下載和更新應用的方法,其中POS終端(10)到網(wǎng)絡的所述連接用遠程訪問服務器(45)或經(jīng)由寬帶網(wǎng)絡執(zhí)行。
9.如權(quán)利要求
6所述的用于下載和更新應用的方法,其中由網(wǎng)絡提供的所述地址優(yōu)選為網(wǎng)際協(xié)議(IP)。
10.如權(quán)利要求
6所述的用于下載和更新應用的方法,其中發(fā)送應用下載/更新請求的所述步驟伴有HTTP(或HTTPs)POST或GET命令。
11.如權(quán)利要求
7所述的用于下載和更新應用的方法,其中聯(lián)系所述交易服務器的所述步驟用ISO8583格式的消息執(zhí)行。
12.如權(quán)利要求
6所述的用于下載和更新應用的方法,其中在發(fā)送所述應用頁面、腳本和數(shù)據(jù)文件的所述步驟之后,所述方法還包括處理所接收的文件和發(fā)出應用下載/更新完成的憑單的步驟。
13.使用如權(quán)利要求
1到5中一項所定義的系統(tǒng)執(zhí)行電子操作的方法,包括以下步驟將所述POS客戶機系統(tǒng)(15)與網(wǎng)絡連接以接收許可;建立交易消息并將這種消息發(fā)送到所述交易服務器(35);以及接收從交易服務器(35)到所述POS客戶機系統(tǒng)(15)的具有交易消息的響應。
14.如權(quán)利要求
13所述的用于執(zhí)行電子操作的方法,其中POS終端(10)到網(wǎng)絡的所述連接用遠程訪問服務器(45)或經(jīng)由寬帶網(wǎng)絡執(zhí)行。
15.如權(quán)利要求
13所述的用于執(zhí)行電子操作的方法,其中所述交易消息為ISO8583格式。
16.如權(quán)利要求
13所述的用于執(zhí)行電子操作的方法,其中在接收來自交易服務器的響應的所述步驟之后,所述方法還包括處理所接收的消息并發(fā)出交易憑單的步驟。
專利摘要
本發(fā)明涉及用于訪問POS終端(10)的系統(tǒng),有或沒有個人識別號輸入器,使用客戶機系統(tǒng)(15)將該POS終端(10)連接到包括至少一個服務器(30)的網(wǎng)絡,所述系統(tǒng)通過在類似于因特網(wǎng)的過程中的多個特定協(xié)議(20),能使任何POS終端(10)執(zhí)行位于該服務器上的應用(25),以及從應用服務器(30)下載和更新應用,并在交易服務器(35)中進行電子操作。
文檔編號G07G1/14GK1997963SQ20058002407
公開日2007年7月11日 申請日期2005年5月25日
發(fā)明者亞歷山大·索雷斯·皮·法里亞斯 申請人:亞歷山大·索雷斯·皮·法里亞斯導出引文BiBTeX, EndNote, RefMan