private byte[] TransformaISOByte(Iso8583Message isoMSG, String sTPDU) { byte[] bIsoByte = null; byte[] bBuffer = isoMSG.GetBytes(); byte[] bHeader = UTILIDADES.Hex2Byte(sTPDU); int iTalla = bBuffer.Length + bHeader.Length; byte[] bTalla = UTILIDADES.Hex2Byte(Convert.ToString(iTalla, 16).PadLeft(4, '0')); bIsoByte = new byte[iTalla + 2]; Buffer.BlockCopy(bTalla, 0, bIsoByte, 0, bTalla.Length); Buffer.BlockCopy(bHeader, 0, bIsoByte, bTalla.Length, bHeader.Length); Buffer.BlockCopy(bBuffer, 0, bIsoByte, bTalla.Length + bHeader.Length, bBuffer.Length); return(bIsoByte); }
private void ejecucionPosteo() { try { int iLargoArchivo, iLargoBody; byte[] bArchivo, bBufferEnvio, bBufferRecive, bBody; ParserContext parserContext; if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Valida Ruta de Posteo", "LogEvent", "log"); } String _sRuta = UTILIDADES.AppPath(true) + "Saf\\"; String [] files = Directory.GetFiles(_sRuta, "*.saf"); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Optiene Archivos de Posteo", "LogEvent", "log"); } Iso8583Message isoMsgReq, isoMsgResp; Socket socket; Hashtable ISO; String resultado; foreach (String sFile in files) { try { resultado = ""; isoMsgReq = new Iso8583Message(); isoMsgReq.Formatter = _formato; bArchivo = UTILIDADES.Hex2Byte(UTILIDADES.F3DESDencriptarBloque(UTILIDADES.leerArchivo("", sFile), _sLlaveIzq, _sLlaveDer)); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Leer y decifra archivo:" + sFile, "LogEvent", "log"); } iLargoArchivo = bArchivo.Length; parserContext = new ParserContext(iLargoArchivo); parserContext.Initialize(); parserContext.ResizeBuffer(iLargoArchivo); parserContext.Write(bArchivo); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Convierte ISO", "LogEvent", "log"); } isoMsgReq = (Iso8583Message)isoMsgReq.Formatter.Parse(ref parserContext); isoMsgReq.MessageTypeIdentifier = 400; bBufferEnvio = TransformaISOByte(isoMsgReq, "6000081000"); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Inicia Socket", "LogEvent", "log"); } socket = InicializaSocket(); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Inicia Socket Terminado", "LogEvent", "log"); } socket.Send(bBufferEnvio); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Envio de Buffer", "LogEvent", "log"); } if (this._iGrabaLog == 1) { UTILIDADES.mensaje("OUTPUT DLL P: " + isoMsgReq.ToString(), "LogTracer", "log"); } socket.ReceiveTimeout = 10000; if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Set TimeOut: 10000", "LogEvent", "log"); } bBufferRecive = new byte[socket.ReceiveBufferSize]; socket.Receive(bBufferRecive); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Recibe Buffer", "LogEvent", "log"); } ISO = TransaformaIso(bBufferRecive); bBody = (byte[])ISO["Body"]; iLargoBody = bBody.Length; parserContext = new ParserContext(iLargoBody); parserContext.Initialize(); parserContext.ResizeBuffer(iLargoBody); parserContext.Write(bBody); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Convierte Buffer en ISO", "LogEvent", "log"); } isoMsgResp = (Iso8583Message)isoMsgReq.Formatter.Parse(ref parserContext); if (this._iGrabaLog == 1) { UTILIDADES.mensaje("INPUT DLL P: " + isoMsgResp.ToString(), "LogTracer", "log"); } resultado = ((Field)isoMsgResp.Fields[39]).Value.ToString(); if ((resultado.CompareTo("91") != 0) && ((resultado.CompareTo("27") != 0))) { if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Valida Respuesta ", "LogEvent", "log"); } File.Delete(sFile); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Elimina: " + sFile, "LogEvent", "log"); } } try { socket.Close(); if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("DEBUGP: " + "Cierra Socket ", "LogEvent", "log"); } } catch (Exception e) { if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("POSTEO: " + e.Message, "LogEvent", "log"); } } } catch (Exception e) { if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("POSTEO: " + e.Message, "LogEvent", "log"); } } } } catch (Exception e) { if (this._iGrabaMsg == 1) { UTILIDADES.mensaje("POSTEO: " + e.Message, "LogEvent", "log"); } } }