アプリケーションに jpos を使い始めています。メッセージ iso8583 (ver 1987) をサーバーに送信し、応答を受信するには、アプリケーションが必要です。
これは私のコードです:
InputStream is = PackagerFactory.class.getResourceAsStream("iso87ascii.xml");
ISOPackager packager = new GenericPackager(is);
ISOMsg m = new ISOMsg();
m.setMTI("0820");
m.set(7, "0319174039");
m.set(11, "639530");
m.set(15, "0319");
m.set(24, "001");
m.set(64, "6038f060aba137a5b0efb4cc538416c8");
m.setPackager(packager);
byte b[] = m.pack();
String s = new String(b);
「s」の値: 082002220100000000010000031917403963953003190016038f060aba137a5b0efb4cc538416c8
したがって、0820 は MTI
02220100000000010000 はビットマップです。
よくわからないことがあります:
1. ビットマップについて:
なぜビットマップの長さは 20 なのですか? ファイル構成 "iso87ascii.xml" で指定されている長さは 16 です。
iso87ascii.xml の内容は次のとおりです。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
<!-- ISO 8583:1987 (ASCII) field descriptions for GenericPackager -->
<isopackager>
<isofield
id="0"
length="4"
name="MESSAGE TYPE INDICATOR"
class="org.jpos.iso.IFA_NUMERIC"/>
<isofield
id="1"
length="16"
name="BIT MAP"
class="org.jpos.iso.IFA_BITMAP"/>
<isofield
id="2"
length="19"
name="PAN - PRIMARY ACCOUNT NUMBER"
class="org.jpos.iso.IFA_LLNUM"/>
...
<isofield
id="7"
length="14"
name="TRANSMISSION DATE AND TIME"
class="org.jpos.iso.IFA_NUMERIC"/>
...
<isofield
id="11"
length="6"
name="SYSTEM TRACE AUDIT NUMBER"
class="org.jpos.iso.IFA_NUMERIC"/>
....
<isofield
id="15"
length="4"
name="DATE, SETTLEMENT"
class="org.jpos.iso.IFA_NUMERIC"/>
...
<isofield
id="24"
length="3"
name="NETWORK INTERNATIONAL IDENTIFIEER"
class="org.jpos.iso.IFA_NUMERIC"/>
.....
<isofield
id="64"
length="32"
name="MESSAGE AUTHENTICATION CODE FIELD"
class="org.jpos.iso.IF_CHAR"/>
</isopackager>
2.メッセージのヘッダーについて:
次の形式のメッセージを送信したい:
Package header + Package body
パッケージ ヘッダー: パッケージ本体の長さを示す 4 つの ASCII 文字ヘッダー。
パッケージ本体: 8583 メッセージ
では、JPOS でそれを行うにはどうすればよいでしょうか。
助けてください、
少し早いですがお礼を、