MISPOS系統(tǒng)系統(tǒng)詳細(xì)設(shè)計_第1頁
MISPOS系統(tǒng)系統(tǒng)詳細(xì)設(shè)計_第2頁
MISPOS系統(tǒng)系統(tǒng)詳細(xì)設(shè)計_第3頁
MISPOS系統(tǒng)系統(tǒng)詳細(xì)設(shè)計_第4頁
MISPOS系統(tǒng)系統(tǒng)詳細(xì)設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、mis-pos系統(tǒng)v4.0系統(tǒng)詳細(xì)設(shè)計一、 服務(wù)端系統(tǒng)設(shè)計1.1 操作系統(tǒng)選型操作系統(tǒng):redhat as4.0數(shù)據(jù)庫:oracle xe(4g數(shù)據(jù)庫、1cpu、2g內(nèi)存)1.2 系統(tǒng)模塊劃分系統(tǒng)模塊劃分及相互關(guān)系如下圖所示:系統(tǒng)主要包括接入管理進(jìn)程(umsclisrvx-x為編號,根據(jù)不同接口而定,4.0系統(tǒng)標(biāo)準(zhǔn)接口為0)、業(yè)務(wù)處理進(jìn)程(umsmainsrv)、輸出處理進(jìn)程(umsextsrvxx為編號,代表不同的外部轉(zhuǎn)接系統(tǒng),銀聯(lián)接口為0)以及加密進(jìn)程(umspinsrv)。輸入管理進(jìn)程負(fù)責(zé)接收來自收銀終端的各類請求,是系統(tǒng)的業(yè)務(wù)發(fā)起端。來自收銀端的交易分為兩類,一類是業(yè)務(wù)類交易,輸入管理

2、進(jìn)程負(fù)責(zé)解析報文,并將其轉(zhuǎn)換為系統(tǒng)內(nèi)部接口,將其轉(zhuǎn)至業(yè)務(wù)處理進(jìn)程進(jìn)行具體的處理,并等待應(yīng)答(同步通訊);另一類是管理類交易,由輸入管理進(jìn)程直接處理(如自動查錯交易等)。業(yè)務(wù)處理進(jìn)程負(fù)責(zé)接受來自輸入管理進(jìn)程的任務(wù),并根據(jù)不同的業(yè)務(wù)進(jìn)行處理,包括具體的業(yè)務(wù)邏輯處理以及數(shù)據(jù)庫操作等;當(dāng)業(yè)務(wù)邏輯需要將交易發(fā)往銀聯(lián)或其它第三方外部機(jī)構(gòu)進(jìn)行處理時,該進(jìn)程將通過內(nèi)部接口將任務(wù)轉(zhuǎn)至輸出處理進(jìn)程,并等待輸出處理進(jìn)程的應(yīng)答(同步通訊)。輸出處理進(jìn)程負(fù)責(zé)將內(nèi)部通訊接口轉(zhuǎn)換為外部標(biāo)準(zhǔn)接口,并按照外部系統(tǒng)的標(biāo)準(zhǔn)與協(xié)議規(guī)范將交易發(fā)往外部系統(tǒng),完成相應(yīng)的業(yè)務(wù)功能。加密進(jìn)程負(fù)責(zé)操作具體的加密設(shè)備,為上層應(yīng)用邏輯提供必須的加密

3、指令集,與外部通過消息隊列或其它形式通訊(視加密機(jī)的類型而定)。1.3 模塊詳細(xì)設(shè)計輸入管理進(jìn)程設(shè)計輸入管理進(jìn)程的處理流程如下圖所示:對于業(yè)務(wù)類交易,本進(jìn)程僅負(fù)責(zé)接口轉(zhuǎn)換及轉(zhuǎn)發(fā),無具體業(yè)務(wù)邏輯;對于管理類交易,由本進(jìn)程直接處理,主要包括以下管理類交易: 自動查錯交易:前臺系統(tǒng)提供自我診斷功能,其中一部分是檢測服務(wù)端系統(tǒng)的狀態(tài)及與外部系統(tǒng)的網(wǎng)絡(luò)狀態(tài)等,自動查錯交易即用來診斷以上問題,具體業(yè)務(wù)流程如下圖所示:step1:檢測umsclisrv。如建立連接,直接返回a0即可。step2:檢測umsmainsrv。向該進(jìn)程發(fā)測試交易,返回測試結(jié)果。step3:檢測umspinsrv及密鑰設(shè)置情況。調(diào)用

