2014-08-28 240 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" 

在线解析器定义了几种方言,所以你可以玩你的消息数据和分析结果。