一、工作內(nèi)容:串口的硬件通訊協(xié)議打包成dll接口
3.1請求包
第三方設(shè)備發(fā)起->正元POS,以下簡稱(E->P)
起始符 包序號(hào) 命令碼 數(shù)據(jù)域長度 數(shù)據(jù)域 校驗(yàn) 結(jié)束符
0x02
(1字節(jié)) 0x0000~0xFFFF
(2字節(jié))
(1字節(jié))
(1字節(jié))
(N字節(jié)) CRC16
(2字節(jié)) 0x03
(1字節(jié))
注釋:
?起始符:包開始的標(biāo)志位,始終為0x02
?包序號(hào):也稱幀序號(hào),從0開始,每發(fā)送一個(gè)數(shù)據(jù)包就必須加 1,加到 0xFFFF 后,再循環(huán)到 0。正元POS 返回包的序號(hào)與正元POS 接收到的命令包的序號(hào)保持一致。幀序號(hào)由第三方設(shè)備方來維護(hù)。
?命令碼:每一個(gè)命令唯一對應(yīng)一個(gè)命令碼,詳見下文說明。
?數(shù)據(jù)域長度:用來表示包中數(shù)據(jù)域的長度,該值可為0,表示沒有數(shù)據(jù)域。
?數(shù)據(jù)域:此字段的含義按各命令解析,有的命令可能沒有此字段。
?校驗(yàn):這里采用CRC16 校驗(yàn),為起始符之后的包序號(hào)(包括包序號(hào))到校驗(yàn)位之前所有數(shù)據(jù)的兩字節(jié)CRC16值。
?結(jié)束符:也稱尾標(biāo),包結(jié)束的標(biāo)志位,始終為0x03
?正元POS機(jī),如果無任何應(yīng)答,超時(shí)時(shí)間為1秒。如果第三方設(shè)備方發(fā)送三次,均無應(yīng)答,可視為超時(shí)。必須重新登錄簽到。
3.2響應(yīng)包
正元POS->第三方設(shè)備發(fā)起,以下簡稱(P->E)
起始符 包序號(hào) 命令碼 數(shù)據(jù)域長度 返回碼 數(shù)據(jù)域 校驗(yàn) 結(jié)束符
0x02
(1字節(jié)) 0x0000~0xFFFF
(2字節(jié))
(1字節(jié))
(1字節(jié))
(1字節(jié))
(N字節(jié)) CRC16
(2字節(jié)) 0x03
(1字節(jié))
注釋:(對接協(xié)議前,請仔細(xì)閱讀下面注釋)
?起始符:包開始的標(biāo)志位,始終為0x02
?包序號(hào):正元POS 返回包的序號(hào)與正元POS 接收到的命令包的序號(hào)保持一致。
?命令碼:與接收到的命令碼保持一致。
?數(shù)據(jù)域長度:用來表示包中數(shù)據(jù)域的長度,包含返回碼的長度。
?返回碼:不同命令有不同的返回碼,含義由各命令解析。
?數(shù)據(jù)域:此字段的含義按各命令解析,有的命令可能沒有此字段。
?校驗(yàn):這里采用CRC16 校驗(yàn),為起始符之后的包序號(hào)(包括包序號(hào))到校驗(yàn)位之前所有數(shù)據(jù)的兩字節(jié)CRC16值。
?結(jié)束符:也稱尾標(biāo),包結(jié)束的標(biāo)志位,始終為0x03
協(xié)議中:包序號(hào),校驗(yàn)位,以及金額,賬號(hào)等用數(shù)字表示的字段一律采用低位在前,高位在后的原則
四、通信報(bào)文
4.1報(bào)文列表
命令 命令碼 描述
設(shè)備簽到請求 0xA0 取得正元POS機(jī)固件版本
發(fā)起身份查詢 0xB1 查詢賬戶信息
查詢身份結(jié)果 0xB2 查詢賬戶信息
取消身份查詢 0xB3 取消當(dāng)前的查詢
發(fā)起支付請求 0xC1 根據(jù)交易金額,請求正元POS機(jī)交易
查詢支付結(jié)果 0xC2 還在獲取響應(yīng)數(shù)據(jù):請求支付返回的結(jié)果數(shù)據(jù)
撤銷支付請求 0xC3 取消當(dāng)前已發(fā)出請求支付的交易
發(fā)起退款請求 0xC4 撤銷最后一筆已成功支付的交易
查詢退款結(jié)果 0xC5 還在獲取響應(yīng)數(shù)據(jù):請求支付返回的結(jié)果數(shù)據(jù)
報(bào)文校驗(yàn)錯(cuò)誤 0xD1 用于報(bào)文格式校驗(yàn)時(shí),沒有收到命令碼時(shí)返回
4.2報(bào)文詳細(xì)
4.2.1設(shè)備簽到
第三方設(shè)備必須向正元POS機(jī)簽到,才能進(jìn)行其他的操作。取得正元POS機(jī)固件版本信息,避免造成版本兼容性相關(guān)事故,第三方設(shè)備也可以發(fā)送此指令,確認(rèn)第三方設(shè)備與POS之間的通訊鏈接,正元POS機(jī)收到此指令后,馬上應(yīng)答,POS機(jī)重啟之后或者第三方設(shè)備收到正元POS機(jī)返回0x93的返回碼,第三方設(shè)備需要重新向正元POS機(jī)發(fā)送簽到命令。