2

私は ISO 8583 で働いていました。また、JPOS を使用して ISO メッセージを解析および解析解除しています。しかし、メッセージを解析すると、次のエラーが表示されます。

java.lang.NullPointerException
    at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:94)
    at org.jpos.iso.ISOMsg.pack(ISOMsg.java:442)
    at com.sti.payment.postpaid.service.TransactionService.response(TransactionService.java:76)
    at com.sti.payment.postpaid.App.main(App.java:35)

エラーポイント:

byte [] bIsoMsg = isoMsg.pack();

これが私のコードです:

public void response(String responseMessage) throws Exception {
    // TODO Auto-generated method stub
    GenericPackager packager = new GenericPackager("de-payment-request.xml");

    // Buat ISO Messagenya
    ISOMsg isoMsg = new ISOMsg();
    isoMsg.setPackager(packager);
    isoMsg.setMTI("0210");
    isoMsg.set(1, "723A40010A818000");
    isoMsg.set(2, "162333444455556666");
    isoMsg.set(3, "380099");

    byte [] bIsoMsg = isoMsg.pack();
}

そして、ここに私のXMLがあります:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
<isopackager>
  <isofield
    id="1"
    length="64"
    name="BIT MAP"
    class="org.jpos.iso.IFA_BITMAP"
  />
  <isofield
    id="2"
    length="16"
    name="PRIMARY ACCOUNT NUMBER"
    class="org.jpos.iso.IFA_LLNUM"
  />
  <isofield
    id="3"
    length="6"
    name="PROCESSING CODE"
    class="org.jpos.iso.IFA_NUMERIC"
  />
</isopackager>

私が逃したものは何ですか?どうもありがとうございました。

4

2 に答える 2

1

ビットマップ フィールド (データ要素 1) は jPOS によって自動的に処理されるため、以下を呼び出す必要はありません。

isoMsg.set(1, "723A40010A818000");

フィールド 1 を設定すると、jPOS は、実際には構成されていないフィールドがあると認識します。そのため、おそらくここで(バージョンによって異なります)、NPE を取得します。

于 2016-02-11T20:05:33.330 に答える