예제 #1
0
        public TRetConsStatServ ConsultaStatusWs(TConsStatServ consStatServ, X509Certificate2 cert)
        {
            XmlNode          strRetorno    = null;
            TRetConsStatServ retornoStatus = new TRetConsStatServ();

            C_WebService.ListaUrl listaURL = default(C_WebService.ListaUrl);
            listaURL = WsUrls.BuscaURL(consStatServ.cUF, consStatServ.tpAmb);

            try
            {
                StatusServico2.NfeStatusServico2 wsMsg = default(StatusServico2.NfeStatusServico2);
                StatusServico2.nfeCabecMsg       cab   = new StatusServico2.nfeCabecMsg();

                //UF E VERSÃO DO CABEÇALHO
                cab.cUF         = PegarCodigoUF(consStatServ.cUF);
                cab.versaoDados = consStatServ.versao;

                //CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
                wsMsg = new StatusServico2.NfeStatusServico2(listaURL.UrlNfeStatusServico);

                //ASSOCIA CABEÇALHO NFE
                wsMsg.nfeCabecMsgValue = cab;

                //DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
                wsMsg.Timeout = 100000;

                //ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
                wsMsg.ClientCertificates.Add(cert);

                //DEFINE PROTOCOLO USADO NA CONEXÃO
                //wsMsg.SoapVersion = SoapProtocolVersion.Soap12

                //CRIA UM NOVO DOCUMENTO XML
                XmlDocument retornoXML     = new XmlDocument();
                string      nomeArquivoEnv = _PastaLog + System.DateTime.Now.ToString("yyyyMMddTHHmmss") + " -ped-sta.xml";
                string      nomeArquivoRet = _PastaLog + System.DateTime.Now.ToString("yyyyMMddTHHmmss") + " -ret-sta.xml";

                XmlDocument dados = new XmlDocument();
                dados.LoadXml(Funcoes.RemoveNameSpaceFromXml(consStatServ.Serialize()));
                dados.Save(nomeArquivoEnv);

                //ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
                strRetorno = wsMsg.nfeStatusServicoNF2(dados);
                retornoXML.LoadXml(strRetorno.OuterXml);
                retornoXML.Save(nomeArquivoRet);
                retornoStatus = TRetConsStatServ.LoadFromFile(nomeArquivoRet);

                return(retornoStatus);
            }
            catch (Exception ex)
            {
                throw new System.InvalidOperationException("Erro ao consultar status do serviço. Erro: " + ex.Message);
            }
        }
