3
I’m trying to consume the NFE download service on the farm:
https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx
but I have obtained the following error:
ERROR: 242 Reason: Bounce: Non-existent nfeCabecMsg element in SOAP Header
<?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:Body>
        <nfeDownloadNFResult xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF\">
            <retDownloadNFe versao=\"1.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">
                <tpAmb>1</tpAmb>
                <verAplic>SVAN_2.1.1</verAplic>
                <cStat>242</cStat>
                <xMotivo>Rejeicao: Elemento nfeCabecMsg inexistente no SOAP Header</xMotivo>
                <dhResp>2015-11-03T12:18:06</dhResp>
            </retDownloadNFe>
        </nfeDownloadNFResult>
    </soap:Body>
</soap:Envelope>
The error is peculiar because as you can see in the message below the header structure is in the message.
The message I’ve been sending is :
<?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/nfeDownloadNF">
            <cUF>31</cUF>
            <versaoDados>3.10</versaoDados>
        </nfeCabecMsg>
    </soap:Header>
    <soap:Body>
        <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF">
            <downloadNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10">
                <tpAmb>1</tpAmb>
                <xServ>DOWNLOAD NFE</xServ>
                <CNPJ>[NUMERO DO CNPJ]</CNPJ>
                <chNFe>[CHAVE DA NOTA FISCAL]</chNFe>
            </downloadNFe>
        </nfeDadosMsg>
    </soap:Body>
</soap:Envelope>
I removed all spaces as requested (already consume some other services successfully)
request.Method = "POST";
request.ContentType = "text/xml";
request.ContentLength = byteData.Length;
The certificate I’m sure is correct too.
Rebound that I can consume other services.
WSDL of the service
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF">
    <wsdl:types>
        <s:schema elementFormDefault="qualified" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF">
            <s:element name="nfeDadosMsg">
                <s:complexType mixed="true">
                    <s:sequence>
                        <s:any/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="nfeDownloadNFResult">
                <s:complexType mixed="true">
                    <s:sequence>
                        <s:any/>
                    </s:sequence>
                </s:complexType>
            </s:element>
            <s:element name="nfeCabecMsg" type="tns:nfeCabecMsg"/>
            <s:complexType name="nfeCabecMsg">
                <s:sequence>
                    <s:element minOccurs="0" maxOccurs="1" name="versaoDados" type="s:string"/>
                    <s:element minOccurs="0" maxOccurs="1" name="cUF" type="s:string"/>
                </s:sequence>
                <s:anyAttribute/>
            </s:complexType>
        </s:schema>
    </wsdl:types>
    <wsdl:message name="nfeDownloadNFSoapIn">
        <wsdl:part name="nfeDadosMsg" element="tns:nfeDadosMsg"/>
    </wsdl:message>
    <wsdl:message name="nfeDownloadNFSoapOut">
        <wsdl:part name="nfeDownloadNFResult" element="tns:nfeDownloadNFResult"/>
    </wsdl:message>
    <wsdl:message name="nfeDownloadNFnfeCabecMsg">
        <wsdl:part name="nfeCabecMsg" element="tns:nfeCabecMsg"/>
    </wsdl:message>
    <wsdl:portType name="NfeDownloadNFSoap">
        <wsdl:operation name="nfeDownloadNF">
            <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
                Serviço destinado ao atendimento de solicitações de download de Notas Fiscais Eletrônicas por seus destinatários.
            </wsdl:documentation>
            <wsdl:input message="tns:nfeDownloadNFSoapIn"/>
            <wsdl:output message="tns:nfeDownloadNFSoapOut"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="NfeDownloadNFSoap" type="tns:NfeDownloadNFSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="nfeDownloadNF">
            <soap:operation soapAction="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF/nfeDownloadNF" style="document"/>
            <wsdl:input>
                <soap:body use="literal"/>
                <soap:header message="tns:nfeDownloadNFnfeCabecMsg" part="nfeCabecMsg" use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="NfeDownloadNFSoap12" type="tns:NfeDownloadNFSoap">
        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="nfeDownloadNF">
            <soap12:operation soapAction="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF/nfeDownloadNF" style="document"/>
            <wsdl:input>
                <soap12:body use="literal"/>
                <soap12:header message="tns:nfeDownloadNFnfeCabecMsg" part="nfeCabecMsg" use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap12:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="NfeDownloadNF">
        <wsdl:port name="NfeDownloadNFSoap" binding="tns:NfeDownloadNFSoap">
            <soap:address location="https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx"/>
        </wsdl:port>
        <wsdl:port name="NfeDownloadNFSoap12" binding="tns:NfeDownloadNFSoap12">
            <soap12:address location="https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
INFORMATION IN THE SERVICE DOCUMENTATION
POST /NfeDownloadNF/NfeDownloadNF.asmx HTTP/1.1
Host: www.sefazvirtual.fazenda.gov.br
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF/nfeDownloadNF"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF">
      <versaoDados>string</versaoDados>
      <cUF>string</cUF>
    </nfeCabecMsg>
  </soap:Header>
  <soap:Body>
    <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF">xml</nfeDadosMsg>
  </soap:Body>
</soap:Envelope>
Could someone point out the mistake?
This web service is where, specifically? Look here and I didn’t find.
– Leonel Sanches da Silva
This is one of the SPED Webservices, specifically the service responsible for downloading a specific invoice for the key.
– Glauber A A
So, I tried to get the WSDL to check if your message is correct, but I couldn’t. From which site you got this link?
– Leonel Sanches da Silva
Thank you so much for your help. The link I took some examples from the web, but the WSDL can be obtained from the address : https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx?wsdl However if you cannot access, may be some restriction on certificates that must be installed in the browser I will copy the contents below
– Glauber A A
That’s what I tried. Error 403. It makes no sense to require a certificate to get the WSDL.
– Leonel Sanches da Silva
It doesn’t really make any sense, but it seems that this is what they do.... : ( yet I copied the contents of the page with the WSDL to my question.
– Glauber A A
Looking, without testing, the only thing I see different in header of soap message is the namespace, who is
http://www.portalfiscal.inf.br/nfe/wsdl/nfeDownloadNFwhile it should behttp://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF.– Bruno César
Bruno César really, the problem was not solved, but the namespace was wrong. The mistake changed I am treating.
– Glauber A A