4、加密庫,利用指定的workkey及密鑰索引做加密運算, 業(yè)務(wù)處理進(jìn)程設(shè)計輸出處理進(jìn)程設(shè)計1.4 模塊間交互控制輸出處理進(jìn)程與外部系統(tǒng)一般采用tcp通訊,超時時間50秒。業(yè)務(wù)處理進(jìn)程與輸出處理進(jìn)程之間采用本地socket方式通訊,超時時間53秒。輸入管理進(jìn)程與業(yè)務(wù)處理進(jìn)程之間采用本地socket方式通訊,超時時間56秒。前臺系統(tǒng)與輸入管理進(jìn)程之間采用tcp通訊,超時時間60秒。任何進(jìn)程產(chǎn)生超時都將向上一級系統(tǒng)(進(jìn)程)返回內(nèi)部返回碼e00只有前臺系統(tǒng)與業(yè)務(wù)處理進(jìn)程能夠發(fā)起沖正。業(yè)務(wù)處理進(jìn)程在遇到接收應(yīng)答超時、收到內(nèi)部返回碼e00時,將直接發(fā)起沖正,并返回內(nèi)部返回碼e00;當(dāng)前臺系統(tǒng)遇到接收應(yīng)答超時

5、或交易成功但后續(xù)操作失?。ㄈ绱蛴『炠弳问。r,將發(fā)起沖正交易,前臺系統(tǒng)收到e00不需再發(fā)起沖正。1.5 接口定義前臺接口定義收銀端接口報文由【報文長度報文頭報文體mac】的結(jié)構(gòu)構(gòu)成?!緢笪拈L度】為兩個字節(jié)的網(wǎng)絡(luò)字節(jié)序整數(shù),具體定義如下:#define u_int16 unsigned short u_int16 ipacklen;【報文頭】采用結(jié)構(gòu)體定義的定長格式,報文頭為每個交易所必須的公共部分,具體定義如下:typedef struct tagtums_client_pkgheadchar saversion2 + 1;/主版本號1byte副版本號1byte,如10char satran

6、scode4 + 1;/交易代碼(功能號)char sacrypt2 + 1;/加密方式1byte,0不加密,1des,23des,其它保留char saoperno20 + 1;/收銀員編號char samchtcode20 + 1;/商戶編號(系統(tǒng)內(nèi)部編號,可以與銀聯(lián)的商戶代碼一致,也可自行分配,通過商戶編號與收銀臺號對應(yīng)一個機(jī)臺,并在服務(wù)器端根據(jù)不同的應(yīng)用映射真實的商戶代碼與終端號,如銀聯(lián)應(yīng)用、儲值卡應(yīng)用等)char sacounterno10 + 1;/收銀臺號(前臺統(tǒng)一設(shè)置收銀臺號,由后臺自動映射終端編號)char saserial20 + 1;/標(biāo)識該筆交易的序列號,應(yīng)答報文應(yīng)原樣

7、返回,格式” yyyymmddhhmiss”,序列號+商戶編號+終端號唯一標(biāo)識一筆交易,后臺應(yīng)做校驗,目前暫定14位,后補0char sarecnum4 + 1;/記錄條數(shù)(報文體中含有多條信息時適用,一般報文填0001)char sanextpkg1 + 1;/是否有后續(xù)包(0沒有,1有)char saretno3 + 1;/內(nèi)部返回碼(返回提示信息saretmsg由于是可變長字段,一般定義在報文體的第一個字段中,不得超過250個字節(jié))char satrack2len2 + 1;/二磁道信息長度,壓縮之前的長度char satrack224 + 1;/二磁道信息char itrack33 +

8、 1;/三磁道長度char satrack364 + 1;/三磁道信息 tums_client_pkghead;報文頭共計176個字節(jié)【報文體】報文體采用豎線分割的變長結(jié)構(gòu)(報文體中不得出現(xiàn)不可見字符,否則一律使用bcd碼展開;最后一個字段之后沒有分隔符),具體定義如下報文體的最大長度為1280個字節(jié),不得越界。紅色部分字段為必填項?!緈ac】視交易而定,不需要mac的交易,該字段為8個字節(jié)的/0銀聯(lián)posp應(yīng)用類交易(功能號頭兩位01)取工作密鑰(向服務(wù)器取工作密鑰)ums_cup_getworkkey(0101)上送字段名字段長度描述ums_cup_getworkkey(0101)返回字段

9、名字段長度描述saretmsg/返回內(nèi)容描述,可為空sapinkey16samackey16消費(需要mac)ums_cup_pca(0102)上送字段名字段長度描述saamt/單位元,小數(shù)點二位saencpin16sakey32前臺保存的pinkey+mackeysaenflag10返回中文,1返回英文,涉及到的返回字段:samchtname 、sabankname、saadvsaannid20099循環(huán)取數(shù),標(biāo)識當(dāng)前公告的版本,如版本不一致,則下發(fā)新的公告內(nèi)容,如不需要公告,則傳-1saexflow20收銀系統(tǒng)的小票流水號(二次開發(fā)時使用,記入流水庫,與收銀系統(tǒng)對帳匹配時使用)返回內(nèi)部錯誤

