public Task <NFeResult> GravarProtocolo()
        {
            foreach (var nf in Store.GetNotReturn(default(CancellationToken)).Result)
            {
                TConsSitNFe consSitNFe = new TConsSitNFe();
                consSitNFe.chNFe  = nf.Id;
                consSitNFe.tpAmb  = (TAmb)nf.infNFe.ide.tpAmb;
                consSitNFe.versao = (TVerConsSitNFe)Enum.Parse(typeof(TVerConsSitNFe),
                                                               string.Concat("Item",
                                                                             nf.infNFe.versao.Replace(".", "")));
                consSitNFe.xServ = TConsSitNFeXServ.CONSULTAR;

                XmlSerializer xs           = new XmlSerializer(typeof(TConsSitNFe));
                StringWriter  stringWriter = new StringWriter();
                xs.Serialize(stringWriter, consSitNFe);

                XmlDocument consSit = new XmlDocument();
                consSit.LoadXml(stringWriter.ToString());

                XmlNode nodeConsSit = consSit.GetElementsByTagName("consSitNFe")[0];

                //Store.Protocolo()
            }
            return(Task.FromResult(NFeResult.Success));
        }
Exemplo n.º 2
0
        public void Process()
        {
            var cert = CertificadoController.Instance.getCertificado_SerialNumber("313838");
            var obj  = new TConsSitNFe()
            {
                versao = TVerConsSitNFe.Item400,
                tpAmb  = TAmb.Item2,
                xServ  = TConsSitNFeXServ.CONSULTAR,
                chNFe  = "31181209339936000973550330000930221088758563"
            };
            var xml = obj.SerializeObject();

            return;
        }
Exemplo n.º 3
0
        public List <TRetConsSitNFe> ConsultaSitNFe(HiperNFe hiperNFe, X509Certificate2 cert)
        {
            XmlNode strRetorno = null;

            C_WebService.ListaUrl listaURL = default(C_WebService.ListaUrl);
            listaURL = WsUrls.BuscaURL(hiperNFe.Configuracao.CodUF, hiperNFe.Configuracao.Ambiente);
            try
            {
                Consulta2.NfeConsulta2 wsMsg = default(Consulta2.NfeConsulta2);
                Consulta2.nfeCabecMsg  cab   = new Consulta2.nfeCabecMsg();

                //UF E VERSÃO DO CABEÇALHO
                cab.cUF         = PegarCodigoUF(hiperNFe.Configuracao.CodUF);
                cab.versaoDados = hiperNFe.Configuracao.Versao;

                //CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
                wsMsg = new Consulta2.NfeConsulta2(listaURL.UrlNfeConsultaProtocolo);

                //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
                List <TRetConsSitNFe> listaRetorno = new List <TRetConsSitNFe>();
                foreach (TNfeProc nota in hiperNFe.NotasFiscais)
                {
                    TConsSitNFe consSitNfe      = new TConsSitNFe();
                    string      chaveNfe        = nota.NFe.infNFe.Id.Substring(3);
                    string      arquivoConsulta = _PastaLog + chaveNfe + "-ped-sit.xml";
                    string      arquivoRetorno  = _PastaLog + chaveNfe + "-sit.xml";
                    consSitNfe.chNFe = chaveNfe;
                    consSitNfe.tpAmb = hiperNFe.Configuracao.Ambiente;
                    //consSitNfe.versao = nota.NFe.infNFe.versao;
                    consSitNfe.versao = TVerConsSitNFe.Versao201;
                    consSitNfe.xServ  = TConsSitNFeXServ.CONSULTAR;

                    XmlDocument dados = new XmlDocument();
                    dados.LoadXml(Funcoes.RemoveNameSpaceFromXml(consSitNfe.Serialize()));
                    dados.Save(arquivoConsulta);

                    strRetorno = wsMsg.nfeConsultaNF2(dados);

                    XmlDocument retornoXML = new XmlDocument();
                    retornoXML.LoadXml(strRetorno.OuterXml);
                    retornoXML.Save(arquivoRetorno);
                    TRetConsSitNFe retornoSitNFe = new TRetConsSitNFe();
                    retornoSitNFe      = TRetConsSitNFe.LoadFromFile(arquivoRetorno);
                    nota.procEventoNFe = retornoSitNFe.procEventoNFe;

                    if (nota.procEventoNFe != null)
                    {
                        foreach (var item in nota.procEventoNFe)
                        {
                            string      arquivoProcEvento = _PastaLog + item.evento.infEvento.tpEvento + chaveNfe + item.evento.infEvento.nSeqEvento + "-procEventoNfe.xml";
                            XmlDocument xmlEvento         = new XmlDocument();
                            item.SaveToFile(arquivoProcEvento);
                            xmlEvento.LoadXml(item.Serialize());
                            item.ArquivoXML  = xmlEvento;
                            item.NomeArquivo = arquivoProcEvento;
                        }
                    }

                    listaRetorno.Add(retornoSitNFe);
                }

                return(listaRetorno);
            }
            catch (Exception ex)
            {
                throw new System.InvalidOperationException("Erro ao consultar a situação da NFe. Erro: " + ex.Message);
            }
        }
