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.


jPOS y el Echo Test 0800 | JotaDeveloper
on Jul 7th, 2009
@ 17:39:
[...] Standard ISO8583 y jPOS, del cual hemos hablado anteriormente en otras entradas, hemos hablado de la mensajeria utilizada para el intercambio de transacciones entre sistemas por medio de un flujo de comunicacion. Hoy le toca el turno a otro tipo de mensaje [...]
Paquetes genéricos en jPOS | JotaDeveloper
on Jul 30th, 2009
@ 9:24:
[...] empaquetado es una de las glorias de jPOS a mi parecer, hace un tiempo escribà como jPOS creaba el mapa de bits primario y sencudario. Mucha gente que inicia con jPOS cree (me incluyo yo en mis inicios) que nosotros debemos setear [...]
fernandoIsael
on Sep 29th, 2009
@ 19:17:
saludos,
estoy iniciando en el uso de jpos para un proyecto. la defincion del mensaje del host requiere un solo bitmap ya que se usan menos de 50 campo del iso8583, pero este bitmap primario se requiere que aparesca en binario de la siguiente forma
ejemplo, 0011000000100000010001011000000000100000110000001000000000001100 como puedo hacer en jpos para que el bitmap primario salga en forma binaria y no exagesimal, o si es correcto hacer esto en jpos ?
Gracias Anticipadas,
Isael
jpicado
on Sep 29th, 2009
@ 21:47:
Lo que tu quieres hacer, asumo, es enviar tu trama por un canal (o conexión) de forma binaria? me equivoco?
fernandoIsael
on Oct 1st, 2009
@ 5:59:
En el ejemplo el resultado empaquetado es el siguiente :
0200F23C840108E1821C00000000100001001915186746845152313211400000000001000001219171316058169111316125409013566010090628900001565646656 MJDCAJ02 CUSCTLAN CUSCTLAN DF MX 047044030517 5580060038180150120720BCRT+0000160130000PRO10000P0090060085640806288000033033MOREL -CAJA-
ahora que tal si yo deseo tener el resultado empaquetado de la forma siguiente para enviarlo al host:
poniendo los resultados exagesimal del bitmap en formato binario:
F23C840108E1821C = 0011000000100110010001011000000000100000110000001000000000001100 (ejemplo)
000000001000010019 = 0011000000100000010001011000000000100000110011001000000000000000 (ejemplo)
el resultado empaquetado entonces deberia ser como sigue:
02000011000000100110010001011000000000100000110000001000000000001100001100000010000001000101100000000010000011001100100000000000000015186746845152313211400000000001000001219171316058169111316125409013566010090628900001565646656 MJDCAJ02 CUSCTLAN CUSCTLAN DF MX 047044030517 5580060038180150120720BCRT+0000160130000PRO10000P0090060085640806288000033033MOREL -CAJA-
el bitmap primaria y el secundario estarian en su forma binaria.