10、時(返回碼e開頭):ums_cup_pca(0102)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空saannid2最新公告版本saannounce公告內(nèi)容(不得含有|)返回碼a開頭:ums_cup_pca(0102)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空saannid2最新公告版本saannounce公告內(nèi)容(不得含有|)sacupretno2銀聯(lián)posp應(yīng)用的返回碼sacupretmsg/應(yīng)用返回碼描述sacuprethelp/應(yīng)用返回錯誤時的提示操作samchtcode15銀聯(lián)posp應(yīng)用的具體商戶代碼samchtname/商戶名稱satermno8銀

11、聯(lián)posp應(yīng)用的終端號sabankcode8發(fā)卡銀行編號sabankname/發(fā)卡銀行名稱sacardno/卡號sarefseq12中心流水sadate14交易日期yyyymmddhhmisssaexdate4卡有效日期sabatchno6批次號saseqno6流水號saauthno6授權(quán)號saamt/交易金額,元為單位,小數(shù)點2位saadv/簽購單上打印的額外信息,如為空則不打?。ㄆ┤缰歇勑畔⒌鹊龋?;換行通過分割sasdbankcode8收單銀行代碼sasdbankname/收單銀行名稱iappid/1-銀聯(lián)卡應(yīng)用,2-銀商儲值卡,3-瑞富通卡注:返回e07,則表示前臺存放密鑰過期,新密鑰通

12、過報文pca應(yīng)答帶回,存放在報文體saretmsg中(32個字節(jié),pinkeymackey)中,前臺應(yīng)用應(yīng)更新保存密鑰,同時重新驅(qū)動密碼鍵盤,提示用戶再次輸入密碼并再次上送。如連續(xù)兩次上送。返回e00,表示交易超時,但前臺應(yīng)用不需發(fā)起沖正;只有在交易無應(yīng)答或后續(xù)操作失敗的情況下,可發(fā)起沖正。內(nèi)部返回碼e開頭,則表示系統(tǒng)內(nèi)部錯誤,無需判斷應(yīng)用返回碼;a開頭,則系統(tǒng)操作無誤,需判斷應(yīng)用返回碼。內(nèi)部返回碼a01,應(yīng)用返回碼00,則表示已中獎,應(yīng)提示收銀員并將中獎信息saadv打印在簽購單上。消費沖正(需要mac)ums_cup_ pcc(0152)上送字段名字段長度描述saorserial14原交易

13、序列號saamt/單位元,小數(shù)點二位,用于校驗ums_cup_ pcc(0152)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,內(nèi)部返回碼e開頭時有效,可為空注:沖正通過“序列號+商戶編號+終端號”唯一標(biāo)識原交易,其中商戶編號及終端編號在報文頭中,序列號在報文體中所有銀聯(lián)沖正應(yīng)答結(jié)構(gòu)都采用統(tǒng)一格式撤銷(需要mac)ums_cup_pra(0103)上送字段名字段長度描述saamt/單位元,小數(shù)點二位sabatchno6原批次號saseqno6原流水號saencpin16密碼密文sakey32前臺保存的pinkey+mackeysaenflag1同消費報文saannid2最新公告版本sa

14、exflow20收銀系統(tǒng)的小票流水號(二次開發(fā)時使用,記入流水庫,與收銀系統(tǒng)對帳匹配時使用)ums_cup_pra(0103)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空saannid2最新公告版本saannounce公告內(nèi)容(不得含有|)sacupretno2銀聯(lián)posp應(yīng)用的返回碼sacupretmsg/應(yīng)用返回碼描述sacuprethelp/應(yīng)用返回錯誤時的提示操作samchtcode15銀聯(lián)posp應(yīng)用的具體商戶代碼samchtname/商戶名稱satermno8銀聯(lián)posp應(yīng)用的終端號sabankcode8發(fā)卡銀行編號sabankname/發(fā)卡銀行名稱sacardno

15、/卡號sarefseq12中心流水sedate14交易日期yyyymmddhhmisssaexdate4卡有效日期sabatchno6批次號saseqno6流水號saauthno6授權(quán)號saamt/交易金額,元為單位,小數(shù)點2位saadv/簽購單上打印的額外信息,如為空則不打?。ㄆ┤缰歇勑畔⒌鹊龋﹕asdbankcode8收單銀行代碼sasdbankname/收單銀行名稱iappid/1-銀聯(lián)卡應(yīng)用,2-銀商儲值卡, 3-瑞富通卡注:若服務(wù)器未找到匹配的原交易,則返回e08同消費報文處理撤銷沖正(需要mac)ums_cup_prc(0153)上送字段名字段長度描述saorserial14原交易

