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.*; 022import org.jpos.util.Logger; 023 024/* 025 * $Log$ 026 * Revision 1.6 2005/12/19 22:47:50 apr 027 * Applied changes suggested by Mladen in http://groups-beta.google.com/group/jpos-users/browse_thread/thread/e60807e917c8c170/e29a681592d63a2b#e29a681592d63a2b and confirmed by Murtuza and Jeff 028 * 029 * Revision 1.5 2003/10/13 10:34:16 apr 030 * Tabs expanded to 8 spaces 031 * 032 * Revision 1.4 2003/05/16 04:15:14 alwyns 033 * Import cleanups. 034 * 035 * Revision 1.3 2001/01/13 19:26:09 victor 036 * changed bitmap size to 16 037 * 038 * Revision 1.2 2000/11/02 12:09:18 apr 039 * Added license to every source file 040 * 041 * Revision 1.1 2000/04/16 22:12:33 apr 042 * New packagers location org.jpos.iso.packager 043 * 044 * Revision 1.6 2000/03/01 14:44:45 apr 045 * Changed package name to org.jpos 046 * 047 * Revision 1.5 2000/02/28 11:11:37 apr 048 * Added inner ISOMsg logging 049 * 050 * Revision 1.4 2000/02/27 14:28:05 apr 051 * PostPackager compatible with new jPOS ISOMsgFieldPackager 052 * Support for new Postillion version [Victor] 053 * 054 * Revision 1.3 1999/09/20 12:33:03 apr 055 * Removed external PostPrivatePackager - now Victor uses ISOMsgFieldPackager 056 * with inner PostPrivatePackager 057 * 058 */ 059 060/** 061 * ISO 8583 v1987 Packager for Postilion 062 * 063 * @author Victor A. Salaman <salaman@teknos.com> 064 * @version Id: PostPackager.java,v 1.9 1999/09/17 12:08:02 salaman Exp 065 * @see ISOPackager 066 * @see ISOBasePackager 067 * @see ISOComponent 068 */ 069 070public class PostPackager extends ISOBasePackager { 071 protected PostPrivatePackager p127 = new PostPrivatePackager(); 072 protected ISOFieldPackager fld[] = { 073 new IFA_NUMERIC ( 4, "MESSAGE TYPE INDICATOR"), 074 new IFB_BITMAP ( 16, "BIT MAP"), 075 new IFA_LLNUM ( 19, "PAN - PRIMARY ACCOUNT NUMBER"), 076 new IFA_NUMERIC ( 6, "PROCESSING CODE"), 077 new IFA_NUMERIC ( 12, "AMOUNT, TRANSACTION"), 078 new IFA_NUMERIC ( 12, "AMOUNT, SETTLEMENT"), 079 new IFA_NUMERIC ( 12, "AMOUNT, CARDHOLDER BILLING"), 080 new IFA_NUMERIC ( 10, "TRANSMISSION DATE AND TIME"), 081 new IFA_NUMERIC ( 8, "AMOUNT, CARDHOLDER BILLING FEE"), 082 new IFA_NUMERIC ( 8, "CONVERSION RATE, SETTLEMENT"), 083 new IFA_NUMERIC ( 8, "CONVERSION RATE, CARDHOLDER BILLING"), 084 new IFA_NUMERIC ( 6, "SYSTEM TRACE AUDIT NUMBER"), 085 new IFA_NUMERIC ( 6, "TIME, LOCAL TRANSACTION"), 086 new IFA_NUMERIC ( 4, "DATE, LOCAL TRANSACTION"), 087 new IFA_NUMERIC ( 4, "DATE, EXPIRATION"), 088 new IFA_NUMERIC ( 4, "DATE, SETTLEMENT"), 089 new IFA_NUMERIC ( 4, "DATE, CONVERSION"), 090 new IFA_NUMERIC ( 4, "DATE, CAPTURE"), 091 new IFA_NUMERIC ( 4, "MERCHANTS TYPE"), 092 new IFA_NUMERIC ( 3, "ACQUIRING INSTITUTION COUNTRY CODE"), 093 new IFA_NUMERIC ( 3, "PAN EXTENDED COUNTRY CODE"), 094 new IFA_NUMERIC ( 3, "FORWARDING INSTITUTION COUNTRY CODE"), 095 new IFA_NUMERIC ( 3, "POINT OF SERVICE ENTRY MODE"), 096 new IFA_NUMERIC ( 3, "CARD SEQUENCE NUMBER"), 097 new IFA_NUMERIC ( 3, "NETWORK INTERNATIONAL IDENTIFIEER"), 098 new IFA_NUMERIC ( 2, "POINT OF SERVICE CONDITION CODE"), 099 new IFA_NUMERIC ( 2, "POINT OF SERVICE PIN CAPTURE CODE"), 100 new IFA_NUMERIC ( 1, "AUTHORIZATION IDENTIFICATION RESP LEN"), 101 new IFA_AMOUNT ( 9, "AMOUNT, TRANSACTION FEE"), 102 new IFA_AMOUNT ( 9, "AMOUNT, SETTLEMENT FEE"), 103 new IFA_AMOUNT ( 9, "AMOUNT, TRANSACTION PROCESSING FEE"), 104 new IFA_AMOUNT ( 9, "AMOUNT, SETTLEMENT PROCESSING FEE"), 105 new IFA_LLNUM ( 11, "ACQUIRING INSTITUTION IDENT CODE"), 106 new IFA_LLNUM ( 11, "FORWARDING INSTITUTION IDENT CODE"), 107 new IFA_LLCHAR ( 28, "PAN EXTENDED"), 108 new IFA_LLNUM ( 37, "TRACK 2 DATA"), 109 new IFA_LLLCHAR (104, "TRACK 3 DATA"), 110 new IF_CHAR ( 12, "RETRIEVAL REFERENCE NUMBER"), 111 new IF_CHAR ( 6, "AUTHORIZATION IDENTIFICATION RESPONSE"), 112 new IF_CHAR ( 2, "RESPONSE CODE"), 113 new IF_CHAR ( 3, "SERVICE RESTRICTION CODE"), 114 new IF_CHAR ( 8, "CARD ACCEPTOR TERMINAL IDENTIFICACION"), 115 new IF_CHAR ( 15, "CARD ACCEPTOR IDENTIFICATION CODE" ), 116 new IF_CHAR ( 40, "CARD ACCEPTOR NAME/LOCATION"), 117 new IFA_LLCHAR ( 25, "ADITIONAL RESPONSE DATA"), 118 new IFA_LLCHAR ( 76, "TRACK 1 DATA"), 119 new IFA_LLLCHAR (999, "ADITIONAL DATA - ISO"), 120 new IFA_LLLCHAR (999, "ADITIONAL DATA - NATIONAL"), 121 new IFA_LLLCHAR (999, "ADITIONAL DATA - PRIVATE"), 122 new IF_CHAR ( 3, "CURRENCY CODE, TRANSACTION"), 123 new IF_CHAR ( 3, "CURRENCY CODE, SETTLEMENT"), 124 new IF_CHAR ( 3, "CURRENCY CODE, CARDHOLDER BILLING" ), 125 new IFB_BINARY ( 8, "PIN DATA" ), 126 new IFB_BINARY ( 48, "SECURITY RELATED CONTROL INFORMATION"), 127 new IFA_LLLCHAR (120, "ADDITIONAL AMOUNTS"), 128 new IFA_LLLCHAR (999, "RESERVED ISO"), 129 new IFA_LLLCHAR (999, "RESERVED ISO"), 130 new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 131 new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 132 new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 133 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 134 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 135 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 136 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 137 new IFA_BINARY ( 8, "MESSAGE AUTHENTICATION CODE FIELD"), 138 new IFA_BINARY ( 8, "BITMAP, EXTENDED"), 139 new IFA_NUMERIC ( 1, "SETTLEMENT CODE"), 140 new IFA_NUMERIC ( 2, "EXTENDED PAYMENT CODE"), 141 new IFA_NUMERIC ( 3, "RECEIVING INSTITUTION COUNTRY CODE"), 142 new IFA_NUMERIC ( 3, "SETTLEMENT INSTITUTION COUNTRY CODE"), 143 new IFA_NUMERIC ( 3, "NETWORK MANAGEMENT INFORMATION CODE"), 144 new IFA_NUMERIC ( 4, "MESSAGE NUMBER"), 145 new IFA_NUMERIC ( 4, "MESSAGE NUMBER LAST"), 146 new IFA_NUMERIC ( 6, "DATE ACTION"), 147 new IFA_NUMERIC ( 10, "CREDITS NUMBER"), 148 new IFA_NUMERIC ( 10, "CREDITS REVERSAL NUMBER"), 149 new IFA_NUMERIC ( 10, "DEBITS NUMBER"), 150 new IFA_NUMERIC ( 10, "DEBITS REVERSAL NUMBER"), 151 new IFA_NUMERIC ( 10, "TRANSFER NUMBER"), 152 new IFA_NUMERIC ( 10, "TRANSFER REVERSAL NUMBER"), 153 new IFA_NUMERIC ( 10, "INQUIRIES NUMBER"), 154 new IFA_NUMERIC ( 10, "AUTHORIZATION NUMBER"), 155 new IFA_NUMERIC ( 12, "CREDITS, PROCESSING FEE AMOUNT"), 156 new IFA_NUMERIC ( 12, "CREDITS, TRANSACTION FEE AMOUNT"), 157 new IFA_NUMERIC ( 12, "DEBITS, PROCESSING FEE AMOUNT"), 158 new IFA_NUMERIC ( 12, "DEBITS, TRANSACTION FEE AMOUNT"), 159 new IFA_NUMERIC ( 16, "CREDITS, AMOUNT"), 160 new IFA_NUMERIC ( 16, "CREDITS, REVERSAL AMOUNT"), 161 new IFA_NUMERIC ( 16, "DEBITS, AMOUNT"), 162 new IFA_NUMERIC ( 16, "DEBITS, REVERSAL AMOUNT"), 163 new IFA_NUMERIC ( 42, "ORIGINAL DATA ELEMENTS"), 164 new IF_CHAR ( 1, "FILE UPDATE CODE"), 165 new IF_CHAR ( 2, "FILE SECURITY CODE"), 166 new IF_CHAR ( 5, "RESPONSE INDICATOR"), 167 new IF_CHAR ( 7, "SERVICE INDICATOR"), 168 new IF_CHAR ( 42, "REPLACEMENT AMOUNTS"), 169 new IFA_BINARY ( 8, "MESSAGE SECURITY CODE"), 170 new IFA_AMOUNT ( 17, "AMOUNT, NET SETTLEMENT"), 171 new IF_CHAR ( 25, "PAYEE"), 172 new IFA_LLNUM ( 11, "SETTLEMENT INSTITUTION IDENT CODE"), 173 new IFA_LLNUM ( 11, "RECEIVING INSTITUTION IDENT CODE"), 174 new IFA_LLCHAR ( 17, "FILE NAME"), 175 new IFA_LLCHAR ( 28, "ACCOUNT IDENTIFICATION 1"), 176 new IFA_LLCHAR ( 28, "ACCOUNT IDENTIFICATION 2"), 177 new IFA_LLLCHAR (100, "TRANSACTION DESCRIPTION"), 178 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 179 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 180 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 181 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 182 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 183 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 184 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 185 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 186 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 187 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE" ), 188 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 189 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE" ), 190 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 191 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 192 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 193 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 194 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 195 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 196 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 197 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 198 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 199 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 200 new ISOMsgFieldPackager( 201 new IFA_LLLLLLBINARY (99999, "RESERVED PRIVATE USE"), 202 p127 203 ), 204 new IFA_LLLCHAR (999, "MAC 2") 205 }; 206 protected static class PostPrivatePackager extends ISOBasePackager 207 { 208 protected ISOFieldPackager fld127[] = 209 { 210 new IF_CHAR (0, "PLACEHOLDER"), 211 new IFB_BITMAP (8, "BITMAP"), 212 new IFA_LLCHAR (32, "SWITCH KEY"), 213 new IF_CHAR (48, "ROUTING INFORMATION"), 214 new IF_CHAR (22, "POS DATA"), 215 new IF_CHAR (73, "SERVICE STATION DATA"), 216 new IFA_NUMERIC (2, "AUTHORIZATION PROFILE"), 217 new IFA_LLCHAR (50, "CHECK DATA"), 218 new IFA_LLLCHAR (128, "RETENTION DATA"), 219 new IFA_LLLCHAR (255, "ADDITIONAL NODE DATA"), 220 new IFA_NUMERIC (3, "CVV2"), 221 new IFA_LLCHAR (32, "ORIGINAL KEY"), 222 new IFA_LLCHAR (25, "TERMINAL OWNDER"), 223 new IF_CHAR (17, "POS GEOGRAPHIC DATA"), 224 new IF_CHAR (8, "SPONSOR BANK"), 225 new IFA_LLCHAR (29, "AVS REQUEST"), 226 new IF_CHAR (1, "AVS RESPONSE"), 227 new IFA_LLCHAR (50, "CARDHOLDER INFORMATION"), 228 new IFA_LLCHAR (50, "VALIDATION DATA"), 229 new IF_CHAR (45, "BANK DETAILS"), 230 new IFA_NUMERIC (8, "AUTHORIZER DATE SETTLEMENT"), 231 new IFA_LLCHAR (12, "RECORD IDENTIFICATION"), 232 new IFA_LLLLLCHAR (99999, "STRUCTURED DATA"), 233 new IF_CHAR (253, "PAYEE NAME AND ADDRESS"), 234 new IFA_LLCHAR (28, "PAYER ACCOUNT INFORMATION"), 235 new IFA_LLLLCHAR(8000, "ICC DATA") 236 }; 237 238 protected PostPrivatePackager() 239 { super(); 240 setFieldPackager(fld127); 241 } 242 } 243 public PostPackager() { 244 super(); 245 setFieldPackager(fld); 246 } 247 public void setLogger (Logger logger, String realm) { 248 super.setLogger (logger, realm); 249 p127.setLogger (logger, realm + ".PostPrivatePackager"); 250 } 251}