Exemplo n.º 4
0
        private static void consultaSituacao()
        {
            XmlDocument document = new XmlDocument();
            FileInfo    xml      = new FileInfo(@"T:\2018\2018-10\35180900152891000100550010000001591000208700.xml");

            document.Load(xml.FullName);
            NFe NFe = new NFe();

            var node = document.GetElementsByTagName("NFe")[0];

            NFe.XmlNFe = new XmlNFe
            {
                DhChange    = xml.LastWriteTimeUtc,
                XmlDocument = XElement.Parse(document.InnerXml)
            };
            NFe.SetProperties(node);

            TConsSitNFe consSitNFe = new TConsSitNFe();

            consSitNFe.chNFe  = NFe.Id;
            consSitNFe.tpAmb  = (TAmb)NFe.infNFe.ide.tpAmb;
            consSitNFe.versao = (TVerConsSitNFe)Enum.Parse(typeof(TVerConsSitNFe), string.Concat("Item", NFe.infNFe.versao.Replace(".", "")));
            consSitNFe.xServ  = TConsSitNFeXServ.CONSULTAR;

            XmlSerializer xs           = new XmlSerializer(typeof(TConsSitNFe));
            StringWriter  stringWriter = new StringWriter();

            xs.Serialize(stringWriter, consSitNFe);

            XmlDocument consSit = new XmlDocument();

            consSit.LoadXml(stringWriter.ToString());

            XmlNode nodeConsSit = consSit.GetElementsByTagName("consSitNFe")[0];

            if (nodeConsSit != null)
            {
                X509Certificate2Collection certificates = new X509Certificate2Collection();
                DirectoryInfo directoryCert             = new DirectoryInfo(@"G:\Sieg\Certificados");
                var           certificados = directoryCert.GetFiles("x.pfx", SearchOption.AllDirectories).ToList();
                foreach (var fileCert in certificados)
                {
//                    certificates.Import()
                }
                certificates.Import(@"G:\Sieg\Certificados\0002-MOREIRA     moreira.pfx", "moreira", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
                foreach (var key in certificates)
                {
                    if (key.HasPrivateKey)
                    {
                        VerificarCnpj(key);
                    }
                }

                //NFeConsultaProtocolo4Soap12Client nFeConsultaProtocolo = new NFeConsultaProtocolo4Soap12Client();
                //nFeConsultaProtocolo.ClientCredentials.ClientCertificate.Certificate = cert;
                //var retorno = nFeConsultaProtocolo.nfeConsultaNF(nodeConsSit);

                //NFe.XmlNFe.retConsSitNFe = new TaxAuditCommunity.Domain.procNFe.TRetConsSitNFe.retConsSitNFe();
                //NFe.XmlNFe.retConsSitNFe.SetProperties(retorno);

                //XmlSerializer RetConsSitxs = new XmlSerializer(typeof(TRetConsSitNFe));
                //MemoryStream ms = new MemoryStream();
            }
        }
Exemplo n.º 5
0
        public MensagemRetornoConsulta ConsultarNotaFiscal(string chave, string codigoUf, X509Certificate2 certificado, Ambiente ambiente, Modelo modelo)
        {
            XmlNode node = null;

            var parametro = new TConsSitNFe();

            parametro.chNFe  = chave;
            parametro.tpAmb  = ambiente == Ambiente.Homologacao ? Envio.TAmb.Item2 : Envio.TAmb.Item1;
            parametro.versao = Envio.TVerConsSitNFe.Item400;
            parametro.xServ  = TConsSitNFeXServ.CONSULTAR;

            string nFeNamespaceName = "http://www.portalfiscal.inf.br/nfe";
            string parametroXML     = XmlUtil.Serialize(parametro, nFeNamespaceName);

            XmlDocument doc    = new XmlDocument();
            XmlReader   reader = XmlReader.Create(new StringReader(parametroXML));

            reader.MoveToContent();

            node = doc.ReadNode(reader);

            string endpoint = "";

            if (ambiente == Ambiente.Homologacao)
            {
                if (modelo == Modelo.Modelo55)
                {
                    endpoint = "NfeConsulta2Hom";
                }
                else
                {
                    endpoint = "NfceConsulta2Hom";
                }
            }
            else
            {
                if (modelo == Modelo.Modelo55)
                {
                    endpoint = "NfeConsulta2Prod";
                }
                else
                {
                    endpoint = "NfceConsulta2Prod";
                }
            }

            var soapClient = new NFeConsultaProtocolo4SoapClient(endpoint);

            soapClient.ClientCredentials.ClientCertificate.Certificate = certificado;
            XmlNode result = soapClient.nfeConsultaNF(node);

            var retornoConsulta = (TRetConsSitNFe)XmlUtil.Deserialize <TRetConsSitNFe>(result.OuterXml);

            MensagemRetornoConsulta mensagemRetorno = new MensagemRetornoConsulta();

            if (retornoConsulta.cStat == "100")
            {
                mensagemRetorno.IsEnviada     = true;
                mensagemRetorno.Protocolo     = retornoConsulta.protNFe;
                mensagemRetorno.DhAutorizacao = retornoConsulta.protNFe.infProt.dhRecbto; //não é a hora da autorização
            }
            else
            {
                mensagemRetorno.IsEnviada = false;
            }

            return(mensagemRetorno);
        }