欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行購買的方法和系統(tǒng)的制作方法

文檔序號:2672036閱讀:185來源:國知局
專利名稱:用于通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行購買的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明總的來說涉及一種用于通過計(jì)算網(wǎng)絡(luò)進(jìn)行購買的方法和系統(tǒng),更準(zhǔn)確地說,涉及一種用于通過Internet或其他非保密的計(jì)算機(jī)網(wǎng)絡(luò)使用自動(dòng)提款機(jī)(ATM)卡、記帳卡(debit card)或其他任何可能要求用于交易認(rèn)可的有效的個(gè)人身份號碼(PIN)的卡購買商品或服務(wù)的方法和系統(tǒng)。
背景技術(shù)
由消費(fèi)者使用個(gè)人計(jì)算機(jī)經(jīng)由萬維網(wǎng)(World Wide Web)或e-mail通過Internet購買商品或服務(wù)在近幾年已經(jīng)很普遍,且組成經(jīng)濟(jì)持續(xù)增長的一部分。在通過Internet進(jìn)行購買時(shí),普通的消費(fèi)者使用信用卡或ATM卡。在做出購買選擇后,消費(fèi)者通過Internet發(fā)送他的卡信息給在線商。然后該在線商聯(lián)系發(fā)證銀行(issuing bank)以驗(yàn)證卡信息并獲得認(rèn)可來完成該交易。根據(jù)來自銀行的響應(yīng),在線商接受或拒絕該購買。
因?yàn)镮nternet是不保密(即公開的)的網(wǎng)絡(luò),所以消費(fèi)者的信用卡或ATM卡信息有被第三人截取的危險(xiǎn)。如果該第三人是不誠實(shí)的,則他能使非法的費(fèi)用記入到該信用卡中,或,在ATM卡情形下直接從消費(fèi)者的銀行帳戶提取現(xiàn)金。近幾年來,已經(jīng)使用許多方法來減少這種安全風(fēng)險(xiǎn)。最普遍的方法已經(jīng)改進(jìn)加密技術(shù),該加密技術(shù)使信用卡或ATM卡數(shù)據(jù)實(shí)質(zhì)上不可能被第三方讀取,如128位加密套接字協(xié)議層(SSL)加密。
然而,當(dāng)通過Internet使用ATM卡進(jìn)行購買時(shí),安全考慮變得額外重要,因?yàn)椴幌衽cATM機(jī)交易,目前在通過Internet的ATM交易中不使用PIN。因此,一旦ATM卡號落入不道德的第三方之手,則通過期詐的Internet交易能劃出卡擁有者的整個(gè)銀行帳戶。
克服這個(gè)問題的一個(gè)方法是要求在通過Internet的ATM交易中使用PIN。然而目前這還不可能,因?yàn)樵诰€商沒有能力驗(yàn)證PIN。另外,不可能為在線商提供ATM卡號和相應(yīng)的PIN,因?yàn)樵诰€商的不道德的職員能使用該P(yáng)IN非法地訪問卡擁有者的銀行帳戶并從那兒提取現(xiàn)金。

發(fā)明內(nèi)容
因此,本發(fā)明的一個(gè)目的是提供用于通過Internet使用ATM卡進(jìn)行購買的新的方法和系統(tǒng),其中要求有效的PIN以便獲取對一指定交易的認(rèn)可。本發(fā)明的另一目的是提供通過Internet使用ATM卡進(jìn)行購買的新的方法和系統(tǒng),其中要求有效的PIN以便獲取對一指定交易的認(rèn)可,并且PIN不提供給在線商。
根據(jù)本發(fā)明的第一方面,提供一種在不保密的計(jì)算機(jī)網(wǎng)絡(luò)上使用ATM卡進(jìn)行購買的方法。根據(jù)所述方法,消費(fèi)者在網(wǎng)絡(luò)上發(fā)送其ATM卡號給在線商。然后該在線商把該ATM卡號發(fā)送給合同第三方(thirdparty contractor),如銀行,該第三方將監(jiān)督并認(rèn)可該交易。與此同時(shí)或在此后,消費(fèi)者在網(wǎng)絡(luò)上發(fā)送其PIN給合同第三方,繞過在線商。合同第三方擁有ATM卡號以及PIN,其驗(yàn)證ATM卡號和PIN是否正確,核對資金是否充足以及認(rèn)可或拒絕該交易。該認(rèn)可或拒絕通過網(wǎng)絡(luò)被傳達(dá)給在線商,該在線商完成或拒絕該購買并通知消費(fèi)者。
根據(jù)本發(fā)明的第二方面,提供一種在不保密的計(jì)算機(jī)網(wǎng)絡(luò)上使用ATM卡進(jìn)行購買的系統(tǒng)。該系統(tǒng)包括與計(jì)算機(jī)網(wǎng)絡(luò)連接的第一、第二和第三計(jì)算機(jī)。通過該網(wǎng)絡(luò)第一計(jì)算機(jī)把消費(fèi)者的ATM卡號傳送給第二計(jì)算機(jī),該第二計(jì)算機(jī)由或?yàn)樵诰€商操作。通過該網(wǎng)絡(luò)第二計(jì)算機(jī)把ATM卡號發(fā)送給第三計(jì)算機(jī),該第三計(jì)算機(jī)由或?yàn)楹贤谌讲僮鳌Ec此同時(shí)或在此后,通過網(wǎng)絡(luò)第一計(jì)算機(jī)把消費(fèi)者的PIN傳送給第三計(jì)算機(jī),繞過第二計(jì)算機(jī)。然后第三計(jì)算機(jī)驗(yàn)證ATM卡號和PIN是否正確以及在銀行帳戶中的資金是否足以支付交易額。然后第三計(jì)算機(jī)將驗(yàn)證過程的結(jié)果傳送給第二計(jì)算機(jī)。依照該驗(yàn)證結(jié)果,購買或者完成或者被拒絕。


