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 * EuroPay packager 026 * @author Eoin Flood 027 * @version $Revision$ $Date$ 028 * @see ISOPackager 029 * @see ISOBasePackager 030 * @see ISOComponent 031 */ 032public class EuroPackager extends ISOBasePackager { 033 protected ISOPackager f48Packager = new Euro48Packager(); 034 protected ISOFieldPackager fld[] = { 035 /*000*/ new IFA_NUMERIC ( 4, "MESSAGE TYPE INDICATOR"), 036 /*001*/ new IFB_BITMAP ( 16, "BIT MAP"), 037 /*002*/ new IFA_LLNUM ( 19, "PAN - PRIMARY ACCOUNT NUMBER"), 038 /*003*/ new IFA_NUMERIC ( 6, "PROCESSING CODE"), 039 /*004*/ new IFA_NUMERIC ( 12, "AMOUNT, TRANSACTION"), 040 /*005*/ new IFA_NUMERIC ( 12, "AMOUNT, SETTLEMENT"), 041 /*006*/ new IFA_NUMERIC ( 12, "AMOUNT, CARDHOLDER BILLING"), 042 /*007*/ new IFA_NUMERIC ( 10, "TRANSMISSION DATE AND TIME"), 043 /*008*/ new IFA_NUMERIC ( 8, "AMOUNT, CARDHOLDER BILLING FEE"), 044 /*009*/ new IFA_NUMERIC ( 8, "CONVERSION RATE, SETTLEMENT"), 045 /*010*/ new IFA_NUMERIC ( 8, "CONVERSION RATE, CARDHOLDER BILLING"), 046 /*011*/ new IFA_NUMERIC ( 6, "SYSTEM TRACE AUDIT NUMBER"), 047 /*012*/ new IFA_NUMERIC ( 6, "TIME, LOCAL TRANSACTION"), 048 /*013*/ new IFA_NUMERIC ( 4, "DATE, LOCAL TRANSACTION"), 049 /*014*/ new IFA_NUMERIC ( 4, "DATE, EXPIRATION"), 050 /*015*/ new IFA_NUMERIC ( 4, "DATE, SETTLEMENT"), 051 /*016*/ new IFA_NUMERIC ( 4, "DATE, CONVERSION"), 052 /*017*/ new IFA_NUMERIC ( 4, "DATE, CAPTURE"), 053 /*018*/ new IFA_NUMERIC ( 4, "MERCHANTS TYPE"), 054 /*019*/ new IFA_NUMERIC ( 3, "ACQUIRING INSTITUTION COUNTRY CODE"), 055 /*020*/ new IFA_NUMERIC ( 3, "PAN EXTENDED COUNTRY CODE"), 056 /*021*/ new IFA_NUMERIC ( 3, "FORWARDING INSTITUTION COUNTRY CODE"), 057 /*022*/ new IFA_NUMERIC ( 3, "POINT OF SERVICE ENTRY MODE"), 058 /*023*/ new IFA_NUMERIC ( 3, "CARD SEQUENCE NUMBER"), 059 /*024*/ new IFA_NUMERIC ( 3, "NETWORK INTERNATIONAL IDENTIFIEER"), 060 /*025*/ new IFA_NUMERIC ( 2, "POINT OF SERVICE CONDITION CODE"), 061 /*026*/ new IFA_NUMERIC ( 2, "POINT OF SERVICE PIN CAPTURE CODE"), 062 /*027*/ new IFA_NUMERIC ( 1, "AUTHORIZATION IDENTIFICATION RESP LEN"), 063 /*028*/ new IFA_AMOUNT ( 9, "AMOUNT, TRANSACTION FEE"), 064 /*029*/ new IFA_AMOUNT ( 9, "AMOUNT, SETTLEMENT FEE"), 065 /*030*/ new IFA_AMOUNT ( 9, "AMOUNT, TRANSACTION PROCESSING FEE"), 066 /*031*/ new IFA_AMOUNT ( 9, "AMOUNT, SETTLEMENT PROCESSING FEE"), 067 /*032*/ new IFA_LLNUM ( 11, "ACQUIRING INSTITUTION IDENT CODE"), 068 /*033*/ new IFA_LLNUM ( 11, "FORWARDING INSTITUTION IDENT CODE"), 069 /*034*/ new IFA_LLCHAR ( 28, "PAN EXTENDED"), 070 /*035*/ new IFA_LLNUM ( 37, "TRACK 2 DATA"), 071 /*036*/ new IFA_LLLCHAR (104, "TRACK 3 DATA"), 072 /*037*/ new IF_CHAR ( 12, "RETRIEVAL REFERENCE NUMBER"), 073 /*038*/ new IF_CHAR ( 6, "AUTHORIZATION IDENTIFICATION RESPONSE"), 074 /*039*/ new IF_CHAR ( 2, "RESPONSE CODE"), 075 /*040*/ new IF_CHAR ( 3, "SERVICE RESTRICTION CODE"), 076 /*041*/ new IF_CHAR ( 8, "CARD ACCEPTOR TERMINAL IDENTIFICACION"), 077 /*042*/ new IF_CHAR ( 15, "CARD ACCEPTOR IDENTIFICATION CODE" ), 078 /*043*/ new IF_CHAR ( 40, "CARD ACCEPTOR NAME/LOCATION"), 079 /*044*/ new IFA_LLCHAR ( 25, "ADITIONAL RESPONSE DATA"), 080 /*045*/ new IFA_LLCHAR ( 76, "TRACK 1 DATA"), 081 /*046*/ new IFA_LLLCHAR (999, "ADITIONAL DATA - ISO"), 082 /*047*/ new IFA_LLLCHAR (999, "ADITIONAL DATA - NATIONAL"), 083 /*048*/ new ISOMsgFieldPackager( 084 new IFA_LLLBINARY (999, "EUROPAY FIELD 48"), 085 f48Packager 086 ), 087 /*049*/ new IF_CHAR ( 3, "CURRENCY CODE, TRANSACTION"), 088 /*050*/ new IF_CHAR ( 3, "CURRENCY CODE, SETTLEMENT"), 089 /*051*/ new IF_CHAR ( 3, "CURRENCY CODE, CARDHOLDER BILLING" ), 090 /*052*/ new IFA_BINARY ( 8, "PIN DATA" ), 091 /*053*/ new IFA_NUMERIC ( 16, "SECURITY RELATED CONTROL INFORMATION"), 092 /*054*/ new IFA_LLLCHAR (120, "ADDITIONAL AMOUNTS"), 093 /*055*/ new IFA_LLLCHAR (999, "RESERVED ISO"), 094 /*056*/ new IFA_LLLCHAR (999, "RESERVED ISO"), 095 /*057*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 096 /*058*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 097 /*059*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 098 /*060*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 099 /*061*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 100 /*062*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 101 /*063*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 102 /*064*/ new IFA_BINARY ( 8, "MESSAGE AUTHENTICATION CODE FIELD"), 103 /*065*/ new IFA_BINARY ( 8, "BITMAP, EXTENDED"), 104 /*066*/ new IFA_NUMERIC ( 1, "SETTLEMENT CODE"), 105 /*067*/ new IFA_NUMERIC ( 2, "EXTENDED PAYMENT CODE"), 106 /*068*/ new IFA_NUMERIC ( 3, "RECEIVING INSTITUTION COUNTRY CODE"), 107 /*069*/ new IFA_NUMERIC ( 3, "SETTLEMENT INSTITUTION COUNTRY CODE"), 108 /*070*/ new IFA_NUMERIC ( 3, "NETWORK MANAGEMENT INFORMATION CODE"), 109 /*071*/ new IFA_NUMERIC ( 4, "MESSAGE NUMBER"), 110 /*072*/ new IFA_NUMERIC ( 4, "MESSAGE NUMBER LAST"), 111 /*073*/ new IFA_NUMERIC ( 6, "DATE ACTION"), 112 /*074*/ new IFA_NUMERIC ( 10, "CREDITS NUMBER"), 113 /*075*/ new IFA_NUMERIC ( 10, "CREDITS REVERSAL NUMBER"), 114 /*076*/ new IFA_NUMERIC ( 10, "DEBITS NUMBER"), 115 /*077*/ new IFA_NUMERIC ( 10, "DEBITS REVERSAL NUMBER"), 116 /*078*/ new IFA_NUMERIC ( 10, "TRANSFER NUMBER"), 117 /*079*/ new IFA_NUMERIC ( 10, "TRANSFER REVERSAL NUMBER"), 118 /*080*/ new IFA_NUMERIC ( 10, "INQUIRIES NUMBER"), 119 /*081*/ new IFA_NUMERIC ( 10, "AUTHORIZATION NUMBER"), 120 /*082*/ new IFA_NUMERIC ( 12, "CREDITS, PROCESSING FEE AMOUNT"), 121 /*083*/ new IFA_NUMERIC ( 12, "CREDITS, TRANSACTION FEE AMOUNT"), 122 /*084*/ new IFA_NUMERIC ( 12, "DEBITS, PROCESSING FEE AMOUNT"), 123 /*085*/ new IFA_NUMERIC ( 12, "DEBITS, TRANSACTION FEE AMOUNT"), 124 /*086*/ new IFA_NUMERIC ( 16, "CREDITS, AMOUNT"), 125 /*087*/ new IFA_NUMERIC ( 16, "CREDITS, REVERSAL AMOUNT"), 126 /*088*/ new IFA_NUMERIC ( 16, "DEBITS, AMOUNT"), 127 /*089*/ new IFA_NUMERIC ( 16, "DEBITS, REVERSAL AMOUNT"), 128 /*090*/ new IFA_NUMERIC ( 42, "ORIGINAL DATA ELEMENTS"), 129 /*091*/ new IF_CHAR ( 1, "FILE UPDATE CODE"), 130 /*092*/ new IF_CHAR ( 2, "FILE SECURITY CODE"), 131 /*093*/ new IF_CHAR ( 5, "RESPONSE INDICATOR"), 132 /*094*/ new IF_CHAR ( 7, "SERVICE INDICATOR"), 133 /*095*/ new IF_CHAR ( 42, "REPLACEMENT AMOUNTS"), 134 /*096*/ new IFA_BINARY ( 8, "MESSAGE SECURITY CODE"), 135 /*097*/ new IFA_AMOUNT ( 17, "AMOUNT, NET SETTLEMENT"), 136 /*098*/ new IF_CHAR ( 25, "PAYEE"), 137 /*099*/ new IFA_LLNUM ( 11, "SETTLEMENT INSTITUTION IDENT CODE"), 138 /*100*/ new IFA_LLNUM ( 11, "RECEIVING INSTITUTION IDENT CODE"), 139 /*101*/ new IFA_LLCHAR ( 17, "FILE NAME"), 140 /*102*/ new IFA_LLCHAR ( 28, "ACCOUNT IDENTIFICATION 1"), 141 /*103*/ new IFA_LLCHAR ( 28, "ACCOUNT IDENTIFICATION 2"), 142 /*104*/ new IFA_LLLCHAR (100, "TRANSACTION DESCRIPTION"), 143 /*105*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 144 /*106*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 145 /*107*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 146 /*108*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 147 /*109*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 148 /*110*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 149 /*111*/ new IFA_LLLCHAR (999, "RESERVED ISO USE"), 150 /*112*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 151 /*113*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 152 /*114*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE" ), 153 /*115*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 154 /*116*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE" ), 155 /*117*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 156 /*118*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 157 /*119*/ new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 158 /*120*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 159 /*121*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 160 /*122*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 161 /*123*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 162 /*124*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 163 /*125*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 164 /*126*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 165 /*127*/ new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 166 /*128*/ new IFA_LLLCHAR (999, "MAC 2") 167 }; 168 169 public EuroPackager () { 170 super(); 171 setFieldPackager(this.fld); 172 } 173 174 public void setLogger (Logger logger, String realm) { 175 this.logger = logger; 176 this.realm = realm; 177 // f48Packager.setLogger (logger, realm + ".field-48"); 178 } 179 180 protected static class Euro48Packager extends EuroSubFieldPackager 181 { 182 // EuroPay refers to the message subfields as 183 // Private Data Subelements (PDS) 184 private ISOFieldPackager fld48[] = 185 { 186 new IF_CHAR (4, "PLACEHOLDER"), 187 new IFEP_LLCHAR (18, "Field 48 - PDS01"), 188 new IFEP_LLCHAR (4, "Field 48 - PDS02"), 189 new IFEP_LLCHAR (4, "Field 48 - PDS03"), 190 new IFEP_LLCHAR (4, "Field 48 - PDS04"), 191 new IFEP_LLCHAR (98, "Field 48 - PDS05"), 192 new IFEP_LLCHAR (4, "Field 48 - PDS06"), 193 new IFEP_LLCHAR (4, "Field 48 - PDS07"), 194 new IFEP_LLCHAR (4, "Field 48 - PDS08"), 195 new IFEP_LLCHAR (0, ""), 196 new IFEP_LLCHAR (0, ""), 197 new IFEP_LLCHAR (0, ""), 198 new IFEP_LLCHAR (0, ""), 199 new IFEP_LLCHAR (0, ""), 200 new IFEP_LLCHAR (0, ""), 201 new IFEP_LLCHAR (0, ""), 202 new IFEP_LLCHAR (0, ""), 203 new IFEP_LLCHAR (0, ""), 204 new IFEP_LLCHAR (0, ""), 205 new IFEP_LLCHAR (0, ""), 206 new IFEP_LLCHAR (3, "Field 48 - PDS20"), 207 new IFEP_LLCHAR (0, ""), 208 new IFEP_LLCHAR (0, ""), 209 new IFEP_LLCHAR (0, ""), 210 new IFEP_LLCHAR (0, ""), 211 new IFEP_LLCHAR (0, ""), 212 new IFEP_LLCHAR (0, ""), 213 new IFEP_LLCHAR (0, ""), 214 new IFEP_LLCHAR (0, ""), 215 new IFEP_LLCHAR (0, ""), 216 new IFEP_LLCHAR (0, ""), 217 new IFEP_LLCHAR (0, ""), 218 new IFEP_LLCHAR (0, ""), 219 new IFEP_LLCHAR (0, ""), 220 new IFEP_LLCHAR (0, ""), 221 new IFEP_LLCHAR (0, ""), 222 new IFEP_LLCHAR (0, ""), 223 new IFEP_LLCHAR (0, ""), 224 new IFEP_LLCHAR (0, ""), 225 new IFEP_LLCHAR (0, ""), 226 new IFEP_LLCHAR (42, "Field 48 - PDS40"), 227 new IFEP_LLCHAR (0, ""), 228 new IFEP_LLCHAR (4, "Field 48 - PDS42"), 229 new IFEP_LLCHAR (0, ""), 230 new IFEP_LLCHAR (0, ""), 231 new IFEP_LLCHAR (0, ""), 232 new IFEP_LLCHAR (0, ""), 233 new IFEP_LLCHAR (0, ""), 234 new IFEP_LLCHAR (0, ""), 235 new IFEP_LLCHAR (0, ""), 236 new IFEP_LLCHAR (0, ""), 237 new IFEP_LLCHAR (0, ""), 238 new IFEP_LLCHAR (0, ""), 239 new IFEP_LLCHAR (0, ""), 240 new IFEP_LLCHAR (0, ""), 241 new IFEP_LLCHAR (0, ""), 242 new IFEP_LLCHAR (0, ""), 243 new IFEP_LLCHAR (0, ""), 244 new IFEP_LLCHAR (0, ""), 245 new IFEP_LLCHAR (0, ""), 246 new IFEP_LLCHAR (0, ""), 247 new IFEP_LLCHAR (0, ""), 248 new IFEP_LLCHAR (0, ""), 249 new IFEP_LLCHAR (0, ""), 250 new IFEP_LLCHAR (0, ""), 251 new IFEP_LLCHAR (0, ""), 252 new IFEP_LLCHAR (0, ""), 253 new IFEP_LLCHAR (0, ""), 254 new IFEP_LLCHAR (0, ""), 255 new IFEP_LLCHAR (0, ""), 256 new IFEP_LLCHAR (0, ""), 257 new IFEP_LLCHAR (0, ""), 258 new IFEP_LLCHAR (0, ""), 259 new IFEP_LLCHAR (0, ""), 260 new IFEP_LLCHAR (0, ""), 261 new IFEP_LLCHAR (0, ""), 262 new IFEP_LLCHAR (0, ""), 263 new IFEP_LLCHAR (0, ""), 264 new IFEP_LLCHAR (0, ""), 265 new IFEP_LLCHAR (0, ""), 266 new IFEP_LLCHAR (0, ""), 267 new IFEP_LLCHAR (0, ""), 268 new IFEP_LLCHAR (0, ""), 269 new IFEP_LLCHAR (0, ""), 270 new IFEP_LLCHAR (0, ""), 271 new IFEP_LLCHAR (0, ""), 272 new IFEP_LLCHAR (0, ""), 273 new IFEP_LLCHAR (3, "Field 48 - PDS87"), 274 new IFEP_LLCHAR (3, "Field 48 - PDS88"), 275 new IFEP_LLCHAR (3, "Field 48 - PDS89"), 276 new IFEP_LLCHAR (0, ""), 277 new IFEP_LLCHAR (0, ""), 278 new IFEP_LLCHAR (5, "Field 48 - PDS92"), 279 }; 280 281 protected Euro48Packager () 282 { 283 super(); 284 setFieldPackager(fld48); 285 } 286 } 287}