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 * BASE24 Packager made from ISO 8583 v1987 ASCII Packager 025 * 026 * @author Mike Trank (mike@netcomsa.com) 027 * @version $Id$ 028 * @see ISOPackager 029 * @see ISOBasePackager 030 * @see ISOComponent 031 */ 032 /* 033 * This is almost the same as ISO87A packager, just a few of the 034 * field lengths are different, and I changed some stuff in the 035 * private fields from S-121 to S-128 that ACI BASE24 uses. 036 * There are notes where the comments are........ Mike. 037 */ 038public class BASE24Packager extends ISOBasePackager { 039 /** BASE-24 field packager definitions for fields 0-128. */ 040 protected ISOFieldPackager fld[] = { 041 new IFA_NUMERIC ( 4, "MESSAGE TYPE INDICATOR"), 042 new IFA_BITMAP ( 16, "BIT MAP"), 043 new IFA_LLNUM ( 19, "PAN - PRIMARY ACCOUNT NUMBER"), 044 new IFA_NUMERIC ( 6, "PROCESSING CODE"), 045 new IFA_NUMERIC ( 12, "AMOUNT, TRANSACTION"), 046 new IFA_NUMERIC ( 12, "AMOUNT, SETTLEMENT"), 047 new IFA_NUMERIC ( 12, "AMOUNT, CARDHOLDER BILLING"), 048 new IFA_NUMERIC ( 10, "TRANSMISSION DATE AND TIME"), 049 new IFA_NUMERIC ( 8, "AMOUNT, CARDHOLDER BILLING FEE"), 050 new IFA_NUMERIC ( 8, "CONVERSION RATE, SETTLEMENT"), 051 new IFA_NUMERIC ( 8, "CONVERSION RATE, CARDHOLDER BILLING"), 052 new IFA_NUMERIC ( 6, "SYSTEM TRACE AUDIT NUMBER"), 053 new IFA_NUMERIC ( 6, "TIME, LOCAL TRANSACTION"), 054 new IFA_NUMERIC ( 4, "DATE, LOCAL TRANSACTION"), 055 new IFA_NUMERIC ( 4, "DATE, EXPIRATION"), 056 new IFA_NUMERIC ( 4, "DATE, SETTLEMENT"), 057 new IFA_NUMERIC ( 4, "DATE, CONVERSION"), 058 new IFA_NUMERIC ( 4, "DATE, CAPTURE"), 059 new IFA_NUMERIC ( 4, "MERCHANTS TYPE"), 060 new IFA_NUMERIC ( 3, "ACQUIRING INSTITUTION COUNTRY CODE"), 061 new IFA_NUMERIC ( 3, "PAN EXTENDED COUNTRY CODE"), 062 new IFA_NUMERIC ( 3, "FORWARDING INSTITUTION COUNTRY CODE"), 063 new IFA_NUMERIC ( 3, "POINT OF SERVICE ENTRY MODE"), 064 new IFA_NUMERIC ( 3, "CARD SEQUENCE NUMBER"), 065 new IFA_NUMERIC ( 3, "NETWORK INTERNATIONAL IDENTIFIEER"), 066 new IFA_NUMERIC ( 2, "POINT OF SERVICE CONDITION CODE"), 067 new IFA_NUMERIC ( 2, "POINT OF SERVICE PIN CAPTURE CODE"), 068 new IFA_NUMERIC ( 1, "AUTHORIZATION IDENTIFICATION RESP LEN"), 069 new IFA_AMOUNT ( 9, "AMOUNT, TRANSACTION FEE"), 070 new IFA_AMOUNT ( 9, "AMOUNT, SETTLEMENT FEE"), 071 new IFA_AMOUNT ( 9, "AMOUNT, TRANSACTION PROCESSING FEE"), 072 new IFA_AMOUNT ( 9, "AMOUNT, SETTLEMENT PROCESSING FEE"), 073 new IFA_LLNUM ( 11, "ACQUIRING INSTITUTION IDENT CODE"), 074 new IFA_LLNUM ( 11, "FORWARDING INSTITUTION IDENT CODE"), 075 new IFA_LLCHAR ( 28, "PAN EXTENDED"), 076 new IFA_LLNUM ( 37, "TRACK 2 DATA"), 077 new IFA_LLLCHAR (104, "TRACK 3 DATA"), 078 new IF_CHAR ( 12, "RETRIEVAL REFERENCE NUMBER"), 079 new IF_CHAR ( 6, "AUTHORIZATION IDENTIFICATION RESPONSE"), 080 new IF_CHAR ( 2, "RESPONSE CODE"), 081 new IF_CHAR ( 3, "SERVICE RESTRICTION CODE"), 082// Mike changed the following field to 16 bytes from 8 in ISO87A 083 new IF_CHAR ( 16, "CARD ACCEPTOR TERMINAL IDENTIFICACION"), 084 new IF_CHAR ( 15, "CARD ACCEPTOR IDENTIFICATION CODE" ), 085 new IF_CHAR ( 40, "CARD ACCEPTOR NAME/LOCATION"), 086// Mike changed the folowing field to 27 from 25 in ISO87A 087 new IFA_LLCHAR ( 25, "ADITIONAL RESPONSE DATA"), 088 new IFA_LLCHAR ( 76, "TRACK 1 DATA"), 089 new IFA_LLLCHAR (999, "ADITIONAL DATA - ISO"), 090 new IFA_LLLCHAR (999, "ADITIONAL DATA - NATIONAL"), 091 new IFA_LLLCHAR (999, "ADITIONAL DATA - PRIVATE"), 092 new IF_CHAR ( 3, "CURRENCY CODE, TRANSACTION"), 093 new IF_CHAR ( 3, "CURRENCY CODE, SETTLEMENT"), 094 new IF_CHAR ( 3, "CURRENCY CODE, CARDHOLDER BILLING" ), 095 new IFA_BINARY ( 8, "PIN DATA" ), 096 new IFA_NUMERIC ( 16, "SECURITY RELATED CONTROL INFORMATION"), 097 new IFA_LLLCHAR (120, "ADDITIONAL AMOUNTS"), 098 new IFA_LLLCHAR (999, "RESERVED ISO"), 099 new IFA_LLLCHAR (999, "RESERVED ISO"), 100 new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 101 new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 102 new IFA_LLLCHAR (999, "RESERVED NATIONAL"), 103 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 104 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 105 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 106 new IFA_LLLCHAR (999, "RESERVED PRIVATE"), 107// mike changed the following to 16 from 8 in ISO87A 108 new IFA_BINARY ( 16, "MESSAGE AUTHENTICATION CODE FIELD"), 109 new IFA_BINARY ( 1, "BITMAP, EXTENDED"), 110 new IFA_NUMERIC ( 1, "SETTLEMENT CODE"), 111 new IFA_NUMERIC ( 2, "EXTENDED PAYMENT CODE"), 112 new IFA_NUMERIC ( 3, "RECEIVING INSTITUTION COUNTRY CODE"), 113 new IFA_NUMERIC ( 3, "SETTLEMENT INSTITUTION COUNTRY CODE"), 114 new IFA_NUMERIC ( 3, "NETWORK MANAGEMENT INFORMATION CODE"), 115 new IFA_NUMERIC ( 4, "MESSAGE NUMBER"), 116 new IFA_NUMERIC ( 4, "MESSAGE NUMBER LAST"), 117 new IFA_NUMERIC ( 6, "DATE ACTION"), 118 new IFA_NUMERIC ( 10, "CREDITS NUMBER"), 119 new IFA_NUMERIC ( 10, "CREDITS REVERSAL NUMBER"), 120 new IFA_NUMERIC ( 10, "DEBITS NUMBER"), 121 new IFA_NUMERIC ( 10, "DEBITS REVERSAL NUMBER"), 122 new IFA_NUMERIC ( 10, "TRANSFER NUMBER"), 123 new IFA_NUMERIC ( 10, "TRANSFER REVERSAL NUMBER"), 124 new IFA_NUMERIC ( 10, "INQUIRIES NUMBER"), 125 new IFA_NUMERIC ( 10, "AUTHORIZATION NUMBER"), 126 new IFA_NUMERIC ( 12, "CREDITS, PROCESSING FEE AMOUNT"), 127 new IFA_NUMERIC ( 12, "CREDITS, TRANSACTION FEE AMOUNT"), 128 new IFA_NUMERIC ( 12, "DEBITS, PROCESSING FEE AMOUNT"), 129 new IFA_NUMERIC ( 12, "DEBITS, TRANSACTION FEE AMOUNT"), 130 new IFA_NUMERIC ( 16, "CREDITS, AMOUNT"), 131 new IFA_NUMERIC ( 16, "CREDITS, REVERSAL AMOUNT"), 132 new IFA_NUMERIC ( 16, "DEBITS, AMOUNT"), 133 new IFA_NUMERIC ( 16, "DEBITS, REVERSAL AMOUNT"), 134 new IFA_NUMERIC ( 42, "ORIGINAL DATA ELEMENTS"), 135 new IF_CHAR ( 1, "FILE UPDATE CODE"), 136 new IF_CHAR ( 2, "FILE SECURITY CODE"), 137 new IF_CHAR ( 6, "RESPONSE INDICATOR"), 138 new IF_CHAR ( 7, "SERVICE INDICATOR"), 139 new IF_CHAR ( 42, "REPLACEMENT AMOUNTS"), 140 new IFA_BINARY ( 16, "MESSAGE SECURITY CODE"), 141 new IFA_AMOUNT ( 17, "AMOUNT, NET SETTLEMENT"), 142 new IF_CHAR ( 25, "PAYEE"), 143 new IFA_LLNUM ( 11, "SETTLEMENT INSTITUTION IDENT CODE"), 144 new IFA_LLNUM ( 11, "RECEIVING INSTITUTION IDENT CODE"), 145 new IFA_LLCHAR ( 17, "FILE NAME"), 146 new IFA_LLCHAR ( 28, "ACCOUNT IDENTIFICATION 1"), 147 new IFA_LLCHAR ( 28, "ACCOUNT IDENTIFICATION 2"), 148 new IFA_LLLCHAR (100, "TRANSACTION DESCRIPTION"), 149 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 150 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 151 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 152 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 153 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 154 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 155 new IFA_LLLCHAR (999, "RESERVED ISO USE"), 156 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 157 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 158 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE" ), 159 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 160 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE" ), 161 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 162 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 163 new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"), 164 new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"), 165 new IFA_LLLCHAR (23, "S-121 BASE24-POS AUTH INDICATORS"), 166/* S-122 is described inacurately ( or at least inconsistently ) in the 167 * Base 24book. It is described as a maximum 11-byte varible numeric 168 * field but it is actually maximum 14-bytes, taking into account 169 * the 3 digit field-width part. */ 170 new IFA_LLLNUM (14, "S-122 CARD ISSUER IDENTIFICATION CODE"), 171 new IFA_LLLCHAR (153, "S-123 CRYPTOGRAFIC SERVICE MESSAGE"), 172 new IFA_LLLCHAR (12, "S-124 DEPOSIT TYPE OR BATCH/SHIFT DATA"), 173 new IFA_LLLCHAR (15, "S-125 ATM ACCT INDICATOR OR POS SETTLEMENT DATA"), 174 new IFA_LLLCHAR (999, "S-126 ATM ADDIC. DATA OR POS PRE-AUTH/CHARGEBACK"), 175 new IFA_LLCHAR (99, "BASE24-POS User Data"), 176 new IFA_NUMERIC (16, "MAC 2") 177 }; 178 /** Creates BASE24Packager with the default BASE-24 field configuration. */ 179 public BASE24Packager() { 180 super(); 181 setFieldPackager(fld); 182 } 183}