如何在java中收集和发送iso 8583格式的消息?如下所示:
30 38 30 30 82 20 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 11 13 12 53 20 12 34 56 03 01我尝试使用库https://github.com/imohsenb/ISO8583-Message-Client-java进行构建。收集不正确。
30 38 30 30 82 20 08 00 22 20 00 00 00 00 00 00 00 00 00 00 11 13 12 53 20 12 34 56 03 01代码:
public class ClientSocket {
public static void main(String[] args) throws ISOException, ISOClientException, IOException {
ISOMessage isoMessage = ISOMessageBuilder.Packer(VERSION.V1987)
.networkManagement()
.mti(MESSAGE_FUNCTION.Request, MESSAGE_ORIGIN.Acquirer)
.processCode("0000000")
.setField(FIELDS.F7_TransmissionDataTime, "1113125320")
.setField(FIELDS.F11_STAN, "1234560301")
.setHeader("303830308220")
.build();
ISOClient client = ISOClientBuilder.createSocket("172.20.104.69", 5803)
.build();
System.out.println("isoMessage " + isoMessage);
client.connect();
String response = Arrays.toString(client.sendMessageSync(isoMessage));
System.out.println("response = " + response);
client.disconnect();
}
}发布于 2019-11-21 18:55:18
解析您从代码中获得的消息:
30 38 30 30 82 20 -您设置的消息头(它包含看起来像MTI的字符串0800 -这是您想要的吗?)
08 00 -用于网络管理的实际MTI
22 20 00 00 00 -表示字段3,7,11存在的位图
00 00 00 -处理代码(字段3)
00 -处理代码后填充的额外00字节(可能是因为您将处理代码设置为奇数个字符和库,而它并没有像应该的那样被截断)
11 13 12 53 20 -日期/时间(字段7)
12 34 56 - STAN (字段11)
03 01 -您设置为stan的字符,但它们不会被视为STAN,因为根据ISO规范,stan是6位数字
通过查看目标消息,很难理解您试图实现的目标。
我假设您试图实现的实际上是一条不同的消息-它以ASCII格式的MTI开头,包含第二个位图,指示字段7、11和70存在。
字段7将是: 11 13 12 53 20
字段11将是: 12 34 56
字段70将为: 03 01
这是你要找的东西吗?
https://stackoverflow.com/questions/58932251
复制相似问题