예제 #1
0
 private void ThreadAPP()
 {
     try
     {
         Util.LOGENTRADA();
         this.SocketWork      = new SocketConvey();
         this.SocketWork.port = int.Parse(GlobalVar.SocketPort);
         this.AtualizaTela("Socket Iniciado - Porta :" + GlobalVar.SocketPort);
         this.SocketWork.start();
         Util.LOGSAIDA();
     }
     catch (System.Exception ex)
     {
         ProcessException(ex);
     }
 }
        public void RecebeRespondeTransacao()
        {
            Util.LOGENTRADA();
            Util.LOGCHECK("Esperando Conexões....");
            ++GlobalVar.numThreads;
            TcpClient     client = new TcpClient();
            NetworkStream stream = (NetworkStream)null;

            this.esperaConectar(ref client, ref stream);
            if (!GlobalVar.finalizar)
            {
                this.workThread2[GlobalVar.numThreads] = new Thread(new ThreadStart(this.RecebeRespondeTransacao));
                this.workThread2[GlobalVar.numThreads].Start();
            }
            bool flag = true;

            do
            {
                if (GlobalVar.finalizar)
                {
                    flag = false;
                }
                string str1 = this.esperaDados(ref client, ref stream);
                if (!GlobalVar.finalizar)
                {
                    if (str1 != null)
                    {
                        if (str1.StartsWith("?"))
                        {
                            str1 = str1.Substring(2);
                        }

                        if (str1.Length == 0)
                        {
                            Util.LOGCHECK("Encerrada Conexão");
                        }
                        else if (str1.Length < 20)
                        {
                            GlobalVar.frmPrincipal.AtualizaTela("Registro recebido invalido");
                            Util.LOGCHECK("Registro recebido invalido - muito pequeno");
                            Util.LOGDADOS(str1);
                        }
                        else if (str1.Substring(0, 4) != "0200" && str1.Substring(0, 4) != "0202" && str1.Substring(0, 4) != "0400" && str1.Substring(0, 4) != "0420")
                        {
                            GlobalVar.frmPrincipal.AtualizaTela("Registro recebido não formato ISO8583 esperado  - Ignorado");
                            Util.LOGCHECK("Registro recebido não formato ISO8583 esperado - Ignorado");
                            Util.LOGDADOS(str1);
                        }
                        else
                        {
                            ISO8583 regIso = new ISO8583(str1);
                            this.logISO(ref regIso);
                            if (regIso.erro)
                            {
                                GlobalVar.frmPrincipal.AtualizaTela("Registro ISO com erro");
                                Util.LOGCHECK("Registro ISO com erro");
                            }
                            else
                            {
                                frmMain  frmPrincipal = GlobalVar.frmPrincipal;
                                object[] objArray1    = new object[6];
                                objArray1[0] = (object)"Registro ISO Recebido: ";
                                object[] objArray2 = objArray1;
                                int      index1    = 1;
                                DateTime now       = DateTime.Now;
                                // ISSUE: variable of a boxed type
                                var hour = (ValueType)now.Hour;
                                objArray2[index1] = (object)hour;
                                objArray1[2]      = (object)":";
                                object[] objArray3 = objArray1;
                                int      index2    = 3;
                                now = DateTime.Now;
                                // ISSUE: variable of a boxed type
                                var minute = (ValueType)now.Minute;
                                objArray3[index2] = (object)minute;
                                objArray1[4]      = (object)":";
                                object[] objArray4 = objArray1;
                                int      index3    = 5;
                                now = DateTime.Now;
                                // ISSUE: variable of a boxed type
                                var second = (ValueType)now.Second;
                                objArray4[index3] = (object)second;
                                string t = string.Concat(objArray1);
                                frmPrincipal.AtualizaTela(t);
                                GlobalVar.frmPrincipal.AtualizaTela("Empresa: " + regIso.codLoja + " terminal: " + regIso.terminal + " tipo: " + str1.Substring(0, 4));
                                string  str2;
                                ISO8583 isoRegistro;
                                if (str1.Substring(0, 4) == "0200" && (regIso.codProcessamento == "002000" || regIso.codProcessamento == "002800"))
                                {
                                    #region - 0200 -

                                    str2 = "";
                                    string registro1 = !(regIso.codProcessamento == "002000") ? this.montaVendaCEparcelada(ref regIso) : this.montaVendaCE(regIso);
                                    Socket s         = SocketConvey.connectSocket(GlobalVar.SocketIPCE, int.Parse(GlobalVar.SocketPortCE));
                                    if (s == null)
                                    {
                                        Util.LOGCHECK("Conexao com Servidor FALHOU");
                                        Util.LOGSAIDA();
                                        return;
                                    }
                                    this.socketEnvia(s, registro1);
                                    string str3 = this.socketRecebe(s);
                                    isoRegistro             = new ISO8583();
                                    isoRegistro.codResposta = str3.Substring(2, 2);
                                    if (regIso.codProcessamento != "002000")
                                    {
                                        isoRegistro.bit63 = regIso.bit62;
                                    }
                                    isoRegistro.bit127           = "000" + str3.Substring(7, 6);
                                    isoRegistro.nsuOrigem        = regIso.nsuOrigem;
                                    isoRegistro.codProcessamento = regIso.codProcessamento;
                                    isoRegistro.codigo           = "0210";
                                    isoRegistro.valor            = regIso.valor;
                                    isoRegistro.codResposta      = str3.Substring(2, 2);
                                    isoRegistro.terminal         = regIso.terminal;
                                    isoRegistro.codLoja          = regIso.codLoja;
                                    string str4;
                                    string str5;
                                    string str6;
                                    if (regIso.trilha2.Trim().Length == 0)
                                    {
                                        str4 = "999999999999999999999999999";
                                        str5 = "999999";
                                        str6 = "999999";
                                    }
                                    else if (regIso.trilha2.Trim().Length == 27)
                                    {
                                        str4 = regIso.trilha2.Trim();
                                        str5 = regIso.trilha2.Trim().Substring(6, 6);
                                        str6 = regIso.trilha2.Trim().Substring(12, 6);
                                    }
                                    else
                                    {
                                        str5 = regIso.trilha2.Substring(17, 6);
                                        str6 = regIso.trilha2.Substring(23, 6);
                                        str4 = ("999999" + str5 + str6 + regIso.trilha2.Substring(29, 3)).PadLeft(27, '0');
                                    }
                                    isoRegistro.bit62 = !(str3.Substring(2, 2) == "00") ? str3.Substring(73, 20) : str5 + str6 + str4.Substring(18, 3) + str3.Substring(27, 40);
                                    string registro2 = isoRegistro.registro;
                                    this.logISO(ref isoRegistro);
                                    this.enviaDados(registro2, stream);

                                    #endregion
                                }
                                else if (str1.Substring(0, 4) == "0202")
                                {
                                    #region - 0202 -

                                    GlobalVar.frmPrincipal.AtualizaTela("Registro ISO Recebido - Confirmacao ");
                                    string registro = this.montaConfirmacaoCE(regIso);
                                    Socket s        = SocketConvey.connectSocket(GlobalVar.SocketIPCE, int.Parse(GlobalVar.SocketPortCE));
                                    if (s == null)
                                    {
                                        Util.LOGCHECK("Conexao com Servidor FALHOU");
                                        Util.LOGSAIDA();
                                    }
                                    else
                                    {
                                        this.socketEnvia(s, registro);
                                    }

                                    #endregion
                                }
                                else if (str1.Substring(0, 4) == "0400" || str1.Substring(0, 4) == "0420")
                                {
                                    #region - 0400 -

                                    str2 = "";
                                    string str3;
                                    string registro1;
                                    if (str1.Substring(0, 4) == "0400")
                                    {
                                        str3      = "0410";
                                        registro1 = this.montaCancelamento(regIso, "012345678901234567890123456");
                                    }
                                    else
                                    {
                                        str3      = "0430";
                                        registro1 = this.montaDesfazimento(regIso);
                                    }
                                    Socket s = SocketConvey.connectSocket(GlobalVar.SocketIPCE, int.Parse(GlobalVar.SocketPortCE));
                                    if (s == null)
                                    {
                                        Util.LOGCHECK("Conexao com Servidor FALHOU");
                                        Util.LOGSAIDA();
                                        return;
                                    }
                                    this.socketEnvia(s, registro1);
                                    string str4 = this.socketRecebe(s);
                                    isoRegistro                  = new ISO8583();
                                    isoRegistro.codResposta      = str4.Substring(2, 2);
                                    isoRegistro.bit127           = "000" + str4.Substring(21, 6);
                                    isoRegistro.nsuOrigem        = regIso.nsuOrigem;
                                    isoRegistro.codProcessamento = regIso.codProcessamento;
                                    isoRegistro.codigo           = str3;
                                    isoRegistro.codLoja          = regIso.codLoja;
                                    isoRegistro.terminal         = regIso.terminal;
                                    isoRegistro.bit62            = !(str1.Substring(0, 4) == "0400") ? str4.Substring(7, 6) + regIso.valor : regIso.bit125.Substring(3, 6) + regIso.valor;
                                    string registro2 = isoRegistro.registro;
                                    Util.LOGDADOS("RESPOSTA ISO = " + registro2);
                                    this.logISO(ref isoRegistro);
                                    this.enviaDados(registro2, stream);

                                    #endregion
                                }
                            }
                        }
                    }
                }
                else
                {
                    goto label_6;
                }
            }while (flag);
            goto label_40;
label_6:
            return;

label_40:
            this.closeCliente(client);
            Util.LOGSAIDA();
        }