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