Iso8583消息编码和解码

时间:2014-08-28 05:16:38

标签: hex decoder iso8583

我的问题是基于ISO8583交易消息标准。 我的问题陈述是开发一个应用程序,它将解码ISO8583消息,该消息作为HEX格式的输入提供。

代表:我的输入= 0200B2200000001000000000000000800000201234000000010000011072218012345606A5DFGR021ABCDEFGHIJ 1234567890

使用jPOS库我正在解析这个十六进制代码并输出如下:   MTI:0200     Field-3:201234     Field-4:000000010000     Field-7:0110722180     Field-11:123456     Field-44:A5DFGR     Field-105:ABCDEFGHIJ 1234567890

现在这个解析的输出我想要解码,即我想将其转换为字符串格式。我想知道它究竟传达了什么,比如它是余额查询还是交易请求等。

所以,我的问题是,是否有任何工具可用于理解iso8583消息的十六进制代码?

2 个答案:

答案 0 :(得分:4)

根据ISO 8583规范,1987年,1993年和2003年有大量的方言清单。修改后的协议在字段中使用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  0000201234000000
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"

为多种方言定义的在线解析器,因此您可以播放消息数据并分析结果。

答案 1 :(得分:1)

您的示例输入看起来像标准ASCII ISO-8583输入字符串,而不是HEX或任何类型的二进制格式。因此,如果您的所有输入看起来已经解决了大部分问题。

就了解您所拥有的内容而言,有大量公开信息可用于解码ISO-8583消息格式及其值。对于它们中的大多数,它们通常遵循标准字段格式,但可能具有规范所特有的自定义字段值。最大的例外是VISA和MasterCard,但美国的区域性通常非常接近ISO-8583-87。

维基百科页面和我认为的jPOS文档会为您提供大量的文档,例如"什么是字段44?"。我一直在维护和查看不同的组织ISO-8583规范大约15年,您通常必须直接从它们获得特定的供应商规范,以获取数据的所有变体和特定于接口的独特数据处理。有一些是公开的,通过搜索" ISO-8583 .PDF"很容易找到。在Google上也是如此。

捕获是大多数规范,尤其是ISO组织本身的原始ISO-8583规范不包含特定事务的示例。虽然如果您知道数据元素003的内容,您应该能够逻辑地组装许多基本消息类型,以至少为您的解析器程序识别事务类型(即310000 =默认的余额查询),捕获将是全部知道支持字段及其相应的字段特定于实体规范,它们需要真正做出正面或反面,但使用一些常识也可以将它拼凑在一起。

一旦人们非常熟悉ISO-8583,您通常可以查看上面没有二进制文本的文本块,并在心理上解析大部分文本,以了解没有文件的交易类型。有时,即使您熟悉该特定变体,也会有位图。