16、序列號saamt/單位元,小數(shù)點二位,用于校驗ums_cup_prc(0153)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,內(nèi)部返回碼e開頭時有效,可為空注:沖正通過“序列號+商戶編號+終端號”唯一標(biāo)識原交易,其中商戶編號及終端編號在報文頭中,序列號在報文體中查詢余額(需要mac)ums_cup_inq(0104)上送字段名字段長度描述saencpin16密碼密文sakey32前臺保存的pinkey+mackeysaannid2最新公告版本ums_cup_inq(0104)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空saannid2最新公告版本saannounce公告

17、內(nèi)容(不得含有|)sacupretno2銀聯(lián)posp應(yīng)用的返回碼sacupretmsg/應(yīng)用返回碼描述sacuprethelp/應(yīng)用返回錯誤時的提示操作saamt/余額,元為單位,小數(shù)點2位查詢交易明細(xì)(不需要mac)ums_cup_schtxn(0120)上送字段名字段長度描述saamt/單位元,小數(shù)點二位sabatchno6原批次號saseqno6原流水號查詢失敗返回:ums_cup_schtxn(0120)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空查詢成功返回(記錄條數(shù)在報文頭中指定,報文最大長度控制明細(xì)筆數(shù)):ums_cup_schtxn(0120)返回字段名字段長度

18、描述lst1lst2lstn每筆明細(xì)內(nèi)容(通過分割)(148個字節(jié)一筆)samchtcode15銀聯(lián)posp應(yīng)用的具體商戶代碼satermno8銀聯(lián)posp應(yīng)用的終端號sabankcode8發(fā)卡銀行編號sabankname8發(fā)卡銀行名稱sacardno20(max)卡號sarefseq12中心流水sadate14交易日期yyyymmddhhmisssabatchno6批次號saseqno6流水號saauthno6授權(quán)號saamt13(max)交易金額,元為單位,小數(shù)點2位saoperno20(max)操作員編號satxnname10(max)交易類型重打印查詢(不需要mac)ums_cup_r

19、eprint(0121)上送字段名字段長度描述sabatchno6原批次號,如果為空,則系統(tǒng)自動查找當(dāng)日上一筆交易返回saseqno6原流水號saenflag1同消費報文查詢失敗返回:ums_cup_reprint(0121)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空注:未找到原交易,返回e08。查詢成功返回(與消費交易格式一致):ums_cup_reprint(0121)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空sacupretno2銀聯(lián)posp應(yīng)用的返回碼sacupretmsg/應(yīng)用返回碼描述sacuprethelp/應(yīng)用返回錯誤時的提示操作samcht

20、code15銀聯(lián)posp應(yīng)用的具體商戶代碼samchtname/商戶名稱satermno8銀聯(lián)posp應(yīng)用的終端號sabankcode8發(fā)卡銀行編號sabankname/發(fā)卡銀行名稱sacardno/卡號sarefseq12中心流水sadate14交易日期yyyymmddhhmisssaexdate4卡有效日期sabatchno6批次號saseqno6流水號saauthno6授權(quán)號saamt/交易金額,元為單位,小數(shù)點2位saadv/簽購單上打印的額外信息,如為空則不打?。ㄆ┤缰歇勑畔⒌鹊龋﹕atrnname8交易類型sasdbankcode8收單銀行代碼sasdbankname/收單銀行名稱

21、iappid/1-銀聯(lián)卡應(yīng)用,2-銀商儲值卡, 3-瑞富通卡終端換批服務(wù)器收到換批交易后,依次向中心發(fā)送結(jié)算、簽退以及簽到交易(如某一步交易無法成功,則直接返回錯誤步驟及原因,不需繼續(xù)往下做),并將結(jié)果返回前臺。前臺在做完換批交易后,應(yīng)聯(lián)機(jī)做簽到交易,更新密鑰。ums_cup_chgbatch(0105)上送字段名字段長度描述ums_cup_chgbatch(0105)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空管理類交易(功能號頭兩位00)檢測密碼鍵盤密鑰有效性ums_manage_chkpinpad(0001)上送字段名字段長度描述saencpin/加密的密碼密文ums_m

22、anage_chkpinpad(0001)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空注:交易約定輸入的密碼明文為123456,pinkey密文:1234567890abcdef,服務(wù)器端應(yīng)預(yù)先保留加密正確的密文結(jié)果(checkvalue),以便檢測時核對;返回檢測結(jié)果根據(jù)內(nèi)部返回碼判定,a00檢測通過,e02檢測不通過,返回其它則為其它錯誤,無法認(rèn)定檢測結(jié)果。檢測網(wǎng)絡(luò)狀態(tài)ums_manage_chknet(0002)上送字段名字段長度描述ums_manage_chknet(0002)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空istep/檢測步驟,詳見注解注:

