Una de las partes mas complicadas del ISO 8583 es el Mapa de Bits, en el artículo anterior vimos como crear un mensaje sencillo y una breve explicación sobre que es el Mapa de Bits.
Recordandote un poco, el Mapa de Bits es una cadena en hexadecimal que nos indica cuales de los 128 campos que según el standart se pueden usar vienen en el mensaje, pero como en un mapa de bits solo entran 64 elementos, existe un segundo e incluso un tercer mapa de bits, este último no se usa.
Como sabemos si el segundo mapa de bits viene o no viene, es sencillo, al pasar el primer mapa de bits a binario, el primer elemento de la cadena binaria debe ser 1, si es 0, entonces no viene un segundo mapa de bits y solo vienen elementos del 1 al 64.
jPOS maneja esto de manera muy transparente y no tienes que hacer practicamente nada para generarlos, mira el siguiente ejemplo.
ISOMsg message = new ISOMsg(); message.setMTI("200"); message.set("2", "1518674684515231321"); message.set("3", "140000"); message.set("4", "000000100000"); message.set("7", "1219171316"); message.set("11", "058169"); message.set("12", "111316"); message.set("13", "1254"); message.set("14", "0901"); message.set("17", "3566"); message.set("22", "010"); message.set("32", "062890000"); message.set("37", "1565646656"); message.set("41", "MJDCAJ02 "); message.set("42", "CUSCATLAN "); message.set("43", "CUSCATLAN DF MX"); message.set("48", "044030517 "); message.set("49", "558"); message.set("55", "003818"); message.set("60", "0120720BCRT+000"); message.set("61", "0130000PRO10000P"); message.set("62", "006008564"); message.set("100", "06288000"); message.set("120", "033MOREL -CAJA- "); GenericPackager packager = new GenericPackager("src/packager/base24.xml"); message.setPackager(packager); System.out.println("Mensaje Empaquetado->"+new String(message.pack()));
Resultado Empaquetado
0200F23C840108E1821C00000000100001001915186746845152313211400000000001000001219171316058169111316125409013566010090628900001565646656 MJDCAJ02 CUSCTLAN CUSCTLAN DF MX 047044030517 5580060038180150120720BCRT+0000160130000PRO10000P0090060085640806288000033033MOREL -CAJA-
Si te fijas, el primer elemento es el MTI 0200, y el segundo elemento es el mapa de bits F23C840108E1821C y como tenemos elementos arriba del 64, entonces tambien existe un mapa de bits secundario que seria 000000001000010019.
En resumen, jPOS se encarga de agregar a tu trama los mapas de bits, de manera transparente para el programador y no debes preocuparte por generarlo tu, el framework de jPOS lo hace por ti.


