public void Generate(DownloadedHtmlData downloadedData, string directory) { var nota = new TNfeProc(); UpdateDadosNfe(downloadedData.ChaveAcessso, nota, downloadedData.DadosNfe, downloadedData.DadosEmitente, downloadedData.InformacoesAdicionais); UpdateDadosEmitente(nota, downloadedData.DadosEmitente); UpdateDadosDestinatario(nota, downloadedData.DadosDestinatario); UpdateProdutos(nota, downloadedData.Products); UpdateTotais(nota, downloadedData.Totais); UpdateTransporte(nota, downloadedData.DadosTransporte); UpdateAdicionais(nota, downloadedData.InformacoesAdicionais); var xml = Util.Serialize(nota); xml = xml.Replace("protNFe versao=\"2.00\"", "protNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\""); SaveXml(xml, directory); }
public DownloadedHtmlData Post(PostItems itemsForPost) { ValidatePost(itemsForPost); var postData = ComposePost(itemsForPost); byte[] byteArray = Encoding.UTF8.GetBytes(postData); var request = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8="); request.CookieContainer = sessionCookie; request.UserAgent = UserAgent; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; var dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); var pageResponse = request.GetResponse(); var docUserWebPage = new HtmlDocument(); docUserWebPage.Load(pageResponse.GetResponseStream()); var documentText = docUserWebPage.DocumentNode.InnerHtml; if (documentText.Contains("Código da Imagem inválido.")) { throw new InvalidDataException("Código da Imagem inválido. Tente novamente."); } if (documentText.Contains("NF-e INEXISTENTE na base nacional")) { throw new InvalidDataException("NF-e INEXISTENTE na base nacional."); } var printRequest = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consultaImpressao.aspx?tipoConsulta=completa"); printRequest.CookieContainer = sessionCookie; printRequest.UserAgent = UserAgent; printRequest.ContentType = "application/x-www-form-urlencoded"; var printResponse = printRequest.GetResponse(); var printResponseStream = printResponse.GetResponseStream(); var printUserPage = new HtmlDocument(); printUserPage.Load(printResponseStream); var result = new DownloadedHtmlData(); var spanChaveAcesso = printUserPage.GetElementbyId("lblChaveAcesso"); Check(spanChaveAcesso); result.ChaveAcessso = spanChaveAcesso.InnerText.Trim(); result.DadosNfe = GetDataItems(printUserPage, "NFe"); var operationScience = printUserPage.DocumentNode.Descendants().Where(e => e.Id.Contains("CienciaOperacao")).ToList(); var scienceOperationsList = operationScience.Select(science => GetDataItems(printUserPage, science.Id)).ToList(); result.ScienceOperations = scienceOperationsList; result.DadosEmitente = GetDataItems(printUserPage, "Emitente"); result.DadosDestinatario = GetDataItems(printUserPage, "DestRem"); result.Products = GetProducts(printUserPage); result.Totais = GetDataItems(printUserPage, "Totais"); result.DadosTransporte = GetDataItems(printUserPage, "Transporte"); result.DadosCobranca = GetDataItems(printUserPage, "Cobranca"); result.InformacoesAdicionais = GetDataItems(printUserPage, "Inf"); result.NotaFiscalAvulsa = GetDataItems(printUserPage, "Avulsa"); return result; }
public DownloadedHtmlData Post(PostItems itemsForPost) { ValidatePost(itemsForPost); var postData = ComposePost(itemsForPost); byte[] byteArray = Encoding.UTF8.GetBytes(postData); var request = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8="); request.CookieContainer = sessionCookie; request.UserAgent = UserAgent; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; var dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); var pageResponse = request.GetResponse(); var docUserWebPage = new HtmlDocument(); docUserWebPage.Load(pageResponse.GetResponseStream()); var documentText = docUserWebPage.DocumentNode.InnerHtml; if (documentText.Contains("Código da Imagem inválido.")) { throw new InvalidDataException("Código da Imagem inválido. Tente novamente."); } if (documentText.Contains("NF-e INEXISTENTE na base nacional")) { throw new InvalidDataException("NF-e INEXISTENTE na base nacional."); } var printRequest = (HttpWebRequest)WebRequest.Create("http://www.nfe.fazenda.gov.br/portal/consultaImpressao.aspx?tipoConsulta=completa"); printRequest.CookieContainer = sessionCookie; printRequest.UserAgent = UserAgent; printRequest.ContentType = "application/x-www-form-urlencoded"; var printResponse = printRequest.GetResponse(); var printResponseStream = printResponse.GetResponseStream(); var printUserPage = new HtmlDocument(); printUserPage.Load(printResponseStream); var result = new DownloadedHtmlData(); var spanChaveAcesso = printUserPage.GetElementbyId("lblChaveAcesso"); Check(spanChaveAcesso); result.ChaveAcessso = spanChaveAcesso.InnerText.Trim(); result.DadosNfe = GetDataItems(printUserPage, "NFe"); var operationScience = printUserPage.DocumentNode.Descendants().Where(e => e.Id.Contains("CienciaOperacao")).ToList(); var scienceOperationsList = operationScience.Select(science => GetDataItems(printUserPage, science.Id)).ToList(); result.ScienceOperations = scienceOperationsList; result.DadosEmitente = GetDataItems(printUserPage, "Emitente"); result.DadosDestinatario = GetDataItems(printUserPage, "DestRem"); result.Products = GetProducts(printUserPage); result.Totais = GetDataItems(printUserPage, "Totais"); result.DadosTransporte = GetDataItems(printUserPage, "Transporte"); result.DadosCobranca = GetDataItems(printUserPage, "Cobranca"); result.InformacoesAdicionais = GetDataItems(printUserPage, "Inf"); result.NotaFiscalAvulsa = GetDataItems(printUserPage, "Avulsa"); return(result); }