简体   繁体   English

如何在ISO8583消息请求中设置子元素

[英]How to set sub-elements in an ISO8583 message request

I have a requirement where I need to set some subelements in the private data field 127, specifically subfield 22 and 33. I am unsure of how to actually set the data of field 127 as it needs to contain a bitmap specifying which subfields are populated (in this case only subfield 22 and 33).I have looked through the documentation, but there is not much mention of setting up subfields. 我有一个需求,我需要在私有数据字段127中设置一些子元素,尤其是子字段22和33。由于不能包含字段127,该字段需要指定填充哪些子字段,我不确定如何实际设置字段127的数据。在这种情况下,仅子字段22和33)。我已经浏览了文档,但是并没有太多提及设置子字段。 Can anyone please guide me on how to do this? 谁能指导我如何执行此操作?

Once you have a reference to an instance of an ISOMsg, you can call: 引用ISOMsg实例后,可以调用:

m.set ("127.22", "XXX");
m.set ("127.33", "YYY");

and

m.getString("127.22");
m.getString("127.33");

in order to access those fields. 为了访问这些字段。

As for the subfield configuration, if you're using the GenericPackager, take a look at https://github.com/jpos/jPOS/blob/master/jpos/src/dist/cfg/packager/postpack.xml#L649-L790 至于子字段配置,如果您使用的是GenericPackager,请查看https://github.com/jpos/jPOS/blob/master/jpos/src/dist/cfg/packager/postpack.xml#L649- L790

Are you sure you need a bitmap of secondary fields? 您确定需要辅助字段的位图吗? The way you usually approach something like this is by using TLVs (Tag Length Value elements). 通常,您使用TLV(“标签长度值”元素)来处理此类问题。

The way you would do that is by having DE 127 as a IFA_LLLCHAR with a content similar to: 03202201012345678900330100987654321. 您可以通过将DE 127作为IFA_LLLCHAR包含类似以下内容的方法来实现:0320220101234567897893030100987654321。

This is equivalent to: 032 (total DE127 length) 022 (tag 22) 010 (length of tag 22) 1234567890 (value of tag22) 033 (tag 33) 010 (length of tag 33) 0987654321 (value of tag 33). 这等效于:032(DE127总长度)022(标签22的长度)010(标签22的长度)1234567890(标签22的值)033(标签33)010(标签33的长度)0987654321(标签33的值)。

I am also facing the same challenge. 我也面临着同样的挑战。 I am using jpos and i am trying to set field 127 sub element 033 as well as unpacking it. 我正在使用jpos,并且尝试设置字段127子元素033以及对其进行解压缩。 My code is as follows: 我的代码如下:

Packer: 帕克:

import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.packager.GenericPackager;

import java.io.InputStream;
import java.text.SimpleDateFormat;

public class PackerTest {

        public static void main(String[] args) throws ISOException {
            InputStream is = com.melah.Pack.class.getResourceAsStream("/fields.xml");
            GenericPackager packager = new GenericPackager(is);


            ISOMsg isoMsg = new ISOMsg();
            isoMsg.setPackager(packager);


            isoMsg.set(0, "0200");
            isoMsg.set(2, "5000000000000000");
            isoMsg.set(3, "317000");
            isoMsg.set(4, "000000000000");
            isoMsg.set(7, new SimpleDateFormat("MMddHHmmss").format(1221133630));
            isoMsg.set(11, "594972");
            isoMsg.set(12, "153630");
            isoMsg.set(13, "1221");
            isoMsg.set(14, "1912");
            isoMsg.set(15, "1221");
            isoMsg.set(18, "6012");
            isoMsg.set(22, "020");
            isoMsg.set(25, "27");
            isoMsg.set(28, "C00000000");
            isoMsg.set(30, "C00000000");
            isoMsg.set(32, "588892");
            isoMsg.set(37, "000540000000");
            isoMsg.set(41, "11430000");
            isoMsg.set(42, "000000011431143");
            isoMsg.set(43, "XYZ Banking");
            isoMsg.set(49, "840");
            isoMsg.set(56, "1510");
            isoMsg.set(59, "0540000000");
            isoMsg.set(102, "5000000000000000");
            isoMsg.set(123, "100000000000000");
            isoMsg.set("127.003", "XYZ XYZ");
            isoMsg.set("127.033", "6000");
            isoMsg.set(54, "500000000");


            byte[] bIsoMsg = isoMsg.pack();

            String isoMessage = "";
            for (int i = 0; i < bIsoMsg.length; i++) {
                String a = "";
                isoMessage += (char) bIsoMsg[i];
            }
            System.out.println(" Packed ISO8385 Message = '"+isoMessage+"'");
        }

    }

