Beispiel #1
0
        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);
        }
Beispiel #2
0
 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");
         }
     }
 }