1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Como envelopar o lote de envio da NFe no cabeçalho usando C#?

Discussion in 'Technology' started by RonyElias, Aug 2, 2020.

  1. RonyElias

    RonyElias Guest

    Olá, não tenho experiência com WebServices, mas estou tentando desenvolver um emissor de NFCe e já consegui autorizar algumas notas em ambiente de homologação. Gero o XML usando C#, então eu valido, assino e valido de novo comparando com o xsd da sefaz, porém quando enviei os arquivos tive que criar o cabeçalho no notepad++ e depois carregar usando XmlDocument pra conseguir enviar, porque não consegui adicionar o Lote de envio no elemento <nfeDadosMsg></nfeDadosMsg>.

    Resumindo preciso inserir um xml depois de um elemento de outro xml, o código que uso é

    public String CabecalhoEnvio(string cUF, int ambiente, String notaAssinada, String URlSoapAction)
    {
    String retorno = String.Empty;
    MemoryStream stream = new MemoryStream(); // The writer closes this for us

    using (XmlTextWriter xml = new XmlTextWriter(stream, Encoding.UTF8))
    {
    xml.WriteStartDocument();
    xml.WriteStartElement("soap:Envelope");
    xml.WriteAttributeString("xmlns:soap", "http://www.w3.org/2003/05/soap-envelope");
    xml.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    xml.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
    xml.WriteStartElement("soap:Header");
    xml.WriteStartElement("nfeCabecMsg");
    xml.WriteAttributeString("xmlns", URlSoapAction);
    xml.WriteElementString("cUF", cUF);
    xml.WriteElementString("versaoDados", "3.10");
    xml.WriteEndElement();
    xml.WriteEndElement();
    xml.WriteStartElement("soap:Body");
    xml.WriteStartElement("nfeDadosMsg", URlSoapAction);
    /*inserir o lote assinado aqui sem bugar o XML*/
    xml.WriteEndElement();
    xml.WriteEndElement();
    xml.WriteEndElement();
    xml.WriteEndDocument();
    xml.Flush();
    xml.Flush();

    StreamReader ler = new StreamReader(stream, Encoding.UTF8, true);
    stream.Seek(0, SeekOrigin.Begin);

    retorno += ler.ReadToEnd();
    }
    return retorno;
    }


    esse código gera o seguinte xml:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
    <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
    <cUF>11</cUF>
    <versaoDados>3.10</versaoDados>
    </nfeCabecMsg>
    </soap:Header>
    <soap:Body>
    <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
    adicionar o lote aqui;
    </nfeDadosMsg>
    </soap:Body>
    </soap:Envelope>


    Sempre insiro o XmlDocument no elemento nfeDadosMsg o arquivo fica cheio de caracteres estranhos tipo ?&??&&. uso codificação UTF-8 e o que preciso fazer é parecido com um include do php.

    Login To add answer/comment
     

Share This Page