001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.iso.packager; 020 021import org.jpos.iso.*; 022 023/** 024 * ANSI X9.2 Packager 025 * 026 * @author apr@cs.com.uy 027 * @version $Id$ 028 * @see ISOPackager 029 * @see ISOBasePackager 030 * @see ISOComponent 031 */ 032public class X92Packager extends ISOBasePackager { 033 protected ISOFieldPackager bitMapPackager = 034 new X92_BITMAP (16, "X9.2 BIT MAP"); 035 036 protected ISOFieldPackager fld[] = { 037 new IFA_NUMERIC( 4, "MESSAGE TYPE" ), 038 new IFA_FLLNUM ( 19, "PAN - PRIMARY ACCOUNT NUMBER" ), 039 new IFA_NUMERIC( 6, "PROCESSING CODE" ), 040 new IFA_NUMERIC( 12, "AMOUNT, TRANSACTION" ), 041 new IFA_NUMERIC( 12, "AMOUNT, SETTLEMENT" ), 042 new IFA_NUMERIC( 12, "AMOUNT, CARDHOLDER BILLING" ), 043 new IFA_NUMERIC( 6, "ACQUIRING INSTITUTION TRACE NUMBER" ), 044 new IFA_NUMERIC( 6, "TRANSACTION DATE" ), 045 new IFA_NUMERIC( 6, "ACQUIRING INSTITUTION POST DATE" ), 046 new IFA_NUMERIC( 6, "RESP ACQUIRING INSTITUTION POST DATE" ), 047 new IFA_NUMERIC( 6, "TRANSACTION TIME" ), 048 new IFA_NUMERIC( 29, "ADDRESS VERIFICATION" ), 049 new IFA_NUMERIC( 1, "ADDRESS VERIFICATION STATE" ), 050 new IFA_NUMERIC( 10, "ACQUIRING INSTITUTION IDENT CODE" ), 051 new IFA_NUMERIC( 10, "CARD ACCEPTOR IDENTIFICATION NUMBER" ), 052 new IFA_NUMERIC( 3, "TERMINAL COUNTRY CODE" ), 053 new IFA_BINARY( 0, "UNUSED" ), 054 new IFA_BINARY( 0, "UNUSED" ), 055 new IFA_BINARY( 0, "UNUSED" ), 056 new IFA_NUMERIC( 10, "ISSUER INSTITUTION IDENT NUMBER" ), 057 new IFA_NUMERIC( 2, "REVERSAL CODE" ), 058 new IFA_BINARY( 0, "UNUSED" ), 059 new IFA_BINARY( 0, "UNUSED" ), 060 new IFA_NUMERIC( 14, "GROSS DEBITS, AMOUNT" ), 061 new IFA_NUMERIC( 10, "GROSS DEBITS, COUNT" ), 062 new IFA_NUMERIC( 14, "GROSS CREDITS, AMOUNT" ), 063 new IFA_NUMERIC( 10, "GROSS CREDITS, COUNT" ), 064 new IFA_NUMERIC( 14, "REVERSAL GROSS DEBITS, AMOUNT" ), 065 new IFA_NUMERIC( 10, "REVERSAL GROSS DEBITS, COUNT" ), 066 new IFA_NUMERIC( 14, "REVERSAL GROSS CREDITS, AMOUNT" ), 067 new IFA_NUMERIC( 10, "REVERSAL GROSS CREDITS, COUNT" ), 068 new IFA_NUMERIC( 2, "TRANSACTION SPECIFICATION" ), 069 new IFA_NUMERIC( 3, "NETWORK MANAGEMENT INFORMATION CODE" ), 070 new IFA_NUMERIC( 12, "RESPONSE CODE" ), 071 new IF_CHAR( 25, "TERMINAL OWNER" ), 072 new IF_CHAR( 15, "TERMINAL CITY/STATE" ), 073 new IFA_NUMERIC( 6, "ORIGINAL DATA (ACQ POST DATE)" ), 074 new IFA_NUMERIC( 6, "ISSUER TRACE NUMBER" ), 075 new IFA_BINARY( 0, "UNUSED" ), 076 new IFA_BINARY( 8, "PIN" ), 077 new IF_CHAR( 8, "PASSWORD" ), 078 new IFA_BINARY( 0, "UNUSED" ), 079 new IFA_BINARY( 0, "UNUSED" ), 080 new IFA_BINARY( 0, "UNUSED" ), 081 new IFA_BINARY( 0, "UNUSED" ), 082 new IFA_BINARY( 0, "UNUSED" ), 083 new IFA_BINARY( 0, "UNUSED" ), 084 new IFA_BINARY( 0, "UNUSED" ), 085 new IFA_BINARY( 0, "UNUSED" ), 086 new IFA_BINARY( 0, "UNUSED" ), 087 new IFA_NUMERIC( 8, "APROVAL CODE" ), 088 new IFA_NUMERIC( 25, "POST INFO" ), 089 new IFA_NUMERIC( 30, "ISO ORIGINAL DATA" ), 090 new IFA_NUMERIC( 19, "SHARING" ), 091 new IFA_NUMERIC( 51, "TERMINAL INFORMATION" ), 092 new IFA_NUMERIC( 2, "PIN SIZE" ), 093 new IFA_NUMERIC( 16, "OPTIONS" ), 094 new IFA_NUMERIC( 6, "ISSUER POST DATE" ), 095 new IFA_NUMERIC( 38, "SOURCE/TARGET ACCOUNT NUMBERS" ), 096 new IFA_NUMERIC( 15, "PREAUTHORIZATION" ), 097 new IFA_LLLCHAR( 382, "ADDITIONAL DATA" ), 098 new IFA_BINARY( 0, "UNUSED" ), 099 new IFA_FLLCHAR( 39, "TRACK II DATA" ), 100 new IFA_BINARY( 0, "UNUSED" ), 101 new IFA_BINARY( 0, "UNUSED" ) 102 }; 103 104 public X92Packager() { 105 super(); 106 setFieldPackager(fld); 107 } 108 /** 109 * @return suitable ISOFieldPackager for Bitmap 110 */ 111 protected ISOFieldPackager getBitMapfieldPackager() { 112 return bitMapPackager; 113 } 114 /** 115 * Although field 1 is not a Bitmap ANSI X9.2 do have 116 * a Bitmap field that have to be packed/unpacked 117 * @return true 118 */ 119 protected boolean emitBitMap () { 120 return true; 121 } 122 123 /** 124 * @return 64 for ANSI X9.2 125 */ 126 protected int getMaxValidField() { 127 return 64; 128 } 129}