我正在评估j8583
作为一个库来解析ISO8583
消息。它几乎适用于所有字段,但我无法获得字段 33 的正确值。
我创建了以下单元测试:
@Test
public void testDecode() throws IOException, ParseException {
MessageFactory<IsoMessage> messageFactory = ConfigParser.createFromClasspathConfig("j8583.xml");
messageFactory.setUseBinaryMessages(true);
String testData = "0100000000018000000006560103095900000360";
IsoMessage isoMessage = messageFactory.parseMessage(HexCodec.hexDecode(testData), 0);
assertEquals("560103", isoMessage.getField(32).toString());
assertEquals("590000036", isoMessage.getField(33).toString());
}
这是我的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE j8583-config PUBLIC "-//J8583//DTD CONFIG 1.0//EN" "http://j8583.sourceforge.net/j8583.dtd">
<j8583-config>
<parse type="0100">
<field num="32" type="LLBCDBIN" length="11"/>
<field num="33" type="LLBCDBIN" length="11"/>
</parse>
</j8583-config>
运行单元测试时,字段 32 被正确解析,但 33 失败。我为字段 33 得到的值是 900000360
由于它们都配置相同并且数据似乎相同(06 560103 09 5900000360),我不明白为什么这不能正确解析