private RetornoNotaFiscal PreencheMensagemRetornoContingencia(string urlQrCode, TNFe nfe) { RetornoNotaFiscal mensagem = new RetornoNotaFiscal() { UrlQrCode = urlQrCode, Xml = XmlUtil.GerarNfeProcXml(nfe, urlQrCode) }; return(mensagem); }
private RetornoNotaFiscal PreencheMensagemRetorno(XmlSchemas.NfeAutorizacao.Retorno.TProtNFe protocolo, string urlQrCode, TNFe nfe) { RetornoNotaFiscal mensagem = new RetornoNotaFiscal() { CodigoStatus = protocolo.infProt.cStat, Motivo = protocolo.infProt.xMotivo, Protocolo = protocolo.infProt.nProt, UrlQrCode = urlQrCode, DataAutorizacao = protocolo.infProt.dhRecbto, Xml = XmlUtil.GerarNfeProcXml(nfe, urlQrCode, protocolo) }; return(mensagem); }
private List <RetornoNotaFiscal> ConsultarReciboLoteContingencia(string nRec, Modelo modelo) { var config = ConfiguracaoService.GetConfiguracao(); X509Certificate2 certificado = null; var certificadoEntity = CertificadoService.GetCertificado(); if (!string.IsNullOrWhiteSpace(certificadoEntity.Caminho)) { certificado = CertificateManager.GetCertificateByPath(certificadoEntity.Caminho, RijndaelManagedEncryption.DecryptRijndael(certificadoEntity.Senha)); } else { certificado = CertificateManager.GetCertificateBySerialNumber(certificadoEntity.NumeroSerial, false); } var consultaRecibo = new TConsReciNFe(); consultaRecibo.versao = "4.00"; consultaRecibo.tpAmb = config.IsProducao ? XmlSchemas.NfeRetAutorizacao.Envio.TAmb.Item1 : XmlSchemas.NfeRetAutorizacao.Envio.TAmb.Item2; consultaRecibo.nRec = nRec; string parametroXML = XmlUtil.Serialize(consultaRecibo, "http://www.portalfiscal.inf.br/nfe"); var node = new XmlDocument(); node.LoadXml(parametroXML); Ambiente ambiente = config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao; var codigoUF = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), EmissorService.GetEmissor().Endereco.UF); try { var servico = ServiceFactory.GetService(modelo, ambiente, Factory.Servico.RetAutorizacao, codigoUF, certificado); var client = (NFeRetAutorizacao4.NFeRetAutorizacao4SoapClient)servico.SoapClient; var result = client.nfeRetAutorizacaoLote(node); TRetConsReciNFe retorno = (TRetConsReciNFe)XmlUtil.Deserialize <TRetConsReciNFe>(result.OuterXml); List <RetornoNotaFiscal> retornoConsultaList = new List <RetornoNotaFiscal>(); foreach (var protNFe in retorno.protNFe) { var retornoConsultaNota = new RetornoNotaFiscal(); retornoConsultaNota.Chave = protNFe.infProt.chNFe; retornoConsultaNota.CodigoStatus = protNFe.infProt.cStat; retornoConsultaNota.DataAutorizacao = protNFe.infProt.dhRecbto; retornoConsultaNota.Motivo = protNFe.infProt.xMotivo; retornoConsultaNota.Protocolo = protNFe.infProt.nProt; retornoConsultaNota.Xml = XmlUtil.Serialize(protNFe, string.Empty) .Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", string.Empty) .Replace("TProtNFe", "protNFe") .Replace("<infProt xmlns=\"http://www.portalfiscal.inf.br/nfe\">", "<infProt>"); retornoConsultaList.Add(retornoConsultaNota); } return(retornoConsultaList); } catch (Exception) { if (!_isFirstTimeRecheckingRecipts) { _isFirstTimeRecheckingRecipts = true; return(ConsultarReciboLoteContingencia(nRec, modelo)); } else { _isFirstTimeRecheckingRecipts = false; return(null); } } }