23、檢測網(wǎng)絡(luò)分為幾個步驟,返回istep必須有返回值,一項未檢測,istep=0;istep小于最后一項的步驟,說明中間存在問題,未全部檢測通過istep=1:收銀臺到服務(wù)器網(wǎng)絡(luò)通暢,后續(xù)步驟未檢測istep=2:正在檢測服務(wù)器到路由器網(wǎng)絡(luò),成功返回a00,失敗返回e02istep=3:正在檢測服務(wù)器到銀聯(lián)網(wǎng)絡(luò)(發(fā)模擬報文檢測),收到銀聯(lián)應(yīng)答,則返回a00,否則返回e02檢測服務(wù)器狀態(tài)ums_manage_chksrv(0003)上送字段名字段長度描述ums_manage_chksrv(0003)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空istep/檢測步驟,詳見注解注:檢測網(wǎng)絡(luò)

24、分為幾個步驟,返回istep必須有返回值,一項未檢測,istep=0;istep小于最后一項的步驟,說明中間存在問題,未全部檢測通過istep=1:檢測數(shù)據(jù)庫是否正常。后續(xù)步驟未檢測。登陸成功,返回a00,無法登陸返回e04istep=2:檢測加密進(jìn)程狀態(tài)。成功返回a00,失敗返回e03istep=3:檢測加密機(jī)主密鑰。以123456為pin明文,1234567890abcdef為pinkey密文,調(diào)用加密指令加密pin,與預(yù)先設(shè)置的checkvalue進(jìn)行比對,如全部檢測通過,返回a00,否則返回e03,saretmsg應(yīng)包含檢測哪組主密鑰未通過的相關(guān)信息。istep=4:檢測業(yè)務(wù)處理進(jìn)程狀

25、態(tài)。通過發(fā)檢測報文測試,收到應(yīng)答返回a00,否則返回e02。收銀機(jī)公告ums_manage_announce(0004)上送字段名字段長度描述idx/公告索引(可設(shè)置多個公告信息)ums_manage_announce(0004)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空saannid2最新公告版本saannounce公告內(nèi)容(不得含有|)注:公告內(nèi)容可設(shè)置多項,具體由監(jiān)控管理平臺提供設(shè)置界面,公告應(yīng)能設(shè)置有效期、公告范圍(即收銀臺號范圍),后臺根據(jù)合法性校驗,判別是否發(fā)送公告內(nèi)容,需要發(fā)送返回a00,無公告信息最新saannid以及空的saannounce字段,否則返回其它

26、錯誤。身份認(rèn)證ums_manage_chkoper(0005)上送字段名字段長度描述sapass/收銀員登陸密碼(收銀員號在報文頭)itype/驗證類別ums_manage_chkoper(0005)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空saopername20(max)操作員姓名注:itype表示驗證類別0收銀員登陸認(rèn)證1收銀主管授權(quán)認(rèn)證某些特殊的交易需要收銀主管認(rèn)證,譬如撤銷時的主管認(rèn)證等等。2系統(tǒng)管理員認(rèn)證一些管理類功能的授權(quán)認(rèn)證,譬如設(shè)置系統(tǒng)參數(shù)等等。認(rèn)證通過,返回a00,否則返回e06普通收銀員登陸,后臺可配置是否校驗密碼,一個終端同時只能由一個收銀員登陸,不能

27、覆蓋,只能由收銀程序發(fā)送收銀換班交易,統(tǒng)計信息清零后才能覆蓋。系統(tǒng)初始化在收銀程序啟動時調(diào)用,用于與后臺同步終端信息,包括:1、 檢查終端參數(shù)設(shè)置有效性(如商戶代碼、終端號等)2、 檢查該終端是否已有收銀員登陸,若有則取回收銀員信息,若無,則提示收銀員登陸3、 取回公告信息ums_manage_initsys(0006)上送字段名字段長度描述saenflag1同消費報文注:報文頭中saoperid為空ums_manage_initsys(0006)返回字段名字段長度描述saretmsg255(max)返回內(nèi)容描述,可為空saoperid20(max)收銀員號,若為空,前臺提示收銀員登陸,并做登

28、陸交易saopername20(max)收銀員姓名saannid2最新公告版本saannounce256(max)公告內(nèi)容(不得含有|)safunc32開通功能sapinkey16最新的密鑰samackey16最新的密鑰samchtname根據(jù)saenflag返回中文或英文商戶名稱開通功能字段說明:每一位代表一項功能是否開通,1開通,其它屏蔽具體功能位定義如下(以delphi格式定義,后期可擴(kuò)充): topenfuncdef = (ofdreserved, ofdpca, ofdpra, ofdschtxn, ofdreprint, ofdmanage, ofdauthgroup, ofdin

29、q, ofdchongzhi, ofdmaxfield);收銀員換班(不需要mac)ums_manage_chgoper(0007)上送字段名字段長度描述sapass/收銀員登陸密碼(收銀員號在報文頭),可根據(jù)后臺配置是否驗證密碼失敗返回:ums_manage_chgoper(0007)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空注:換班由商戶號終端號收銀員號確定(規(guī)定一個商戶號終端號下面只能由一個收銀員號上機(jī),除非該收銀員下機(jī)后,其它收銀員才能繼續(xù)上機(jī)操作)未登記收銀員上機(jī)記錄(一般均需先登陸),返回e09。成功返回:ums_manage_chgoper(0007)返回字段名

