[英]J8583: ISO8583 MessageFactory has no parsing guide for message type 0800
我將 j8583 iso 解析器用於 ISO 消息 (0800 2020000000800000 000000 000001 3239313130303031)。
下面是我的java代碼:
public class ISOUtility {
private static BufferedReader reader;
private static String getMessage() throws IOException {
if (reader == null) {
reader = new BufferedReader(new InputStreamReader(System.in));
}
// System.out.println("Paste your ISO8583 message here (no ISO headers): ");
return "0800 2020000000800000 000000 000001 3239313130303031";
}
public static void main(String [] args) throws IOException, ParseException {
final MessageFactory<IsoMessage> mf = new MessageFactory<IsoMessage>();
if (1 == 0) {
// ConfigParser.createFromClasspathConfig("j8583.xml");
ConfigParser.configureFromDefault(mf);
} else {
String path="C:\\Users\\DELL\\workspace\\SolabParser\\j8583.xml";
if (System.console() != null) {
System.console().printf("Attempting to configure MessageFactory from %s...%n", path);
}
System.out.println("Messagefactory is done");
String url = "j8583.xml";
if (path.contains("://")) {
System.out.println("else ");
ConfigParser.configureFromUrl(mf, new URL(path));
} else {
System.out.println("else ");
ConfigParser.configureFromUrl(mf, new File(path).toURI().toURL());
}
}
//Now read messages in a loop
String line = getMessage();
while (line != null && line.length() > 0) {
IsoMessage m = mf.parseMessage(line.getBytes(), 14);
if (m != null) {
System.out.printf("Message type: %04x%n", m.getType());
System.out.println("FIELD TYPE VALUE");
for (int i = 2; i <= 128; i++) {
IsoValue<?> f = m.getField(i);
if (f != null) {
System.out.printf("%5d %-6s [", i, f.getType());
System.out.print(f.toString());
System.out.println(']');
}
}
}
line = getMessage();
}
}
}
下面是配置文件。
<?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>
<!-- This is a test config file -->
<!-- These are the ISO headers to be prepended to the message types specified -->
<header type="0800"></header>
<template type="0280">
<field num="3" type="NUMERIC" length="2">99</field>
</template>
<!-- The server example uses this to read the requests -->
<parse type="0200">
<field num="3" type="NUMERIC" length="6" />
<field num="4" type="AMOUNT" />
<field num="7" type="DATE10" />
<field num="11" type="NUMERIC" length="6" />
<field num="12" type="TIME" />
<field num="13" type="DATE4" />
<field num="15" type="DATE4" />
<field num="17" type="DATE_EXP" />
<field num="32" type="LLVAR" />
<field num="35" type="LLVAR" />
<field num="37" type="NUMERIC" length="12" />
<field num="41" type="ALPHA" length="16" />
<field num="43" type="ALPHA" length="40" />
<field num="48" type="LLLVAR" />
<field num="49" type="ALPHA" length="3" />
<field num="60" type="LLLVAR" />
<field num="61" type="LLLVAR" />
<field num="100" type="LLVAR" />
<field num="102" type="LLVAR" />
</parse>
<!-- The client example uses this to read the responses -->
<parse type="0210">
<field num="3" type="NUMERIC" length="6" />
<field num="4" type="AMOUNT" />
<field num="7" type="DATE10" />
<field num="11" type="NUMERIC" length="6" />
<field num="12" type="TIME" />
<field num="13" type="DATE4" />
<field num="15" type="DATE4" />
<field num="17" type="DATE_EXP" />
<field num="32" type="LLVAR" />
<field num="35" type="LLVAR" />
<field num="37" type="NUMERIC" length="12" />
<field num="38" type="NUMERIC" length="6" />
<field num="39" type="NUMERIC" length="2" />
<field num="41" type="ALPHA" length="16" />
<field num="43" type="ALPHA" length="40" />
<field num="48" type="LLLVAR" />
<field num="49" type="ALPHA" length="3" />
<field num="60" type="LLLVAR" />
<field num="61" type="LLLVAR" />
<field num="70" type="ALPHA" length="3" />
<field num="90" type="ALPHA" length="42" />
<field num="100" type="LLVAR" />
<field num="102" type="LLVAR" />
<field num="126" type="LLLVAR" />
</parse>
<!-- this is for binary tests (message encoding AND fields) -->
<parse type="0600">
<field num="4" type="AMOUNT" />
<field num="7" type="DATE10" />
<field num="11" type="NUMERIC" length="6" />
<field num="41" type="BINARY" length="8" />
<field num="42" type="BINARY" length="4" />
<field num="43" type="ALPHA" length="40" />
<field num="62" type="LLBIN" />
<field num="63" type="LLBIN" />
<field num="64" type="LLLBIN" />
<field num="65" type="LLLBIN" />
<field num="102" type="LLLVAR" />
</parse>
<parse type="0800">
<field num="3" type="ALPHA" length="6"/>
<field num="12" type="DATE4" legth="14">
<field num="17" type="DATE4" length="8"/>
<field num="11" type="NUMERIC" length="6"/>
<field num="41" type="LLVAR" length="16"/>
</parse>
<parse type="0810" extends="0800">
<field num="17" type="exclude"/>
<field num="39" type="ALPHA" length="2"/>
</parse>
<parse type="0201">
<field num="3" type="NUMERIC" length="19" />
</parse>
<parse type="0202">
<field num="3" type="NUMERIC" length="22" />
</parse>
<parse type="0280">
<field num="3" type="NUMERIC" length="2" />
</parse>
</j8583-config>
我正在使用類型為“0800”的消息,但我沒有使用任何標題。
編譯程序時出現錯誤: ISO8583 MessageFactory 沒有消息類型 0800 的解析指南
任何幫助將不勝感激。
在字段編號 12 上更改單詞長度的拼寫並用斜線關閉該標簽,它缺少關閉斜線。
<field num="12" type="DATE4" length="14" />
我猜您對 Field 41 格式有誤。 對於不同的消息類型,它在您的個人資料中有所不同。
這是您的示例消息的可能解釋,其中 BIT 41 是 16 個十六進制字符轉換為 8 個 ASCII 字母(數字)。
https://iso8583.info/cmd/CB/AUTO/msg?080020200000008000000000000000013239313130303031
---
# Cheef's parser.
# Copyright (C) 2008-2016 Alexander Shevelev. https://iso8583.info/
# lib : "/lib/CB/AUTO/" - CB2A Autorisation
# tool : "msg"
# stat : 10 nodes, 4 lookup tables, 100.00% passed (4/4)
msg:#"080020200000008000000000000000013239313130303031" # CB2A Autorisation message
- MTI: "0800" # Message Type ID. // Network management request
- DE000: "2020000000800000" # Primary bitmap // 3.11.41.
- BM0:#"0000000000013239313130303031" # Fields at Primary Bitmap
- DE003:#"000000" # PC
- S01: "00" # Transaction Code. // Purchase of goods or services
- S02: "00" # Account, from. // Standard purchase
- S03: "00" # Account, to. // Standard purchase
- DE011: "000001" # STAN. // 1
- DE041: "29110001" # CATI.
# run:0.030
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.