2014-08-28 135 views
2

我的問題是基於ISO8583交易消息標準。 我的問題陳述是開發一個應用程序,它將解碼以HEX格式提供的ISO8583消息。Iso8583消息編碼和解碼

爲前:我的輸入= 0200B22000000010000000000000008000002A5DFGR021ABCDEFGHIJ 1234567890

使用JPOS庫我解析這十六進制代碼和輸出如下所示: MTI:0200 字段-3:2場4:000000010000 現場7:0110722180 字段-11:123456 場44:A5DFGR 字段-105:ABCDEFGHIJ 1234567890

現在這個解析輸出我想即解碼我想要將其轉換我nto字符串格式。我想知道它究竟傳達什麼,就像是一個餘額查詢或交易請求等。

所以,我的問題是,有沒有任何工具可用來了解iso8583消息的十六進制代碼?

+0

有沒有人有任何關於這個問題的想法? – user3985315 2014-09-01 12:11:52

+0

ISO 8583有許多不同的實現,它們在字段編碼方式和字段值的含義上有所不同。在我看到的實現中,MTI和處理代碼(字段3)的組合指定了消息的類型。無論如何,爲了解釋這個信息,你必須得到信息的ISO 8583實現的文檔。 – Stuart 2014-09-20 23:00:06

回答

1

您的示例輸入看起來像一個標準的ASCII ISO-8583輸入字符串,而不是任何類型的十六進制或二進制格式。所以如果你所有的輸入看起來像你的問題的一大塊已經解決了。

就理解您所擁有的信息而言,存在許多專用於解碼ISO-8583消息格式及其值的公開可用信息。對於他們中的大多數,他們通常遵循標準的字段格式,但是可以具有對規範唯一的自定義字段值。最大的例外是VISA和萬事達卡,但在美國的地區通常非常接近ISO-8583-87。

維基百科頁面和我假設的jPOS文檔會給你一大堆關於「什麼是字段44?」等內容的文檔。我一直在維護和查看大約15年的不同組織的ISO-8583規範,並且通常必須直接從它們獲取特定的供應商規格,以瞭解特定於接口的所有數據變體和獨特數據處理。還有一些公開發布的內容很容易在Google上搜索「ISO-8583.PDF」。

該捕獲是大多數規範,特別是來自ISO組織的原始ISO-8583規範本身不包含具體事務的樣子。儘管如果你知道數據元素003的內容,你應該能夠在邏輯上組裝許多基本的消息類型,至少可以識別解析器程序的事務類型(例如,310000 =默認情況下的平衡查詢),這個問題將會知道所有的支持字段以及它們對應的特定於該實體規範的相應字段,這些字段是真正製作它的頭部或尾部所必需的,但是也可以使用一些常識將它們拼湊在一起。

一旦你對ISO-8583非常熟悉,你通常可以查看上面沒有二進制文本的文本塊,並從心理上解析大部分文本,以瞭解它是什麼類型的事務有時即使您熟悉該特定變體也是一個位圖。

4

根據1987年,1993年和2003年的ISO 8583規範,有大量的方言。修改後的協議在字段中混合使用ASCII,二進制,BCD和EBCDIC數據。

您的消息示例看起來類似於OmniPay主機到主機的實現,但本規範未使用的字段105除外。

如果沒有額外的修改,它是由在線工具在https://iso8583.info/lib/OmniPay/H2H/msg

解析使用您的信息「二進制」表示:

0000: 30 32 30 30 42 32 32 30 │ 30 30 30 30 30 30 31 30 0200B22000000010 
0010: 30 30 30 30 30 30 30 30 │ 30 30 30 30 30 30 38 30 0000000000000080 
0020: 30 30 30 30 32 30 31 32 │ 33 34 30 30 30 30 30 30 00002
0030: 30 31 30 30 30 30 30 31 │ 31 30 37 32 32 31 38 30 0100000110722180 
0040: 31 32 33 34 35 36 30 36 │ 41 35 44 46 47 52 30 32 12345606A5DFGR02 
0050: 31 41 42 43 44 45 46 47 │ 48 49 4A 20 31 32 33 34 1ABCDEFGHIJ 1234 
0060: 35 36 37 38 39 30  │       567890 

這裏是原始郵件中一些垃圾,但它不是故障的解析器。 ))

--- # Cheef's parser (Limited version - 5 levels deep only) 
- msg: # OmniPay H2H message 
    MTI: "0200" # Message Type ID. 
    DE000: "B220000000100000" # Primary bitmap // 1.3.4.7.11.44. 
- BM0: # Fields at Primary Bitmap 
    DE001: "0000000000800000" # Secondary bitmap // 105. 
    - DE003: # PC 
    S01: "20" # Transaction Code. // Refund 
    S02: "12" # Account, from. 
    S03: "34" # Account, to. 
    DE004: "000000010000" # Amount, transaction. // 10000 
    - DE007: # Date and time, transmission 
    date: "0110" # Date, local transmission. // 2015.01.10 
    time: "722180" # Time, local transmission. // 00:22:20 
    DE011: "123456" # STAN. 
    - DE044: # Additional response data 
    len: "06" 
    - val: 
     RFU: "A5DFGR" 

在線解析器定義了幾種方言,所以你可以玩你的消息數據和分析結果。