예제 #2
0
        public TRetConsStatServ ExecuteConsulta()
        {
            TRetConsStatServ ret = null;

            try
            {
                string sReturn = string.Empty;
                if (Acesso.TP_AMB == 1) // Producao
                {
                    HLP.GeraXml.WebService.MDFe_Producao_StatusServico.MDFeStatusServico servico = new WebService.MDFe_Producao_StatusServico.MDFeStatusServico();
                    HLP.GeraXml.WebService.MDFe_Producao_StatusServico.mdfeCabecMsg      cabec   = new WebService.MDFe_Producao_StatusServico.mdfeCabecMsg();
                    cabec.cUF                 = Acesso.cUF.ToString();
                    cabec.versaoDados         = Acesso.versaoMDFe.ToString();
                    servico.mdfeCabecMsgValue = cabec;
                    servico.ClientCertificates.Add(Acesso.cert_CTe);
                    sReturn = servico.mdfeStatusServicoMDF(this.GeraXml()).OuterXml;
                }
                else
                {
                    HLP.GeraXml.WebServiceHomologacao.MDFe_Homologacao_StatusServico.MDFeStatusServico servico = new HLP.GeraXml.WebServiceHomologacao.MDFe_Homologacao_StatusServico.MDFeStatusServico();
                    HLP.GeraXml.WebServiceHomologacao.MDFe_Homologacao_StatusServico.mdfeCabecMsg      cabec   = new HLP.GeraXml.WebServiceHomologacao.MDFe_Homologacao_StatusServico.mdfeCabecMsg();
                    cabec.cUF                 = Acesso.cUF.ToString();
                    cabec.versaoDados         = Acesso.versaoMDFe.ToString();
                    servico.mdfeCabecMsgValue = cabec;
                    servico.ClientCertificates.Add(Acesso.cert_CTe);
                    sReturn = servico.mdfeStatusServicoMDF(this.GeraXml()).OuterXml;
                }

                if (sReturn != string.Empty)
                {
                    string      sPath  = Pastas.PROTOCOLOS + "\\" + DateTime.Now.ToString("ddMMyyyyHHmmSS") + "“-ret-sta.xml";
                    XmlDocument xmlRet = new XmlDocument();
                    xmlRet.LoadXml(sReturn);
                    xmlRet.Save(sPath);
                    ret = SerializeClassToXml.DeserializeClasse <TRetConsStatServ>(sPath);
                }
                else
                {
                    throw new Exception("Nenhum resultado obtido.");
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            return(ret);
        }
예제 #3
0
        //public static void VerificaStatusServicoCteTela()
        //{
        //    try
        //    {
        //        Acesso.bCERT_CONSULTA_SELECIONADO = false;
        //        ServicoOperando = false;
        //        AcaoCancelada = false;
        //        Mensagem = "";

        //        X509Certificate2 cert = new X509Certificate2();
        //        cert = belCertificadoDigital.BuscaNome("");
        //        if (!belCertificadoDigital.ValidaCertificado(cert))
        //        {
        //            Mensagem = "Certificado Inválido";
        //        }
        //        else
        //        {
        //            Acesso.cert_CTe = cert;
        //            InternetCS objVerificaInternet = new InternetCS();
        //            if (objVerificaInternet.Conexao())
        //            {
        //                Acesso.bCERT_CONSULTA_SELECIONADO = true;
        //                belCriaXml objCriaXml = new belCriaXml();
        //                List<belStatusCte> ListaStatus = objCriaXml.GerarXmlConsultaStatus();
        //                Mensagem = belTrataMensagem.RetornaMensagem(ListaStatus, belTrataMensagem.Tipo.Status);

        //                if (!AcaoCancelada)
        //                {
        //                    foreach (belStatusCte status in ListaStatus)
        //                    {
        //                        if (status.CodRetorno == "107")
        //                        {
        //                            if (Acesso.TP_EMIS != 1)
        //                            {
        //                                Mensagem += Environment.NewLine + Environment.NewLine + "O Sefaz está Operante." + Environment.NewLine + "Altere o Sistema para Modo Normal";
        //                            }
        //                            else
        //                            {
        //                                ServicoOperando = true;
        //                            }
        //                        }
        //                        else if (status.CodRetorno != "107" && Acesso.TP_EMIS == 1)
        //                        {
        //                            Mensagem += Environment.NewLine + Environment.NewLine + "O Sefaz não está Operante." + Environment.NewLine + "Caso queira emitir Conhecimentos utilizando o formulário de segurança," + Environment.NewLine +
        //                             "Altere o Sistema para Modo Contingência FS.";
        //                        }
        //                        else
        //                        {
        //                            ServicoOperando = true;
        //                        }
        //                    }
        //                }
        //            }
        //            else
        //            {
        //                Mensagem = "A internet parece estar Indisponível";
        //                if (Acesso.TP_EMIS == 2)
        //                {
        //                    ServicoOperando = true;
        //                }
        //                else
        //                {
        //                    Mensagem += Environment.NewLine + Environment.NewLine + "O Sistema não está Operante."
        //                         + Environment.NewLine + "Caso queira emitir Conhecimentos utilizando o formulário de segurança," + Environment.NewLine +
        //                            "Altere o Sistema para Modo Contingência FS.";
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        Mensagem = ex.Message;
        //    }
        //}



        public static void VerificaStatusServicoMDFeTela()
        {
            try
            {
                Acesso.bCERT_CONSULTA_SELECIONADO = false;
                ServicoOperando = false;
                AcaoCancelada   = false;
                Mensagem        = "";

                X509Certificate2 cert = new X509Certificate2();
                cert = belCertificadoDigital.BuscaNome("");
                if (!belCertificadoDigital.ValidaCertificado(cert))
                {
                    Mensagem = "Certificado Inválido";
                }
                else
                {
                    Acesso.cert_CTe = cert;
                    InternetCS objVerificaInternet = new InternetCS();
                    if (objVerificaInternet.Conexao())
                    {
                        Acesso.bCERT_CONSULTA_SELECIONADO = true;
                        belConsultaStatusWebService obj = new belConsultaStatusWebService();
                        TRetConsStatServ            ret = obj.ExecuteConsulta();

                        StringBuilder s = new StringBuilder();
                        s.Append("Versão: {0}{6}");
                        s.Append("Ambiente: {1}{6}");
                        s.Append("Status: {2}{6}");
                        s.Append("Motivo: {3}{6}");
                        s.Append("Código da UF: {4}{6}");
                        s.Append("Tempo Médio: {5}{6}");

                        Mensagem = string.Format(s.ToString(),
                                                 ret.versao,
                                                 ret.tpAmb == TAmb.Item1 ? "Produção" : "Homologação",
                                                 ret.cStat,
                                                 ret.xMotivo,
                                                 ret.cUF.ToString().Replace("Item", ""),
                                                 ret.tMed,
                                                 Environment.NewLine);

                        if (!AcaoCancelada)
                        {
                            if (ret.cStat == "107")
                            {
                                if (Acesso.TP_EMIS == 2)
                                {
                                    Mensagem += Environment.NewLine + Environment.NewLine + "O Sefaz está Operante." + Environment.NewLine + "Altere o Sistema para Modo Normal.";
                                }
                                else
                                {
                                    ServicoOperando = true;
                                }
                            }
                            else if (ret.cStat != "107" && Acesso.TP_EMIS == 1)
                            {
                                Mensagem += Environment.NewLine + Environment.NewLine + "O Sefaz não está Operante." + Environment.NewLine + "Caso queira emitir Notas utilizando o formulário de segurança," + Environment.NewLine +
                                            "Altere o Sistema para Modo Contingência FS.";
                            }
                            else
                            {
                                ServicoOperando = true;
                            }
                        }
                    }
                    else
                    {
                        Mensagem = "A internet parece estar Indisponível";
                        if (Acesso.TP_EMIS == 2)
                        {
                            ServicoOperando = true;
                        }
                        else
                        {
                            Mensagem += Environment.NewLine + Environment.NewLine + "O Sistema não está Operante."
                                        + Environment.NewLine + "Caso queira emitir Notas utilizando o formulário de segurança," + Environment.NewLine +
                                        "Altere o Sistema para Modo Contingência FS.";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Mensagem = ex.Message;
            }
        }