30、字段長度描述saretmsg/返回內(nèi)容描述,可為空sasum直接打印的要素salist1直接打印的要素salist2直接打印的要素直接打印的要素salistn直接打印的要素收銀員換班1(不需要mac)ums_manage_chgoper1(0010)上送字段名字段長度描述sapass/收銀員登陸密碼(收銀員號在報文頭),可根據(jù)后臺配置是否驗證密碼失敗返回:ums_manage_chgoper1(0007)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空注:換班由商戶號終端號收銀員號確定(規(guī)定一個商戶號終端號下面只能由一個收銀員號上機(jī),除非該收銀員下機(jī)后,其它收銀員才能繼續(xù)上機(jī)操作)

31、未登記收銀員上機(jī)記錄(一般均需先登陸),返回e09。成功返回:ums_manage_chgoper1(0010)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空icnt后續(xù)list明細(xì)的數(shù)量salist1應(yīng)用名稱交易名稱筆數(shù)金額,為0x1csalist2同上同上salistn同上收銀員改密ums_manage_chgpass(0008)上送字段名字段長度描述saoldpass/舊密碼(需要后臺校驗,看后臺是否配置了校驗密碼)sanewpass/收銀員新密碼(收銀員號在報文頭)ums_manage_chgpass(0008)返回字段名字段長度描述saretmsg/返回內(nèi)容描述,可為空

32、emv-pos應(yīng)用類交易(功能號頭兩位03,如外卡業(yè)務(wù))透明轉(zhuǎn)發(fā)報文(需要mac)ums_emv_trans(0301)上送字段名字段長度描述sapkg/不含頭兩位的長度字段,長度由包頭確定返回a00時返回:ums_emv_trans(0301)返回字段名字段長度描述sapkg如不為a00,則為空注:saretmsg返回錯誤信息復(fù)用返回包頭結(jié)構(gòu)中的satrack3字段當(dāng)返回包文頭結(jié)構(gòu)中saretno(內(nèi)部返回碼)字段為exx時表示此交易需要pos終端發(fā)起沖正交易。pos交易上送服務(wù)器(功能號頭兩位05)pos交易上送服務(wù)器(需要mac)ums_emv_trans(0501)上送字段名字段長度描

33、述saretcode2posp交易處理返回信息,如交易成功為“00”,密碼錯誤“55”等sabankcode8發(fā)卡銀行代碼saacqcode8結(jié)算銀行代碼sacardno19銀行卡卡號sahostser12posp中心主機(jī)流水號satrtime14pos交易時間,其格式為yyyymmddhhmmsssaexpire4卡有效期sapatchno6批次號sapserial6流水號saauthno6授權(quán)號saamt12交易金額,小數(shù)點satrcode4交易類型,上送mis請求交易類型,與emv-pos上送保持一致satrstate2交易方式,01-正常交易, 02-撥號交易,03脫機(jī)交易saoldp

34、serial6原流水號saoldauthno6原授權(quán)號saacqdate4清算日期,格式mmddsaauthdate4授權(quán)日期,格式mmddsacardtype6卡類型,如銀聯(lián)卡為cupsaneedrev200-無需沖正,01-需沖正交易sasrvretcode3服務(wù)器返回代碼sasrvretmsg/服務(wù)器返回錯誤信息返回:ums_emv_trans(0501)返回字段名字段長度描述sacupretmsg+sacuprethelp/返回a00時有效,放在一個字段內(nèi),格式:“【sacupretmsg】【sacuprethelp】”,如上送時saretcode為00,則該字段為空注:saretms

35、g返回錯誤信息復(fù)用返回包頭結(jié)構(gòu)中的satrack3字段pos交易上送服務(wù)器(需要mac)ums_emv_resendtrans(0502)上送字段名字段長度描述saretcode2posp交易處理返回信息,如交易成功為“00”,密碼錯誤“55”等sabankcode8發(fā)卡銀行代碼saacqcode8結(jié)算銀行代碼sacardno19銀行卡卡號sahostser12posp中心主機(jī)流水號satrtime14pos交易時間,其格式為yyyymmddhhmmsssaexpire4卡有效期sapatchno6批次號sapserial6流水號saauthno6授權(quán)號saamt12交易金額,小數(shù)點satrc

