我的问题是基于ISO8583交易消息标准的。我的问题陈述是开发一个应用程序,这将解码的ISO8583信息,这是作为十六进制格式的输入提供。
例如: my input = 0200B2200000001000000000000000800000201234000000010000011072218012345606A5DFGR021ABCDEFGHIJ 1234567890
我使用jPOS库解析这个十六进制代码,输出如下: MTI :0200Field-3: 201234 Field-4 : 000000010000 Field-7 : 0110722180 Field-11 : 123456 Field-44 : A5DFGR Field-105 :ABCDEFGHIJ1234567890
现在我想要解码这个解析后的输出,也就是说,我想把它转换成字符串格式。我想知道它到底传达了什么,比如它是余额查询还是交易请求等。
所以,我的问题是,有没有可用的工具来理解iso8583消息的十六进制代码?
发布于 2015-06-02 07:41:17
1987年、1993年和2003年,有大量基于ISO 8583规范的方言列表。修改后的协议在字段中混合使用ASCII、Binary、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"在线解析器定义了几种方言,因此您可以处理消息数据并分析结果。
发布于 2014-10-09 12:54:09
您的示例输入看起来像一个标准的ASCII ISO-8583输入字符串,而不是任何类型的十六进制或二进制格式。因此,如果您的所有输入看起来都是这样,那么您的大部分问题都已经解决了。
就理解您所拥有的内容而言,有大量公开可用的特定于解码ISO-8583消息格式及其值的信息。对于它们中的大多数,它们通常遵循标准字段格式,但可能具有特定于规范的自定义字段值。最大的例外是VISA和MasterCard,但美国的地区性签证通常非常接近ISO8583-87。
我假设维基百科页面和jPOS文档可以为您提供您正在寻找的大量文档,比如“什么是字段44?”。大约15年来,我一直在维护和研究不同的组织ISO-8583规范,您通常必须直接从他们那里获得特定的供应商规范,以获得所有数据变体和特定于接口的独特数据处理。有一些是公开可用的,很容易在谷歌上搜索"ISO-8583 .PDF“就能找到。
问题是大多数规范,特别是ISO组织本身的原始ISO-8583规范并不包含特定事务的示例。虽然如果你知道数据元素003的内容,你应该能够在逻辑上组装许多基本的消息类型,以便至少识别你的解析器程序的事务类型(例如,310000 =默认的余额查询),但是捕获将是知道所有的支持字段及其对应的字段,这些字段特定于实体规范,这些字段是真正弄清楚它的头部或尾部所需的,但是使用一些常识,你也可以将它们拼凑在一起。
一旦您非常熟悉ISO-8583,您通常可以查看上面没有二进制的文本块,并在头脑中解析其中的大部分,以了解没有位图的事务类型,有时即使您熟悉特定的变体。
https://stackoverflow.com/questions/25541185
复制相似问题