/// <summary>
        ///     Consulta a Situação da NFe
        /// </summary>
        /// <returns>Retorna um objeto da classe RetornoNfeConsultaProtocolo com os dados da Situação da NFe</returns>
        public RetornoNfeDownload NfeDownloadNf(string cnpj, List <string> chaves)
        {
            var versaoServico = Auxiliar.VersaoServicoParaString(ServicoNFe.NfeDownloadNF, _cFgServico.VersaoNfeDownloadNF);

            #region Cria o objeto wdsl para envio do pedido de Download

            var ws = CriarServico(ServicoNFe.NfeDownloadNF, TipoRecepcaoEvento.Nenhum);

            ws.nfeCabecMsg = new nfeCabecMsg
            {
                cUF = _cFgServico.cUF,
                //Embora em http://www.nfe.fazenda.gov.br/portal/webServices.aspx?tipoConteudo=Wak0FwB7dKs=#GO esse serviço está nas versões 2.00 e 3.10, ele rejeita se mandar a versão diferente de 1.00. Testado no Ambiente Nacional - (AN)
                versaoDados = /*versaoServico*/ "1.00"
            };

            #endregion

            #region Cria o objeto downloadNFe

            var pedDownload = new downloadNFe
            {
                //Embora em http://www.nfe.fazenda.gov.br/portal/webServices.aspx?tipoConteudo=Wak0FwB7dKs=#GO esse serviço está nas versões 2.00 e 3.10, ele rejeita se mandar a versão diferente de 1.00. Testado no Ambiente Nacional - (AN)
                versao = /*versaoServico*/ "1.00",
                CNPJ   = cnpj,
                tpAmb  = _cFgServico.tpAmb,
                chNFe  = chaves
            };

            #endregion

            #region Valida, Envia os dados e obtém a resposta

            var xmlDownload = pedDownload.ObterXmlString();
            Validador.Valida(ServicoNFe.NfeDownloadNF, TipoRecepcaoEvento.Nenhum, _cFgServico.VersaoNfeDownloadNF, xmlDownload);
            var dadosDownload = new XmlDocument();
            dadosDownload.LoadXml(xmlDownload);

            SalvarArquivoXml(cnpj + "-ped-down.xml", xmlDownload);

            var retorno          = ws.Execute(dadosDownload);
            var retornoXmlString = retorno.OuterXml;
            var retDownload      = new retDownloadNFe().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(cnpj + "-down.xml", retornoXmlString);

            return(new RetornoNfeDownload(pedDownload.ObterXmlString(), retDownload.ObterXmlString(), retornoXmlString, retDownload));

            #endregion
        }
 /// <summary>
 ///     Recebe um objeto ExtdownloadNFe e devolve a string no formato XML
 /// </summary>
 /// <param name="pedDownload">Objeto do tipo downloadNFe</param>
 /// <returns>string com XML no do objeto downloadNFe</returns>
 public static string ObterXmlString(this downloadNFe pedDownload)
 {
     return(FuncoesXml.ClasseParaXmlString(pedDownload));
 }