Unpacker: 解包:

import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISOUtil;
import org.jpos.iso.packager.GenericPackager;

import java.io.InputStream;

public class UnpackISOMessage {
    public static void main(String[] args) {
        UnpackISOMessage iso = new UnpackISOMessage();
        try {
            ISOMsg isoMsg = iso.parseISOMessage();
            iso.printISOMessage(isoMsg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private ISOMsg parseISOMessage() throws Exception {
        String message = "0200F23E449508E0852000000000040000221650000000000000003170000000000000000115051213594972153630122119121221601202027C00000000C000000000658889200054000000011430000000000011431143XYZ Banking                             84000950000000000415100100540000000165000000000000000015100000000000000000060    タ   XYZ XYZ                                         6000";
        System.out.printf("Message = %s%n", message);
        try {
            InputStream is = getClass().getResourceAsStream("/fields.xml");
            GenericPackager packager = new GenericPackager(is);
            ISOMsg isoMsg = new ISOMsg();
            isoMsg.setPackager(packager);
            isoMsg.unpack(message.getBytes());
            return isoMsg;
        } catch (ISOException e) {
            throw new Exception(e);
        }
    }

    private void printISOMessage(ISOMsg isoMsg) {
        try {
            isoMsg.dump(System.out, "");
            System.out.println(ISOUtil.hexdump(isoMsg.pack()));

            System.out.printf("MTI = %s%n", isoMsg.getMTI());
            System.out.println("127.003 : " + isoMsg.getString("127.003"));
            System.out.println("127.033 : " + isoMsg.getString("127.033"));
            for (int i = 1; i <= isoMsg.getMaxField(); i++) {
                if (isoMsg.hasField(i)) {
                    System.out.printf("Field (%s) = %s%n", i, isoMsg.getString(i));
                }
            }
        } catch (ISOException e) {
            e.printStackTrace();
        }
    }
}

fields.xml fields.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
<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="SECRET ID" class="org.jpos.iso.IFA_LLNUM"/>
    <isofield id="3" length="6" name="PROCESSING CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="4" length="12" name="AMOUNT, TRANSACTION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="5" length="12" name="AMOUNT, SETTLEMENT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="6" length="12" name="AMOUNT, CARDHOLDER BILLING" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="7" length="10" name="TRANSMISSION DATE AND TIME" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="8" length="8" name="AMOUNT, CARDHOLDER BILLING FEE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="9" length="8" name="CONVERSION RATE, SETTLEMENT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="10" length="8" name="CONVERSION RATE, CARDHOLDER BILLING" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="11" length="6" name="SYSTEM TRACE AUDIT NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="12" length="6" name="TIME, LOCAL TRANSACTION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="13" length="4" name="DATE, LOCAL TRANSACTION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="14" length="4" name="DATE, EXPIRATION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="15" length="4" name="DATE, SETTLEMENT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="16" length="4" name="DATE, CONVERSION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="17" length="4" name="DATE, CAPTURE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="18" length="4" name="MERCHANTS TYPE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="19" length="3" name="ACQUIRING INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="20" length="3" name="PAN EXTENDED COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="21" length="3" name="FORWARDING INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="22" length="3" name="POINT OF SERVICE ENTRY MODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="23" length="3" name="CARD SEQUENCE NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="24" length="3" name="NETWORK INTERNATIONAL IDENTIFIEER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="25" length="2" name="POINT OF SERVICE CONDITION CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="26" length="2" name="POINT OF SERVICE PIN CAPTURE CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="27" length="1" name="AUTHORIZATION IDENTIFICATION RESP LEN" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="28" length="9" name="AMOUNT, TRANSACTION FEE" class="org.jpos.iso.IFA_AMOUNT"/>
    <isofield id="29" length="9" name="AMOUNT, SETTLEMENT FEE" class="org.jpos.iso.IFA_AMOUNT"/>
    <isofield id="30" length="9" name="AMOUNT, TRANSACTION PROCESSING FEE" class="org.jpos.iso.IFA_AMOUNT"/>
    <isofield id="31" length="9" name="AMOUNT, SETTLEMENT PROCESSING FEE" class="org.jpos.iso.IFA_AMOUNT"/>
    <isofield id="32" length="11" name="ACQUIRING INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
    <isofield id="33" length="11" name="FORWARDING INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
    <isofield id="34" length="28" name="PAN EXTENDED" class="org.jpos.iso.IFA_LLCHAR"/>
    <isofield id="35" length="37" name="TRACK 2 DATA" class="org.jpos.iso.IFA_LLNUM"/>
    <isofield id="36" length="104" name="TRACK 3 DATA" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="37" length="12" name="RETRIEVAL REFERENCE NUMBER" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="38" length="6" name="AUTHORIZATION IDENTIFICATION RESPONSE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="39" length="2" name="RESPONSE CODE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="40" length="3" name="SERVICE RESTRICTION CODE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="41" length="8" name="CARD ACCEPTOR TERMINAL IDENTIFICACION" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="42" length="15" name="CARD ACCEPTOR IDENTIFICATION CODE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="43" length="40" name="CARD ACCEPTOR NAME/LOCATION" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="44" length="25" name="ADITIONAL RESPONSE DATA" class="org.jpos.iso.IFA_LLCHAR"/>
    <isofield id="45" length="76" name="TRACK 1 DATA" class="org.jpos.iso.IFA_LLCHAR"/>
    <isofield id="46" length="999" name="ADITIONAL DATA - ISO" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="47" length="999" name="ADITIONAL DATA - NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="48" length="999" name="ADITIONAL DATA - PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="49" length="3" name="CURRENCY CODE, TRANSACTION" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="50" length="3" name="CURRENCY CODE, SETTLEMENT" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="51" length="3" name="CURRENCY CODE, CARDHOLDER BILLING" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="52" length="16" name="PIN DATA" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="53" length="16" name="SECURITY RELATED CONTROL INFORMATION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="54" length="120" name="ADDITIONAL AMOUNTS" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="55" length="999" name="RESERVED ISO" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="56" length="999" name="RESERVED ISO" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="57" length="999" name="RESERVED NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="58" length="999" name="RESERVED NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="59" length="999" name="RESERVED NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="60" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="61" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="62" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="63" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="64" length="8" name="MESSAGE AUTHENTICATION CODE FIELD" class="org.jpos.iso.IFA_BINARY"/>
    <isofield id="65" length="1" name="BITMAP, EXTENDED" class="org.jpos.iso.IFA_BINARY"/>
    <isofield id="66" length="1" name="SETTLEMENT CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="67" length="2" name="EXTENDED PAYMENT CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="68" length="3" name="RECEIVING INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="69" length="3" name="SETTLEMENT INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="70" length="3" name="NETWORK MANAGEMENT INFORMATION CODE" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="71" length="4" name="MESSAGE NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="72" length="4" name="MESSAGE NUMBER LAST" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="73" length="6" name="DATE ACTION" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="74" length="10" name="CREDITS NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="75" length="10" name="CREDITS REVERSAL NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="76" length="10" name="DEBITS NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="77" length="10" name="DEBITS REVERSAL NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="78" length="10" name="TRANSFER NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="79" length="10" name="TRANSFER REVERSAL NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="80" length="10" name="INQUIRIES NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="81" length="10" name="AUTHORIZATION NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="82" length="12" name="CREDITS, PROCESSING FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="83" length="12" name="CREDITS, TRANSACTION FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="84" length="12" name="DEBITS, PROCESSING FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="85" length="12" name="DEBITS, TRANSACTION FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="86" length="16" name="CREDITS, AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="87" length="16" name="CREDITS, REVERSAL AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="88" length="16" name="DEBITS, AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="89" length="16" name="DEBITS, REVERSAL AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="90" length="42" name="ORIGINAL DATA ELEMENTS" class="org.jpos.iso.IFA_NUMERIC"/>
    <isofield id="91" length="1" name="FILE UPDATE CODE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="92" length="2" name="FILE SECURITY CODE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="93" length="6" name="RESPONSE INDICATOR" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="94" length="7" name="SERVICE INDICATOR" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="95" length="42" name="REPLACEMENT AMOUNTS" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="96" length="16" name="MESSAGE SECURITY CODE" class="org.jpos.iso.IFA_BINARY"/>
    <isofield id="97" length="17" name="AMOUNT, NET SETTLEMENT" class="org.jpos.iso.IFA_AMOUNT"/>
    <isofield id="98" length="25" name="PAYEE" class="org.jpos.iso.IF_CHAR"/>
    <isofield id="99" length="11" name="SETTLEMENT INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
    <isofield id="100" length="11" name="RECEIVING INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
    <isofield id="101" length="17" name="FILE NAME" class="org.jpos.iso.IFA_LLCHAR"/>
    <isofield id="102" length="28" name="FROM ACCOUNT" class="org.jpos.iso.IFA_LLCHAR"/>
    <isofield id="103" length="10" name="ACCOUNT IDENTIFICATION 2" class="org.jpos.iso.IFA_LLCHAR"/>
    <isofield id="104" length="100" name="TRANSACTION DESCRIPTION" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="105" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="106" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="107" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="108" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="109" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="110" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="111" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="112" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="113" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="114" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="115" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="116" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="117" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="118" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="119" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="120" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="121" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="122" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="123" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="124" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="125" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <isofield id="126" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
    <!--<isofield id="127" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>-->
    <isofieldpackager
            id="127"
            length="999999"
            name="RESERVED PRIVATE USE"
            class="org.jpos.iso.IFA_LLLLLLBINARY"
            packager="org.jpos.iso.packager.GenericSubFieldPackager">
        <isofield
                id="0"
                length="0"
                name="PLACEHOLDER"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="1"
                length="8"
                name="BITMAP"
                class="org.jpos.iso.IFB_BITMAP"/>
        <isofield
                id="2"
                length="32"
                name="SWITCH KEY"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="3"
                length="48"
                name="ROUTING INFORMATION"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="4"
                length="22"
                name="POS DATA"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="5"
                length="73"
                name="SERVICE STATION DATA"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="6"
                length="2"
                name="AUTHORIZATION PROFILE"
                class="org.jpos.iso.IFA_NUMERIC"/>
        <isofield
                id="7"
                length="50"
                name="CHECK DATA"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="8"
                length="128"
                name="RETENTION DATA"
                class="org.jpos.iso.IFA_LLLCHAR"/>
        <isofield
                id="9"
                length="255"
                name="ADDITIONAL NODE DATA"
                class="org.jpos.iso.IFA_LLLCHAR"/>
        <isofield
                id="10"
                length="3"
                name="CVV2"
                class="org.jpos.iso.IFA_NUMERIC"/>
        <isofield
                id="11"
                length="32"
                name="ORIGINAL KEY"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="12"
                length="25"
                name="TERMINAL OWNDER"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="13"
                length="17"
                name="POS GEOGRAPHIC DATA"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="14"
                length="8"
                name="SPONSOR BANK"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="15"
                length="29"
                name="AVS REQUEST"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="16"
                length="1"
                name="AVS RESPONSE"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="17"
                length="50"
                name="CARDHOLDER INFORMATION"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="18"
                length="50"
                name="VALIDATION DATA"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="19"
                length="45"
                name="BANK DETAILS"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="20"
                length="8"
                name="AUTHORIZER DATE SETTLEMENT"
                class="org.jpos.iso.IFA_NUMERIC"/>
        <isofield
                id="21"
                length="12"
                name="RECORD IDENTIFICATION"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="22"
                length="99999"
                name="MSDN"
                class="org.jpos.iso.IFA_LLLLLCHAR"/>
        <isofield
                id="23"
                length="253"
                name="PAYEE NAME AND ADDRESS"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="24"
                length="28"
                name="PAYER ACCOUNT INFORMATION"
                class="org.jpos.iso.IFA_LLCHAR"/>
        <isofield
                id="25"
                length="8000"
                name="ICC DATA"
                class="org.jpos.iso.IFA_LLLLCHAR"/>
        <isofield
                id="33"
                length="4"
                name="EXTENDED TRAN-TYPE"
                class="org.jpos.iso.IFA_NUMERIC"/>
    </isofieldpackager>
    <isofield id="128" length="8" name="MAC 2" class="org.jpos.iso.IFA_BINARY"/>
</isopackager>

Exception: 例外:

Message = 0200F23E449508E0852000000000040000221650000000000000003170000000000000000115051213594972153630122119121221601202027C00000000C000000000658889200054000000011430000000000011431143XYZ Banking                             84000950000000000415100100540000000165000000000000000015100000000000000000060    タ   XYZ XYZ                                         6000
java.lang.Exception: org.jpos.iso.ISOException: org.jpos.iso.IFA_LLCHAR: Problem unpacking field 11 (java.lang.NegativeArraySizeException) unpacking field=127, consumed=287
    at com.melah.UnpackISOMessage.parseISOMessage(UnpackISOMessage.java:32)
    at com.melah.UnpackISOMessage.main(UnpackISOMessage.java:14)
Caused by: org.jpos.iso.ISOException: org.jpos.iso.IFA_LLCHAR: Problem unpacking field 11 (java.lang.NegativeArraySizeException) unpacking field=127, consumed=287
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:340)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:468)
    at com.melah.UnpackISOMessage.parseISOMessage(UnpackISOMessage.java:29)
    ... 1 more

Jpos Maven Dependency: Jpos Maven依赖关系:

<dependency>
            <groupId>org.jpos</groupId>
            <artifactId>jpos</artifactId>
            <version>2.1.2</version>
</dependency>

Code can be found on github: https://github.com/melah500/jpos-field-127.003 可以在github上找到代码: https : //github.com/melah500/jpos-field-127.003

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM