ISO 8583報文

    ISO 8583包(簡稱8583報文),金融交易卡原始電文-交易電文規範,是一個由國際標準化組織爲其定義了消息格式和交易流程,以便於不同的系統能夠交換交易請求和響應信息。8583報文交融交易信息數據包由消息類型、位圖和按位圖描述的順序排列的數據系列組成。

(1).消息類型是一個4位數字的數字型字符,用來描述每一個交易信息的類別和功能,其中前兩位數組標明信息類別,如授權信息、金融交易信息、管理信息,等等。在一個金融系統中,信息類型的定義應該是唯一的,無二義性的。網間交易具有不同的信息類型定義時應在交換報文的發送前和接收後完成類型轉換處理。

(2).位圖由64位或128位二進制位構成,每一位用1或0來表示與該位相對應的數據元存在或不存在。位圖的第一位位1時,表示64位圖後緊接着一個擴展的64位位圖。

(3).數據元指交易中一個數據項的實際內容,數據元在數據包中是否存在及存放位置由位圖中的相應位確定、一些數據元有固定的長度,一些數據元爲變長。

    8583報文=報文長度(2個字節)+TPDU+報文頭+報文體。

TPDU說明:長度爲10個字節,壓縮時用BCD碼錶示爲5個字節長度的數值。
報文頭說明:總長度爲12字節,壓縮時用BCD碼錶示爲6個字節長度的數值。

報文體說明:是由消息類型+位圖+數據元組成。

(網上也有比較現成的工具,只要你提供報文,就可以解析出具體報文。)

PS:位圖

    位圖,Bitmap,由64位或128位二進制位構成!例如 

    位圖:  00 20 00 00 00 C0 00 16

    轉化爲二進制:  00000000 00100000 00000000 00000000 00000000 11000000 00000000 000101100  (1位十六進制對應4位二進制)

    有效域 :  11域,41域, 42域 ,60域 ,62域 ,63域。

    所以,我們需要根據8583報文規範去查找這些數據域的描述(每一域代表什麼意思,數據域長度,數據類型等等),就可以得到具體的意思。例如,

    2域表示 主賬號,

    N..19(LLVAR),2個字節的長度值+最大19個字節的主賬號,壓縮時用BCD碼錶示的1個字節的長度值+用左靠BCD碼錶示的最大10個字節的主賬號。

下面看一個交易實例。

1.簽到請求交易,

00 5E 60 00 03 00 00 60 21 00 00 00 00 08 00 00 20 00 00 00 C0 00 16 00 00 48 35 34 37 31 39 30 34 39 38 39 38 33 32 30 31 39 33 39 39 31 37 30 32 00 12 00 00 00 00 00 30 00 32 53 65 71 75 65 6E 63 65 20 4E 6F 31 39 30 30 30 30 41 39 32 30 2D 30 38 32 30 30 32 37 33 39 35 00 03 30 30 31
報文解析

00 5E 長度

60 00 03 00 00 TPDU
60 21 00 00 00 00 報文頭
08 00 消息類型
00 20 00 00 00 C0 00 16 Bitmap
00 00 48 ----11域 受卡方系統跟蹤號
35 34 37 31 39 30 34 39 --41域 受卡機終端標識碼
38 39 38 33 32 30 31 39 33 39 39 31 37 30 32 --42域 受卡方標識碼
00 12 00 00 00 00 00 30 ---60域
00 32 53 65 71 75 65 6E 63 65 20 4E 6F 31 39 30 30 30 30 41 39 32 30 2D 30 38 32 30 30 32 37 33 39 35 --62域
00 03 30 30 31 --63域(001)
消息類型說明:一般長度都是4個字節,壓縮時用BCD碼錶示爲2個字節的長度的數值。
消息類型佔用2個字節,即 08 00 也就是"0800" 

2.簽到響應報文

00 74 60 00 00 00 03 61 31 00 00 00 00 08 10 00 38 00 00 0A C0 00 14 00 00 48 10 25 52 05 16 35 34 31 34 30 36 32 35 34 34 30 32 30 30 35 34 37 31 39 30 34 39 38 39 38 33 32 30 31 39 33 39 39 31 37 30 32 00 12 00 00 00 00 00 30 00 40 D1 C3 65 E4 00 E1 79 29 13 AF 07 CD 19 06 9A 07 D2 B9 1C C5 AE E9 84 62 B2 66 5F 24 00 00 00 00 00 00 00 00 AD C6 7D 84
報文解析

00 74 長度
60 00 00 00 03 TPDU
61 31 00 00 00 00 報文頭
08 10 消息類型
00 38 00 00 0A C0 00 14 Bitmap
00 00 48 --11域
10 25 52 --12域 受卡方所在地時間
05 16 -13域 受卡方所在地日期
35 34 31 34 30 36 32 35 34 34 30 32 --37域 檢索參考號
30 30 --39域 應答碼 (00-交易成功)
35 34 37 31 39 30 34 39 -41域
38 39 38 33 32 30 31 39 33 39 39 31 37 30 32 ---42域
00 12 00 00 00 00 00 30 --60域
00 40
D1 C3 65 E4 00 E1 79 29 13 AF 07 CD 19 06 9A 07 D2 B9 1C C5 pik
AE E9 84 62 B2 66 5F 24 00 00 00 00 00 00 00 00 AD C6 7D 84 mak
62域長度爲40位,前20個字節爲PIN的工作祕鑰的密文,後20個字節是MAC的工作祕鑰的密文。(其中,“PIN工作祕鑰”前16個字節是密文,後4個字節是checkvalue;前16個字節解出明文後,對8個數值0做雙倍長祕鑰算法,取結果的前四位與checkvalue的值比較應該是一致的;“MAC工作祕鑰”前8個字節是密文,再8個字節是二進制0,後4個字節是checkvalue;前8個字節解出明文後,對8個數值0做單倍長祕鑰算法,取結果的前4位與checkvalue的值比較應該是一致的)。
需要校驗pik和mak,請參考POS 祕鑰 這篇文章。

PS:
1. 數據類型。

POS終端與POS中心之間的交換消息中,各數據元類型如下所列:

00001—— A 字母向左靠,右部多餘部分填空格。

00002—— AN 字母和/或數字,左靠,右部多餘部分填空格。

00003—— ANS 字母、數字和/或特殊符號,左靠,右部多餘部分填空格。

00004—— AS 字母和/或特殊符號,左靠,右部多餘部分填空格。

00005—— B 二進制bit位。

00006—— DD 日。

00007—— hh 時。

00008—— LL 可變長域的長度值(二位數)。

00009—— LLL 可變長域的長度值(三位數)。

00010—— MM 月。

00011—— mm 分。

00012—— N 數值,右靠,首位有效數字前充零。若表示金額,則最右二位爲角分。

00013—— S 特殊符號。

00014—— ss 秒。

00015—— VAR 可變長域。

00016—— X 借貸符號,在數值之前,D表示借,C表示貸。

00017—— YY 年。

00018—— Z 由ISO 7811和ISO 7813制定的磁條卡第二、三磁道的數據類型。

00019—— CN BCD壓縮編碼數值。

對可變長數據元,以下例說明:

00020—— 變量XYZ的數據類型爲ANS...999(LLLVAR),則表示:該變量中可含字母、數字和特殊符號,最長不超過999個字符,長度由三位數字確定。

00021—— 變量XYZ的數據類型爲N...999(LLLVAR),則在壓縮時,其長度位用右靠的BCD碼壓縮,而其後緊隨的數字內容用左靠的BCD碼壓縮。這是爲了保證有效內容和其位數中間無缺省填充值。若不爲偶數位,左靠的數字內容後補零。由於有長度位表徵該域有效內容的長度,因此後補零不會改變該域的真實值。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章