36、ode4交易類型,上送mis請求交易類型,與emv-pos上送保持一致satrstate2交易方式,01-正常交易, 02-撥號交易,03脫機(jī)交易saoldpserial6原流水號saoldauthno6原授權(quán)號saacqdate4清算日期,格式mmddsaauthdate4授權(quán)日期,格式mmddsacardtype6卡類型,如銀聯(lián)卡為cupsaneedrev200-無需沖正,01-需沖正交易sasrvretcode3服務(wù)器返回代碼sasrvretmsg/服務(wù)器返回錯誤信息返回:ums_emv_resendtrans(0502)返回字段名字段長度描述sacupretmsg+sacuprethe

37、lp/返回a00時有效,放在一個字段內(nèi),格式:“【sacupretmsg】【sacuprethelp】”,如上送時saretcode為00,則該字段為空注:saretmsg返回錯誤信息復(fù)用返回包頭結(jié)構(gòu)中的satrack3字段公共事業(yè)繳費交易(功能號頭兩位06,如充值通等)公共事業(yè)繳費(需要mac)ums_emv_trans(0601)上送字段名字段長度描述satrcode2交易代碼10簽到交易 11繳費交易 12交易查詢13交易統(tǒng)計14定制交易sapayway1支付方式1-銀行卡交易,0-現(xiàn)金,2-無磁(手輸卡號)sabankcard20銀行卡號saamt13交易金額,帶小數(shù)點sapin16銀

38、行卡密碼savender2服務(wù)提供商,詳見附表sattype2業(yè)務(wù)類型,詳見附表sacustid30服務(wù)提供商的客戶標(biāo)識號satrser30合作方業(yè)務(wù)流水saf1128備用字段返回代碼為e開頭時:ums_emv_trans(0601)返回字段名字段長度描述saretmsg64系統(tǒng)返回錯誤信息返回代碼為a開頭時:ums_emv_trans(0601)返回字段名字段長度描述saretmsg64系統(tǒng)返回錯誤信息saretcode2中心返回碼saserial10終端流水samchtid15中心商戶號satermid8中心終端號sabankcard20銀行卡號sapbatch6批次號sapserial6

39、流水號saauthno6授權(quán)號sacserial12中心流水號saacqdate4清算日期saexpiry4有效期sainscode8發(fā)卡行saacqcode8收單行satser20業(yè)務(wù)受理流水 sapinfo1是否帶打印信息,0-無,0則為打印小票聯(lián)數(shù)saprtinfo640繳費等交易為打印信息,如為簽到則為終端密鑰匙,前40位32位pinkey+8位checkval,后40為32位mackey+8位checkval,均為bcd展開字符應(yīng)該是16個字節(jié)注:查詢交易的時候satrser如果不為空則表示為原交易終端流水,如果為空則讀取saf1原交易外部流水號(原交易包頭的流水),然后由后臺系統(tǒng)根

40、據(jù)此值取的原交易終端流水。附:算法說明磁道信息壓縮算法普通磁道信息在傳輸過程中應(yīng)根據(jù)銀聯(lián)posp規(guī)范進(jìn)行bcd碼的轉(zhuǎn)換,即將ascii編碼的磁道信息壓縮為bcd碼,其中=號需事先轉(zhuǎn)換為d字符,原則上后臺不保存磁道信息,如有需要,后臺數(shù)據(jù)庫只允許保存二磁道信息的前12個字節(jié),作為交易索引mac算法【報文頭】+【報文體】部分按每8位異或,最后不足部分使用0填充,結(jié)果通過bcd算法展開,取前8個字節(jié)作為mac。內(nèi)部接口定義兼容接口定義1.6 數(shù)據(jù)庫定義1.7 數(shù)據(jù)字典定義內(nèi)部返回碼返回碼含義a00交易成功a01交易成功,有中獎信息e00通訊超時e01非法交易類型e02內(nèi)部檢測不通過e03加密機(jī)操作失

41、敗e04數(shù)據(jù)庫操作失敗e05無公告信息e06身份認(rèn)證失敗e07終端密鑰與主機(jī)存放密鑰不符e08服務(wù)器上未找到對應(yīng)原交易e09未登記收銀員上機(jī)記錄e10后臺交易記錄已成功(前臺流水一致),應(yīng)提示到后臺查詢并重打印該筆交易e99pos交易包轉(zhuǎn)發(fā)成功,系統(tǒng)內(nèi)部處理失敗,需沖正外部返回碼銀聯(lián)返回碼定義:其它返回碼定義:其它1.8 命名規(guī)范二、 客戶端系統(tǒng)設(shè)計2.1 系統(tǒng)選型操作系統(tǒng):windows(標(biāo)準(zhǔn)版)數(shù)據(jù)庫:無2.2 系統(tǒng)模塊劃分客戶端由單一主應(yīng)用進(jìn)程(umsclient.exe)構(gòu)成。主程序分為底層硬件驅(qū)動層、應(yīng)用邏輯層及主應(yīng)用程序三層。底層硬件驅(qū)動層負(fù)責(zé)操作收銀機(jī)外設(shè),根據(jù)收銀機(jī)的不同提供不