下面參照附圖詳細(xì)地描述本發(fā)明。
在附圖中圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖;圖2是說明圖1的系統(tǒng)操作的流程圖;圖3示出了一個(gè)可能的圖形用戶界面,該界面能用于使消費(fèi)者輸入或?qū)⑵銹IN發(fā)送給合同第三方;圖4是概述通過圖1的系統(tǒng)的數(shù)據(jù)流的示意圖。
具體實(shí)施例方式圖1示意性地示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)10。系統(tǒng)10包括在消費(fèi)者位置14的第一計(jì)算機(jī)12、位于在線商位置18的第二計(jì)算機(jī)16,以及在合同第三方位置22的第三計(jì)算機(jī)20。這三個(gè)計(jì)算機(jī)12、16、20通過計(jì)算機(jī)網(wǎng)絡(luò)24,連接在一起,為便于論述,該網(wǎng)絡(luò)為Internet,盡管本發(fā)明可能在任何公眾的或私人的計(jì)算機(jī)網(wǎng)絡(luò)或它們的結(jié)合中實(shí)施。正如本領(lǐng)域的普通技術(shù)人員所了解的,Internet 24是一復(fù)雜且不定形的計(jì)算機(jī)網(wǎng)絡(luò),該計(jì)算機(jī)網(wǎng)絡(luò)包括數(shù)千個(gè)節(jié)點(diǎn)以及元件,并且在該網(wǎng)絡(luò)上,信號由,特別是,電話線、衛(wèi)星和光纖發(fā)送。
通常位于消費(fèi)者家中或公司(消費(fèi)者位置14)的第一計(jì)算機(jī)12典型地是一常規(guī)的個(gè)人計(jì)算機(jī)(PC),其包括容納有一中央處理單元(CPU)和支持電路以及一軟盤驅(qū)動(dòng)器、一硬盤驅(qū)動(dòng)器以及一內(nèi)置調(diào)制解調(diào)器的機(jī)殼。通過該機(jī)殼連接到CPU的是一鍵盤、一鼠標(biāo)以及一顯示器。用戶使用該鍵盤和鼠標(biāo)來控制第一計(jì)算機(jī)12的操作以及將信息輸入到該第一計(jì)算機(jī)12。該第一計(jì)算機(jī)12通常經(jīng)由連接到調(diào)制解調(diào)器的電話線連接到Internet,盡管該計(jì)算機(jī)通過一高速數(shù)據(jù)傳輸線能連接到Internet。消費(fèi)者通常利用Internet服務(wù)供應(yīng)商如ErolsTM或America OnlineTM連接到Internet,但也可能直接連接到Internet。
盡管消費(fèi)者通常使用常規(guī)的PC,但消費(fèi)者也可能使用可連接到Internet的任何類型的計(jì)算機(jī),包括在局域網(wǎng)上的一個(gè)工作站,以及任何操作系統(tǒng)。第一計(jì)算機(jī)12的詳細(xì)細(xì)節(jié)基本上與本發(fā)明無關(guān)。第一計(jì)算機(jī)12僅用作消費(fèi)者通過Internet對商品或服務(wù)下定單的一個(gè)常規(guī)界面。
圖1接著示出了位于在線商位置18的第二計(jì)算機(jī)16。該第二計(jì)算機(jī)16最好是比個(gè)人計(jì)算機(jī)功能更強(qiáng)大的計(jì)算機(jī),如工作站,盡管在線商也可能使用一個(gè)人計(jì)算機(jī)。第二計(jì)算機(jī)16的詳細(xì)細(xì)節(jié)基本上也與本發(fā)明無關(guān)。
通常,第二計(jì)算機(jī)16是由在線商或由與在線商簽訂合同的Internet服務(wù)供應(yīng)商擁有和操作的一個(gè)環(huán)球網(wǎng)服務(wù)器(Web server)(提供通過Internet直接訪問World Wide Web的計(jì)算機(jī),該計(jì)算機(jī)包括必需的硬件、操作系統(tǒng)、環(huán)球網(wǎng)服務(wù)器軟件、TCP/IP協(xié)議以及環(huán)球網(wǎng)站點(diǎn)內(nèi)容)。為便于論述,在線商位置18指的是第二計(jì)算機(jī)16的位置,且不必需是在線商的實(shí)際物理位置。
第二計(jì)算機(jī)16最好將運(yùn)行Windows NTTM4.0,使用InternetInformation ServerTM4.0以及Commerce ServerTM3.0。第二計(jì)算機(jī)16的CPU必須具有可接受的功率以及應(yīng)具有至少64兆字節(jié)的RAM。
第二計(jì)算機(jī)16通常在存儲器中具有一在線目錄,該目錄能被Internet 24上的消費(fèi)者通過由在線商提供的適當(dāng)?shù)膱D形用戶界面訪問和瀏覽。
圖1中所示的第三計(jì)算機(jī)20位于合同第三方位置22。合同第三方是一個(gè)獨(dú)立的、已保險(xiǎn)的機(jī)構(gòu),如銀行,它與在線商聯(lián)系以提供ATM服務(wù)。盡管該第三計(jì)算機(jī)20可以是個(gè)人計(jì)算機(jī),但與第二計(jì)算機(jī)16一樣,它最好是具有更強(qiáng)大功能的計(jì)算機(jī),如工作站。同樣該第三計(jì)算機(jī)20最好是由合同第三方或由與該合同第三方簽訂合同的Internet服務(wù)供應(yīng)商擁有和操作的環(huán)球網(wǎng)服務(wù)器。合同第三方位置22指第三計(jì)算機(jī)20的位置且不必需是該合同第三方的實(shí)際物理位置。與第一和第二計(jì)算機(jī)12、16一樣,第三計(jì)算機(jī)20的詳細(xì)細(xì)節(jié)基本上與本發(fā)明無關(guān),只要該第三計(jì)算機(jī)20能執(zhí)行在此描述的功能即可。該第三計(jì)算機(jī)最好是運(yùn)行Compaq ProLiantTM的服務(wù)器,其具有128MB RAM,運(yùn)行在500MHZ并使用Windows NTTM4.0。
圖2中提供的流程圖26說明系統(tǒng)10的操作。如方框28中所示,消費(fèi)者最初經(jīng)由Internet通過使用市面上可買到的瀏覽器如InternetExplorerTM或Netscape NavigatorTM來訪問在線商的環(huán)球網(wǎng)站點(diǎn)以建立第一計(jì)算機(jī)12與第二計(jì)算機(jī)16之間的連接。然后,如方框30和32所示,使用由在線商提供的GUI(圖形用戶界面),消費(fèi)者瀏覽在線目錄、選擇他希望購買的商品和/或服務(wù)。一旦消費(fèi)者作出選擇且準(zhǔn)備下定單,該消費(fèi)者就通過Internet把購買定單消息發(fā)送給在線商(方框34)。
然后消費(fèi)者被提示有關(guān)支付信息,如方框36所示,為便于當(dāng)前的論述,該支付信息是ATM卡號及其截止日期,盡管支付信息能包括附加的數(shù)據(jù),諸如消費(fèi)者的姓名和住址。然后該消費(fèi)者通過Internet把他的支付信息發(fā)送給在線商,如方框38所示。如在此所使用的,術(shù)語“ATM卡”包括銀行卡、記帳卡和發(fā)證銀行或機(jī)構(gòu)可能要求用于使用的有效PIN的任何其他卡。通過Internet,使用加密連接,如128位加密SSL來發(fā)送支付信息。
當(dāng)在線商收到ATM卡號時(shí)或更早,第二計(jì)算機(jī)16通過將消費(fèi)者的IP地址和一個(gè)日期/時(shí)間戳結(jié)合起來創(chuàng)建一個(gè)唯一會(huì)話標(biāo)識符,該IP地址唯一地識別該消費(fèi)者。然后通過Internet由第二計(jì)算機(jī)16將ATM卡號連同該唯一會(huì)話標(biāo)識符、唯一地識別該在線商的一個(gè)商人ID、識別由在線商使用的終端的終端ID、ATM卡的截止日期以及購買價(jià)格發(fā)送或傳回給位于合同第三方位置22的第三計(jì)算機(jī)20(方框40)。該數(shù)據(jù)包以隊(duì)列(queue)的形式存儲在第三計(jì)算機(jī)的存儲器中。最好也使用128位加密SSL。
由第二計(jì)算機(jī)16發(fā)送給第三計(jì)算機(jī)20的數(shù)據(jù)包最好以工業(yè)標(biāo)準(zhǔn)格式如ISO 8583或VISA-K格式發(fā)送。然而,本發(fā)明并不局限于任何特定格式,也可能使用在線商可能要求的任何格式。創(chuàng)建唯一會(huì)話標(biāo)識符并格式化數(shù)據(jù)包的用Java編寫的一個(gè)樣本計(jì)算機(jī)程序在附錄A中提供。該程序被設(shè)計(jì)成在Windows NT 4.0下的Internet Server4.0上運(yùn)行的一個(gè)Active Server Page,盡管該程序能在其他平臺和編程環(huán)境下使用,并能由本領(lǐng)域普通技術(shù)人員容易地實(shí)現(xiàn)。在此沒有明確或暗示的授權(quán)許可復(fù)制、準(zhǔn)備派生作品、發(fā)布拷貝、顯示或其他對附加在此的程序附錄A的使用,除非該程序可能被復(fù)制作為由此發(fā)布的專利的附錄。
與此同時(shí)或稍后,第二計(jì)算機(jī)執(zhí)行到第三計(jì)算機(jī)的超級鏈接并且消費(fèi)者由第三計(jì)算機(jī)提示輸入其PIN(方框42)。消費(fèi)者把他的PIN輸入到第一計(jì)算機(jī)12中并通過Internet將它發(fā)送到第三計(jì)算機(jī)20(方框44)。第一計(jì)算機(jī)12和第三計(jì)算機(jī)20之間的連接被加密并與第一計(jì)算機(jī)12和第二計(jì)算機(jī)16的連接無關(guān),因此在線商決不能擁有該P(yáng)IN。與第二計(jì)算機(jī)16一樣,第一計(jì)算機(jī)12將唯一會(huì)話標(biāo)識符、商人ID、終端ID、ATM卡的截止日期以及購買價(jià)格連同在一數(shù)據(jù)包中的PIN發(fā)送給第三計(jì)算機(jī)20。
圖3示出了一個(gè)典型的GUI 46,它可能由合同第三方提供并在消費(fèi)者的屏幕上彈出以允許消費(fèi)者輸入他的PIN并將它發(fā)送給該合同第三方。從圖3中可清楚地看到,GUI 46模仿一個(gè)實(shí)際的ATM機(jī)并包括一個(gè)模擬鍵盤48和一個(gè)屏幕50。該屏幕50顯示在線商的名稱和郵件地址52以及購買價(jià)格54。消費(fèi)者使用他的鼠標(biāo)輸入他的PIN,如連續(xù)點(diǎn)56所示。通過按下SUBMIT(提交)按鈕58,PIN號被發(fā)送給合同第三方。如果消費(fèi)者出錯(cuò)則他按CLEAR(清除)按鈕60并重新鍵入他的PIN。如果該消費(fèi)者需要合同第三方的幫助,則他簡單地按下HELP(幫助)按鈕62,就將在屏幕上彈出由該合同第三方提供的一個(gè)幫助菜單,消費(fèi)者可操作該菜單。
接著第三計(jì)算機(jī)20驗(yàn)證ATM卡號及PIN是否有效(方框64)。因?yàn)楹贤谌娇赡茉谌魏沃付〞r(shí)間內(nèi)監(jiān)視許多交易,所以該第三計(jì)算機(jī)20必須使從第一和第二計(jì)算機(jī)12,16收到的數(shù)據(jù)包同步。為執(zhí)行該操作,第三計(jì)算機(jī)20匹配包含在從第一和第二計(jì)算機(jī)12,16收到的數(shù)據(jù)包內(nèi)的所述唯一對話標(biāo)識符、商人ID、終端ID、ATM卡的截止日期以及購買價(jià)格字段。用于使從第一和第二計(jì)算機(jī)12,16收到的數(shù)據(jù)包同步的一個(gè)樣本計(jì)算機(jī)程序提供在附錄B中。該程序用C++編寫并能很容易地由本領(lǐng)域的普通技術(shù)人員執(zhí)行。在此沒有明確或暗示的授權(quán)許可復(fù)制、準(zhǔn)備派生的作品、發(fā)布拷貝、顯示或其他對附加在此的程序附錄B的使用,除非該程序可能被復(fù)制作為由此發(fā)布的專利的附錄。
為了發(fā)生交易,所有上述數(shù)據(jù)字段必須匹配。為了安全原因,最好執(zhí)行用于匹配的一個(gè)“兩分鐘窗口(two minute window)”。如果在該兩分鐘窗口內(nèi)沒有匹配,則交易被中止。
一旦來自第一和第二計(jì)算機(jī)12,16的數(shù)據(jù)包由第三計(jì)算機(jī)20同步,則該第三計(jì)算機(jī)檢查ATM卡號和PIN。如果ATM卡號以及PIN是無效的,則第三計(jì)算機(jī)20通知第二計(jì)算機(jī)16,且在線商拒絕該購買定單并通知消費(fèi)者(方框66)。如果ATM卡號和PIN是有效的,則第三計(jì)算機(jī)20檢查是否有充足的資金來支付該購買價(jià)格56(方框68)。如果帳戶中有充足的資金,則第三計(jì)算機(jī)把一個(gè)認(rèn)可消息發(fā)送給第二計(jì)算機(jī),把帳記入消費(fèi)者的賬戶中,完成購買并通知消費(fèi)者(方框70)。如果沒有充足的資金,則發(fā)送一個(gè)拒絕消息,在線商拒絕該購買并通知消費(fèi)者(方框72)。
如果ATM卡是由合同第三方發(fā)行的,則驗(yàn)證步驟(方框64和68)可能通過簡單地訪問在第三計(jì)算機(jī)20內(nèi)或連接于其上的一個(gè)內(nèi)部數(shù)據(jù)庫來完成。然而,如果ATM卡是由其它銀行發(fā)行的,那么合同第三方必須通過和發(fā)證銀行直接或通過一保密線路聯(lián)系,經(jīng)由一專用的ATM網(wǎng)絡(luò),諸如CIRRUS或經(jīng)由任何其他可行途徑來驗(yàn)證該卡信息。
圖4中概述了通過該系統(tǒng)的數(shù)據(jù)流。第一,消費(fèi)者(第一計(jì)算機(jī))通過網(wǎng)絡(luò)將他的PIN卡號發(fā)送給在線商(第二計(jì)算機(jī))(方框74)。第二,在線商通過網(wǎng)絡(luò)將ATM卡號發(fā)送給合同第三方(第三計(jì)算機(jī))(方框76)。第三,該消費(fèi)者通過網(wǎng)絡(luò)將他的PIN發(fā)送給合同第三方(方框78)。如圖4所示,在線商被完全地繞過且永遠(yuǎn)不會(huì)接收到PIN。第四,合同第三方驗(yàn)證ATM卡號和PIN并檢查資金是否充足(方框80)。第五,合同第三方通過網(wǎng)絡(luò)將驗(yàn)證過程的結(jié)果發(fā)送給在線商(方框82)。以及第六,在線商通過網(wǎng)絡(luò)將該結(jié)果發(fā)送給消費(fèi)者,依據(jù)驗(yàn)證的結(jié)果完成或拒絕該購買(方框84)。
因此,根據(jù)上述內(nèi)容實(shí)現(xiàn)了本發(fā)明的目的。本發(fā)明的各種修改對本領(lǐng)域的普通技術(shù)人員來說將是顯而易見的,但不會(huì)導(dǎo)致本發(fā)明被修改得脫離所附權(quán)利要求限定的范圍。
<pre listing-type="program-listing">  附錄Aimport java.io.*;import java.net.*;import java.util.*;import java.util.Date;import com.ms.com.*;import com.ms.asp.*;public class JRoute{   public Socket socSocket;  int m_iTimeout=10000;  J8583 msg=new J8583();  public int init(String input)  {   //VAR DECLARATIONS   int port=0,ok=0;//CONNECTION PORT,CHECKSUM  String hostname=″localhost″;//DEFAULT  DataOutputStream theOutputStream;  int parnum=8;  String strlnput=″″;&lt;dp n="d8"/&gt;   String cardNumber=″″,amount=″″,expirydate=″″,trannum=″″,tid=″″,mid=″″,unique=″″,goAway=″″;   try{  ///////////////////////////////////READ INI PARS  StringTokenizer tkToken=new StringTokenizer(input);  hostname=tkToken.nextToken();  port=Integer.parseInt(tkToken.nextToken());  m_iTimeout=Integer.parseInt(tkToken.nextToken());  ///////////////////////////////////  //CARD NEEDS TO BE SENT TO OKTOPUS  //BUILD MSG  msg.addField(2,cardNumber);  msg.addField(4,amount);  msg.addField(14,expirydate);  msg.addField(37,″1″);  msg.addField(41,tid);  msg.addField(42,mid);  msg.addField(61,unique);  //CREATE SOCKET  try  {  socSocket=new Socket(hostname,port);  socSocket.setSoTimeout(m_iTimeout);  socSocket.setTcpNoDelay(true);  }  catch(UnknownHostException e)  {   return(-4);//HOST NOT FOUND  }  catch(lOException sockErr)  {   return(-3);  }  catch(Exception all)  {   return(-2);  }  msg.sendData(socSocket);   }   catch(Exception er)   {   return(-1);//SEND ERROR   }   return(-1);}public int listenfordata(){   //8583 CLASS   msg.receive(socSocket);   try   {   if(msg.decide(socSocket)==0)//APPROVAL   {  try{   return(0);//ITS GOOD  }  catch(Exception any)  {   return(-2);//ERROR&lt;dp n="d9"/&gt;   }   }   else   {   return(1);//DENIED   }  }  catch(Exception e)  {   return(-3);//ERRROR  }  }}import java.io.*;import java.net.*;public class J8583{   private byte m_baOut[]=new byte ;//OUTGOING BUFFER   private int m_baOutIndex=0;//0 BASED INDEX OF FILLED BYTES   private DataOutputStream m_dosData;   private BufferedInputStream m_bisInput;   private int m_field[]=new int[30];   private String m_value[]=new String[30];   public J8583()   {   //CONSTRUCTOR   }   public void readFields()   {   int x=0;   for(x=0;x<30;x++)   System.out.print(m_field[x]+″=″+m_value[x]+″\n″);   }   public void addField(int field,String value)   {   int xj;   j=value.length();   m_baOut[m_baOutIndex]=(byte)field;   m_baOutIndex++;   for(x=0;x<j;x++)//THE INDEX IS ONE HIGH TO LEAVE A NULL BETWEEN FIELDS   m_baOut[x+m_baOutIndex]=(byte)value.charAt(x);   m_baOutIndex +=j(luò)+1;//RESET THE INDEX   }   public void sendData(Socket socLocal)   {   try   {  //SEND  m_dosData=new DataOutputStream(socLocal.getOutputStream());  m_dosData.write(m_baOut,0,m_baOutIndex);   }   catch(UnknownHostException e)   {  System.out.print(e);  System.exit(0);   }   catch(IOException sockErr)   {   System.out.print(″Socket Connection″+sockErr);   System.exit(0);   }   catch(Exception all)   {  System.out.print(″Socket Error″+all);  System.exit(0);   }  }&lt;dp n="d10"/&gt;public String resolveFieldValue(int fieldNumber){   int x=0;   for(x=0;x<30;x++)   if(m_field[x]=fieldNumber)   return(m_value[x]);   return(″″);}public void receive(Socket socLocal){try   {   m_bisInput=new BufferedInputStream(socLocal.getInputStream());   int k=1,index=0;   byte buf[]=new byte ;   m_bisInput.read(buf,0,1024);   for(k=0;k<30;k++)//INITIALIZE THE NULL STRINGS   m_value[k]=″″;   k=1;   m_field[index]=buf[index];//FIRST FIELD MARKED BY FIRST BYTE   while(k<1024)   {   if(buf[k]?。?)   {   m_value[index]+=(char)buf[k++];   }   else   {   if(buf[k+1]=0)//END OF STREAM   break;   else   {   index++;   m_field[index]=buf[k+1];   // System.out.print(″|″+buf[k+1]+″|″);   k+=2;   }   }   }   catch(IOException err)   {  //TIMEOUT  //System.out.print((nTimeout)/1000+″Second Timeout″);  try  {socLocal.close();}  catch(IOException Error){System.out.print(″p″+Error);}   }   catch(Exception all)   {   //MOST LIKELY A CLOSE ON IQ   System.out.print(″Network Connection Closed″+all);   //redirect(urlTimeout);   }}public int decide(Socket socLocal){  int k=0,index=0;  byte pResult=0;  for(k=0;k<30;k++)  if(m_field[k]=39)//GRAB PIN FIELD&lt;dp n="d11"/&gt;   pResult=(byte)m_value[k].charAt(0);  try{socLocal.close();}  catch(IOException e){}  if(pResult=48)//0 IS APPROVED  {   //System.out.print(″Thank You For Shopping At Electronic Paycheck″);   return(0);  }  else  {   //System.out.print(″Denied″);   return(1);  }   }}   附錄B//webhostDlg.cppimplementation file//#include″stdafx.h″#include″webhost.h″#include″webhostDlg.h″#include<afxtempl.h>//list#ifndef TimeOut#define TimeOut 200#endif#define TimerID 0x4000#ifdef_DEBUG#define new DEBUG_NEW#undef THIS FILEstatic char THIS_FILE[]=_FILE_;#endif//////////////////////////////////////////////////////////////////////////////CAboutDlg dialog used for App Aboutclass CAboutDlgpublic CDialog{public   CAboutDlg();//Dialog Data   //{{AFX_DATA(CAboutDlg)   enum{IDD=IDD_ABOUTBOX};   //}}AFX_DATA   //Class Wizard generated virtual function overrides   //{{AFX_VIRTUAL(CAboutDlg)   protected   virtual void DoDataExchange(CDataExchange* pDX);//DDX/DDV support   //}}AFX_VIRTUAL//Implementationprotected   //{{AFX_MSG(CAboutDlg)   //}}AFX_MSG   DECLARE_MESSAGE_MAP()};CAboutDlg∷CAboutDlg()CDialog(CAboutDlg∷IDD){   //{{AFX_DATA_INIT(CAboutDlg)   //}}AFX_DATA_INIT}&lt;dp n="d12"/&gt;void CAboutDlg∷DoDataExchange(CDataExchange* pDX){   CDialog∷DoDataExchange(pDX);   //{{AFX_DATA_MAP(CAboutDlg)   //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)   //{{AFX_MSG_MAP(CAboutDlg)   //No message handlers   //}}AFX_MSG_MAPEND_MESSAGE_MAP()//////////////////////////////////////////////////////////////////////////////CWebhostDlg dialogCWebhostDlg∷CWebhostDlg(CWnd* pParent/*=NULL*/)  :CDialog(CWebhostDlg∷IDD,pParent){  //{{AFX_DATA_INIT(CWebhostDlg)  m_in=0;  m_out=0;  m_q=_T(″″);  //}}AFX_DATA_INIT  //Note that Loadlcon does not require a subsequent DestroyIcon in Win32  m_hlcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CWebhostDlg∷DoDataExchange(CDataExchange* pDX){  CDialog∷DoDataExchange(pDX);  //{{AFX_DATA_MAP(CWebhostDlg)  DDX_Control(pDX,IDC_LST,m_lst);  DDX_Text(pDX,IDC_IN,m_in);  DDX_Text(pDX,IDC_OUT,m_out);  DDX_Text(pDX,IDC_Q,m_q);  //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CWebhostDlg,CDialog)  //{{AFX_MSG_MAP(CWebhostDlg)  ON_WM_SYSCOMMAND()  ON_WM_PAINT()  ON_WM_QUERYDRAGICON()  ON_WM_TIMER()  //}}AFX_MSG_MAPEND_MESSAGE_MAP()extem CWebhostApp theApp;CWebhostDlg* pDlg;char dbParam[256];#include<ep_init.h>#include<format.h>#define_STDC_#include<d3des.h>EPsql sql;Listener listener;CList<Auth*,Auth*>Qa;CList<EndPoint*,EndPoint*>Qe;int matchF[]={2,14,41,42,61,0};//f61=uniqueID,f44=″5A315405018B44C4″unsigned char key[]={0x29,0xda,0x91,0x0b,0x80,0x9b,0xfe,0xd3};CString sDebug;void Listener∷OnAccept(int nErrorCode){ EndPoint* tmp=new EndPoint(); if(Accept(*tmp))tmp->init();else delete tmp;}int EndPoint∷respond(){ const char *p;&lt;dp n="d13"/&gt; char pkt ,*s=pkt; int i,d[]={35,43,47,48,52,62,102,103,0}; if(getType()=0)return 0; i=0;while(d[i]){set(d[i],NULL);i++;} for(i=2;i<128;i++) {if(p=get(i)){*s=i;strcpy(s+1,p);s+=strlen(p)+2;}} return Send(pkt,s-pkt);}int EndPoint∷aging(int t){ if(t){if(t=-1)sec-;else sec=t;} return sec;}int EndPoint∷match(M8583* m){ int f,i=0; while(f=matchF[i++])if(strcmp(m->get(f),get(f)))return 0; return 1;}void EndPoint∷init(){ char buf[32]; CString ip0; UINT port; BOOL nodelay=TRUE; SetSockOpt{TCP_NODELAY,&amp;amp;nodelay,sizeof(BOOL),IPPROTO_TCP); sec=TimeOut;Qe.AddTail(this);pDlg->m_in++; GetPeerName(ip0,port);ip=inet_addr(ip0); sprintf(buf,″Connect %08x″,ip);pDlg->note(buf);}void EndPoint∷reject(int code){ char buf[32]; sprintf(buf,″Reject %08x,code=%d″,ip,code);pDlg->note(buf);sec=0; set(39,″100″);set(44,buf+16);respond();}void EndPoint∷OnReceive(int nErrorCode){ Auth* a; EndPoint* e=NULL; POSITION pos1,pos2; BOOL fullTrans=TRUE; short len,l,i,f; const char* pp; char *p,pin[24],pan[20],buf[ 1024],scode[]=″1200″,offset[]=″0000″; if(nErrorCode){sec=0;return;} len=Receive(buf,1020);buf[len]=0;p=buf;setType(1200);*pin=1; while(*p){ l=strlen(p);if((*p==61)&amp;amp;&amp;amp;(1==2)&amp;amp;&amp;amp;(p[1]==′A′))fullTrans=FALSE; if(set(*p,p+1,8)<1){reject(*p);return;} if((*p==52)&amp;amp;&amp;amp;(1<14))//clear PIN {*pin=0;pin[1]=1-1;strcpy(pin+2,p+1);memset(pin+1+1,15,10);} p+=(1+1);//build PIN block } if((pp=get(52))&amp;amp;&amp;amp;(strncmp(pp,″F01″,3)==0)){reject(52);return;} i=0;while(f=matchF[i++])if(get(f)==NULL){reject(f);return;} if(*pin=0){//got clear PIN,build PAN block,update PIN block strcpy(pan,offset);strncpy(pan+4,get(2)+strlen(get(2))-13,12); p=pin;for(i=0;i<16;i++){*p=(*^pan[i])&amp;amp;15;p++;} for(i=0;i<8;i++)pin[i]=(pin[i*2]<<4)+pin[i*2+1]; deskey(key,0);des((unsigned char*)pin,(unsigned char*)pan); for(i=0;i<8;i++)bin2hex(pin+i*2,pan[i]);pin[16]=0;set(52,pin); strcpy(buf,get(2));strcat(buf,″=″);strcat(buf,get(14)); strcat(buf,scode);strcat(buf,offset);set(35,buf);}//service code and offset hardcodedif(fullTrans){ pos2=Qe.GetHeadPosition(); while(pos2){ pos1=pos2;e=Qe.GetNext(pos2); if(!match(e)‖(e==this))e=NULL;else{Qe.RemoveAt(pos1);break;} }}if(!fullTrans‖fullTrans&amp;amp;&amp;amp;e){a=new Auth(this,e);Qa.AddTail(a);Qe.RemoveAt(Qe.Find(this));}sprintf(buf,″Recv %08x %d,card=%s″,ip,len,get(2)); pDlg->note(buf);&lt;dp n="d14"/&gt;}Auth∷Auth(EndPoint* e1,EndPoint″e(cuò)2){ int i; const char* p; char f[16],dest[4]=″N?″; e
=e1;e[1]=e2;cp(*e1); if(e2){ if(e2->getType()==1200)setType(1200);set(3,″000000″); for(i=2;i<128;i++)if(p=e2->get(i))set(i,p); }else{set(3,″300000″);set(4,″000000000000″);} if(fillMsg(*this,sql,dbParam,3))//1BIN,2mid/tid {e1->reject(1);if(e2)e2->reject(1);setType(0);return;} id=++pDlg->m_out;pDlg->UpdateData(FALSE); set(37,itoa(id,f,10),8);pDlg->m_ep.cp(*this); dest[1]=*(get(47)+1);pDlg->m_ep.send(dest);}BOOL Auth∷isActive(){ if((e[1]==NULL)‖(e
->aging(0)>0)&amp;amp;&amp;amp;(e[1]->aging(0)>0))return TRUE; setType(0);return FALSE;}Auth∷~Auth(){ for(int i=0;i<2;i++)if(e[i]) {e[i]->cp(*this);e[i]->respond();delete e[i];} setType(0);}//////////////////////////////////////////////////////////////////////////////CWebhostDlg message handlersBOOL CWebhostDlg∷ONInitDialog(){   CDialog∷OnInitDialog();   //Add ″About..″menu item to system menu.   //IDM_ABOUTBOX must be in the system command range.   ASSERT((IDM_ABOUTBOX &amp;amp; 0xFFF0)==IDM_ABOUTBOX);   ASSERT(IDM_ABOUTBOX<0xF000);   CMenu* pSysMenu=GetSystemMenu(FALSE);   if(pSysMenu ?。絅ULL)   {  CString strAboutMenu;  strAboutMenu.LoadString(IDS_ABOUTBOX);  if(!strAboutMenu.IsEmpty())  {   pSysMenu->AppendMenu(MF_SEPARATOR);   pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);  }   }   //Set the icon for this dialog.The framework does this automatically   // when the application′s main window is not a dialog   SetIcon(m_hlcon,TRUE);//Set big icon   SetIcon(m_hlcon,F(xiàn)ALSE);//Set small icon   //TODOAdd extra initialization herechar IP[256],name[4],title[16];short TCPort,port;const char fmt[]=″%s %hd %2s %s %hd %s″;const char usage[]=″Usagewebhost IP port name DBpararn listenPort″;if(sscanf(theApp.m_lpCmdLine,fmt,IP,&amp;amp;TCPort,name,dbParam,&amp;amp;port)<5){∷MessageBox(NULL,usage,″Error″,MB_OK);EndDialog(0);return FALSE;}sprintf(title,″WebHost %s %d″,name,port);SetWindowText(title);if(!listener.Create(port)){ ∷MessageBox(NULL,″Unable to create TCP/IP sockets.″,″Error″,MB_OK); EndDialog(0);return FALSE;}if(!listener. Listen()){ ∷MessageBox(NULL,″Network error.″,″Error″,MB_OK); EndDialog(0);return FALSE;}&lt;dp n="d15"/&gt; if(m_ep.connect(IP,TCPort,name)){ ∷MessageBox(NULL,″Error connecting to EProute.″,″Error″,MB_OK); EndDialog(0);return FALSE; } pDlg=this;SetTimer(TimerID,1000,NULL);  return TRUE;//return TRUE unless you set the focus to a control } void CWebhostDlg∷OnSysCommand(UINT nID,LPARAM IParam) {   if((nID &amp;amp; 0xFFF0)==IDM_ABOUTBOX)   {  CAboutDlg dlgAbout;  dlgAbout.DoModal();   }   else   {  CDialog∷OnSysCommand(nID,IParam);   }}//If you add a minimize button to your dialog,you will need the code below//to draw the icon.For MFC applications using the document/view model,//this is automatically done for you by the framework.void CWebhostDlg∷OnPaint(){   if(lslconic())   {  CPaintDC dc(this);//device context for painting  SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);  //Center icon in client rectangle  int cxIcon=GetSystemMetrics(SM_CXICON);  int cyIcon=GetSystemMetrics(SM_CYICON);  CRect rect;  GetClientRect(&amp;amp;rect);  int x=(rect.Width()-cxIcon+1)/2;  int y=(rect.Height()-cyIcon+1)/2;  //Draw the icon    dc.Drawlcon(x,y,m_hlcon);   }   else   {  CDialog∷OnPaint();   }}//The system calls this to obtain the cursor to display while the user drags//the minimized window.HCURSOR CWebhostDlg∷OnQueryDragIcon(){   return(HCURSOR)m_hIcon;}void CWebhostDlg∷OnTimer(UINT nIDEvent){   //TODOAdd your message handler code here and/or call default Auth* a; EndPoint* e; POSITION pos1,pos2; BOOL del=FALSE; if(nIDEvent==TimerID){ pos2=Qe.GetHeadPosition(); while(pos2){ pos1=pos2;e=Qe.GetNext(pos2); if(e->aging()<1){Qe. RemoveAt(pos1);del=TRUE;delete e;} } pos2=Qa.GetHeadPosition(); while(pos2){ pos1=pos2;a=Qa.GetNext(pos2); if(!a->isActive()){Qa.RemoveAt(pos1);del=TRUE;delete a;} }&lt;dp n="d16"/&gt;  if(del)note(NULL); }  CDialog∷OnTimer(nIDEvent);}void CWebhostDlg∷note(const char*s){ if(s) {m_lst.AddString(s);if(m_lst.GetCount()>14)m_lst.DeleteString(0);} m_q.Format(″%d %d″,Qe.GetCount(),Qa.GetCount());UpdateData(FALSE);}void On8583(short mType,EPacket* ep){ int n,i; char s[64]; const char* p; POSITION pos1,pos2; Auth* a; if((mType=1)‖ep->mustExit()){pDlg->EndDialog(0);return;} if(mType)return;//ignore other administrative messages ep->receive();if(ep->getType()=1430)return; if(p=ep->get(37))n=atoi(p);else return; pos2=Qa.GetHeadPosition(); while(pos2){ pos1=pos2;a=Qa.GetNext(pos2); if(a->match(n)){ ep->set(37,NULL);for(i=2;i<128;i++)if(p=ep->get(i))a->set(i,p); Qa.RemoveAt(pos1);delete a;pDlg->note(NULL);return; } } pDlg->note(″reversal″);ep->getType(s);memset(s+4,′0′,18);s[22]=0; if(p=ep->get(11))strncpy(s+4,p,6); if(p=ep->get(12))strncpy(s+10,p,12); if(p=ep->get(32))strcpy(s+22,p); ep->set(56,s);ep->setType(1420);ep->send(ep->getSender());}/*sDebug.Format(″″);∷MessageBox(NULL,sDebug,″Debug″,MB_OK);*/</pre>
權(quán)利要求
1.一種通過計(jì)算機(jī)網(wǎng)絡(luò)使用第一號碼和第二號碼進(jìn)行購買的方法,該第一號碼識別消費(fèi)者帳戶,從該帳戶中將提取資金來支付購買價(jià)格,該第二號碼與所述第一號碼有關(guān),當(dāng)該第二號碼與所述第一號碼一起使用時(shí),能從所述帳戶中提取資金,所述方法包括步驟通過所述網(wǎng)絡(luò)從消費(fèi)者位置電子地把所述第一號碼發(fā)送到在線商位置;通過所述網(wǎng)絡(luò)從所述在線商位置電子地把所述第一號碼發(fā)送到合同第三方位置;通過所述網(wǎng)絡(luò)從所述消費(fèi)者位置電子地把所述第二號碼發(fā)送到所述合同第三方位置;以及在合同第三方位置處確定所述第一和第二號碼的有效性。
2.如權(quán)利要求1所述的方法,其中,當(dāng)所述第二號碼從所述消費(fèi)者位置傳送給合同第三方位置時(shí)繞過所述在線商位置。
3.如權(quán)利要求1所述的方法,其中,所述第一和第二號碼通過所述網(wǎng)絡(luò)經(jīng)由加密連接被發(fā)送。
4.如權(quán)利要求1所述的方法,其中所述網(wǎng)絡(luò)是Internet。
5.如權(quán)利要求1所述的方法,包括在合同第三方位置確定所述賬戶是否有足夠的資金來支付所述購買價(jià)格的附加步驟。
6.如權(quán)利要求1所述的方法,包括從所述合同第三方位置通過所述網(wǎng)絡(luò)電子地把一個(gè)信號發(fā)送給所述在線商位置以指示所述第一和第二號碼是否有效的附加步驟。
7.如權(quán)利要求5所述的方法,包括從所述合同第三方位置通過所述網(wǎng)絡(luò)電子地把一個(gè)信號發(fā)送給所述在線商位置以指示所述賬戶中是否有足夠的資金來支付所述購買價(jià)格的附加步驟。
8.如權(quán)利要求1所述的方法,包括從所述在線商位置通過所述網(wǎng)絡(luò)電子地把一個(gè)信號發(fā)送給所述消費(fèi)者位置以指示所述購買是否已經(jīng)認(rèn)可的附加步驟。
9.一種通過計(jì)算機(jī)網(wǎng)絡(luò)使用第一號碼和第二號碼進(jìn)行購買的系統(tǒng),該第一號碼識別消費(fèi)者帳戶,從該帳戶中將提取資金來支付購買價(jià)格,該第二號碼與所述第一號碼有關(guān),當(dāng)該第二號碼與所述第一號碼一起使用時(shí),能從所述帳戶中提取資金,所述系統(tǒng)包括在消費(fèi)者位置的第一計(jì)算機(jī),所述第一計(jì)算機(jī)連接到所述網(wǎng)絡(luò);位于在線商位置的第二計(jì)算機(jī),所述第二計(jì)算機(jī)連接到所述網(wǎng)絡(luò);以及在合同第三方位置的第三計(jì)算機(jī),所述第三計(jì)算機(jī)連接到所述網(wǎng)絡(luò);其中通過所述網(wǎng)絡(luò)從所述第一計(jì)算機(jī)把所述第一號碼發(fā)送給所述第二計(jì)算機(jī);通過所述網(wǎng)絡(luò)從所述第二計(jì)算機(jī)把所述第一號碼發(fā)送給所述第三計(jì)算機(jī);通過所述網(wǎng)絡(luò)從所述第一計(jì)算機(jī)把所述第二號碼發(fā)送給所述第三計(jì)算機(jī);以及所述第三計(jì)算機(jī)確定所述第一和第二號碼是否有效。
10.如權(quán)利要求9所述的系統(tǒng),其中當(dāng)把所述第二號碼發(fā)送給所述第三計(jì)算機(jī)時(shí)所述第一計(jì)算機(jī)繞過所述第二計(jì)算機(jī)。
11.如權(quán)利要求9所述的系統(tǒng),其中所述第一和第二號碼通過所述網(wǎng)絡(luò)經(jīng)由加密連接發(fā)送。
12.如權(quán)利要求9所述的系統(tǒng),其中所述網(wǎng)絡(luò)是Internet。
13.如權(quán)利要求9所述的系統(tǒng),其中所述第三計(jì)算機(jī)檢查所述帳戶中是否有足夠的資金來支付所述購買價(jià)格。
14.如權(quán)利要求9所述的系統(tǒng),其中所述第三計(jì)算機(jī)通知所述第二計(jì)算機(jī)所述第一和第二號碼是否有效。
15.如權(quán)利要求13所述的系統(tǒng),其中所述第三計(jì)算機(jī)通知所述第二計(jì)算機(jī)所述賬戶中是否有足夠的資金來支付所述購買價(jià)格。
16.如權(quán)利要求9所述的系統(tǒng),其中所述第二計(jì)算機(jī)通知所述第一計(jì)算機(jī)所述購買是否被認(rèn)可。
17.一種認(rèn)可將通過計(jì)算機(jī)網(wǎng)絡(luò)使用第一號碼和第二號碼進(jìn)行的購買的方法,該第一號碼識別消費(fèi)者帳戶,從該帳戶中將提取資金來支付購買價(jià)格,該第二號碼與所述第一號碼有關(guān),當(dāng)該第二號碼與所述第一號碼一起使用時(shí),能從所述帳戶中提取資金,所述方法包括步驟在合同第三方位置接收通過所述網(wǎng)絡(luò)從在線商位置電子地發(fā)送的所述第一號碼;在所述合同第三方位置接收通過所述網(wǎng)絡(luò)從消費(fèi)者位置電子地發(fā)送的所述第二號碼;以及在所述合同第三方位置處確定所述第一和第二號碼的有效性。
18.如權(quán)利要求17所述的方法,其中所述網(wǎng)絡(luò)是Internet。
19.如權(quán)利要求17所述的方法,包括在所述合同第三方位置確定所述賬戶中是否有足夠的資金來支付所述購買價(jià)格的附加步驟。
20.如權(quán)利要求17所述的方法,包括從所述合同第三方位置通過所述網(wǎng)絡(luò)電子地把一個(gè)信號發(fā)送給所述在線商位置以指示所述第一和第二號碼是否有效的附加步驟。
21.如權(quán)利要求19所述的方法,包括從所述合同第三方位置通過所述網(wǎng)絡(luò)電子地把一個(gè)信號發(fā)送給所述在線商位置以指示在所述賬戶中是否有足夠的資金來支付所述購買價(jià)格的附加步驟。
22.一種認(rèn)可將通過計(jì)算機(jī)網(wǎng)絡(luò)使用第一號碼和第二號碼進(jìn)行的購買的系統(tǒng),該第一號碼識別消費(fèi)者的帳戶,從該帳戶中將提取資金來支付購買價(jià)格,該第二號碼與所述第一號碼有關(guān),當(dāng)該第二號碼與所述第一號碼一起使用時(shí),能從所述帳戶中提取資金,所述系統(tǒng)包括連接到所述網(wǎng)絡(luò)的計(jì)算機(jī);所述計(jì)算機(jī)被配置成接收通過所述網(wǎng)絡(luò)從在線商的計(jì)算機(jī)發(fā)送的所述第一號碼,接收通過所述網(wǎng)絡(luò)從消費(fèi)者計(jì)算機(jī)發(fā)送的所述第二號碼,并驗(yàn)證所述第一和第二號碼的有效性。
23.如權(quán)利要求22所述的系統(tǒng),其中所述網(wǎng)絡(luò)為Internet。
24.如權(quán)利要求22所述的系統(tǒng),其中所述計(jì)算機(jī)被配置成確定所述帳戶中是否有足夠的資金來支付所述購買價(jià)格。
25.如權(quán)利要求22所述的系統(tǒng),其中所述計(jì)算機(jī)被配置成通知所述在線商的計(jì)算機(jī)所述第一和第二號碼是否有效。
26.如權(quán)利要求24所述的系統(tǒng),其中所述計(jì)算機(jī)被配置成通知所述在線商的計(jì)算機(jī)所述帳戶中是否有足夠的資金來支付所述購買價(jià)格。
全文摘要
提供一種用于通過計(jì)算機(jī)網(wǎng)絡(luò)使用一ATM卡或類似物進(jìn)行購買的方法和系統(tǒng)(10)。根據(jù)本發(fā)明,消費(fèi)者(12)通過網(wǎng)絡(luò)(24)將他的ATM卡號發(fā)送給一在線商(16)。然后該在線商(16)將該ATM卡號發(fā)送給一合同第三方(20),如銀行,該合同第三方將檢查和認(rèn)可該交易。與此同時(shí)或稍后,消費(fèi)者(12)通過網(wǎng)絡(luò)將他的PIN發(fā)送給合同第三方(20),該合同第三方驗(yàn)證該ATM卡和PIN是否有效。
文檔編號G06Q10/00GK1378675SQ00813905
公開日2002年11月6日 申請日期2000年9月7日 優(yōu)先權(quán)日1999年9月7日
發(fā)明者道格拉斯·W·金 申請人:埃帕西菲克公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
曲麻莱县| 凌海市| 西安市| 雅江县| 开阳县| 吉木乃县| 东阳市| 宜兰县| 福安市| 中江县| 临清市| 葫芦岛市| 普定县| 铜梁县| 株洲县| 公主岭市| 漳州市| 环江| 诸城市| 牡丹江市| 呈贡县| 柏乡县| 宜黄县| 深水埗区| 信宜市| 牡丹江市| 南漳县| 增城市| 同德县| 合作市| 小金县| 通河县| 纳雍县| 永济市| 台北市| 马龙县| 武宣县| 临颍县| 鄂尔多斯市| 东乡族自治县| 河曲县|