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); } }
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); }
//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; } }