42、同的外設(shè)驅(qū)動庫;應(yīng)用邏輯層負(fù)責(zé)具體的應(yīng)用邏輯,包括操作硬件驅(qū)動、采集交易必須的輸入內(nèi)容、組織通訊邏輯報文、與后臺服務(wù)端通訊等功能,應(yīng)用邏輯根據(jù)不同的應(yīng)用封裝,以便于日后升級維護(hù);主應(yīng)用程序負(fù)責(zé)組織應(yīng)用程序的框架、初始化應(yīng)用環(huán)境等功能。2.3 模塊詳細(xì)設(shè)計硬件驅(qū)動層設(shè)計所有硬件驅(qū)動庫必須包含以下公共接口: 獲取驅(qū)動庫信息接口procedure umspub_vgetdrvinfo(var itype: integer; sadesp: pchar);itype:輸出,驅(qū)動庫類型,0密碼鍵盤、1刷卡器、2打印機(jī)sadesp:輸出,驅(qū)動中文描述,用于快速判別驅(qū)動功能a)密碼鍵盤驅(qū)動密碼鍵盤驅(qū)動必須實

43、現(xiàn)以下接口: 初始化動態(tài)庫環(huán)境外部應(yīng)用在使用本驅(qū)動時必須首先調(diào)用,否則其它接口將直接報錯 sint umspinpad_iinit(char *sadevname, int iboudrate, int imin, int imax)參數(shù):sadevname:密碼鍵盤接口,如com1iboudrate:波特率,如1200、9600imin:輸入密碼的最小長度,0時不設(shè)置imax:輸入密碼的最大長度,1時不設(shè)置返回:0成功,0失敗 設(shè)置工作密鑰(此函數(shù)在隨即改變工作密鑰時使用)該函數(shù)在umspinpad_ireadpin中已聯(lián)動調(diào)用,上層應(yīng)用可根據(jù)情況選擇是否調(diào)用int umspinpad_is

44、etworkkey(char *sapinkey, char *samackey)參數(shù): sapinkey:新的pin工作密鑰密文(已使用主密鑰加密,null則不修改)samackey:新的mac工作密鑰密文(已使用主密鑰加密,null則不修改)返回:0成功,0失敗 使密碼鍵盤提示輸入密碼、顯示金額并發(fā)出語音,使用ansi9.8算法進(jìn)行運算 int umspinpad_ireadpin(char *saencpin, char *sapinkey, char *sacardno, int itimeout, double damt)參數(shù):saencpin:函數(shù)返回的ansi運算出的密文sapi

45、nkey:pin工作密鑰密文(為null則不修改工作密鑰而使用以前的)sacardno:參加ansi9.8運算的卡號(如果為null則不使用ansi9.8算法)itimeout:超時時間damt:在顯示屏上顯示的金額,如0,則不顯示返回值:0 成功,非0 失敗 下傳數(shù)據(jù)使用ecb算法計算mac(數(shù)據(jù)長度不得大于256字節(jié)) int umspinpad_igenmac(char *samackey, int idatalen, char *sadatabuf, int itimeout, char *samacbuf)參數(shù):mackeytmp:工作密鑰的密文idatalen:數(shù)據(jù)長度(不超過25

46、6字節(jié),超過按前256個字節(jié)計算mac)sadatabuf:數(shù)據(jù)itimeout:超時時間samacbuf:返回mac數(shù)據(jù)(8字節(jié))返回值:0成功,非0失敗b) 刷卡器驅(qū)動刷卡器驅(qū)動必須實現(xiàn)以下接口: 獲取磁道信息通用接口function umstrack_igettrack(sadevname: pchar; iboudrate, imaxwaittime, icfgtracknum: integer;var ilen2, ilen3: integer; satrack2, satrack3: pchar): integer; stdcall;imaxwaittime:輸入,最大等待刷卡時間

47、(單位秒),一般為18icfgtracknum:輸入,刷卡器回車數(shù)目,一般為1或2ilen2、ilen3:輸出,2、3磁道長度satrack2、satrack3:輸出,2、3磁道信息c) 打印機(jī)驅(qū)動 初始化驅(qū)動(一些驅(qū)動需要打開端口及其它初始化操作)上層應(yīng)用調(diào)用打印驅(qū)動必須首先調(diào)用初始化procedure umsprn_vinitprn(icom: integer);stdcall;icom:端口號,如com1(或prt1),則icom=1, 關(guān)閉驅(qū)動(一些驅(qū)動需要關(guān)閉端口,打印結(jié)束之后調(diào)用)上層應(yīng)用調(diào)用打印驅(qū)動后,必須調(diào)用procedure umsprn_vcloseprn;stdcall; 打印一行信息procedure umsprn_vprintline(const prncom: integer; info: pchar);stdcall;prncom:端口地址(寫端口模式適用),如888,1000等

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論