Nfe - Nota Fiscal Eletronica

Aproveitando a deixa da NFe 2.0, estou com um problema aqui que tá complicado viu…

Já fiz tudo que está no manual, e para os estados de MG e SP já está tudo funcionando, está até em produção nos cliente já…

Acontece que preciso desenvolver também para Mato Grosso do Sul - MS.

A mesma rotina funciona para todos os estados, menos MS.

Quando tento simplesmente consultar o serviço me retorna o erro:

[color=red][size=18]gov.sefaz.nfe.commons.exception.ValidacaoAreaCabecalhoException[/size][/color]

Já revirei todos os foruns, google e tudo quanto é possível e não achei nada do tipo, parece que ninguem teve esse problema ainda…
acho estranho pois, teóricamente, o layout é um só para todos os estados, mas para MS não funciona…

Alguem tem alguma ideia do que pode ser? fico muito grato se puderem me ajudar pois tem dias que estou tentando e nada ainda…

Obrigado…

e ai galera blz

Colodo se tiver procurando validar o xml tenho esse codigo aqui , ele faz a msm coisa que o programa assinador RS ele verifica a estrutura do xml e informa aonde esta com erro

import java.io.File;   
import java.io.IOException;   
import javax.xml.parsers.DocumentBuilder;   
import javax.xml.parsers.DocumentBuilderFactory;   
import javax.xml.parsers.ParserConfigurationException;   
import javax.xml.transform.Source;   
import javax.xml.transform.dom.DOMSource;   
import javax.xml.transform.stream.StreamSource;   
import javax.xml.validation.Schema;   
import javax.xml.validation.SchemaFactory;   
import javax.xml.validation.Validator;   
  
import org.w3c.dom.Document;   
import org.xml.sax.ErrorHandler;   
import org.xml.sax.SAXException;   
import org.xml.sax.SAXParseException;   

public class XMLXSDValidate implements ErrorHandler {   
  
    private String xmlInput;   
    private String xsdInput;   
  
    public XMLXSDValidate(String xmlInput, String xsdInput) { 
    	
    this.xmlInput = xmlInput;   
    this.xsdInput = xsdInput;   
    }   
  
    public String getXmlInput() {   
    return xmlInput;   
    }   
  
    public void setXmlInput(String xmlInput) {   
    this.xmlInput = xmlInput;   
    }   
  
    public String getXsdInput() {   
    return xsdInput;   
    }   
  
    public void setXsdInput(String xsdInput) {   
        this.xsdInput = xsdInput;   
    }   
  
    private void validate() throws Exception {   
        try {   
  
            //Setting Xerces-J parser because the standard parser not recognize <import ...>   
            System.setProperty("javax.xml.parsers.DocumentBuilderFactory",   
            "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");   
  
            // Parse an XML document em um DOM tree.   
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   
            factory.setNamespaceAware(true);   
            factory.setValidating(false);   
            DocumentBuilder parser = factory.newDocumentBuilder();   
            Document document = parser.parse(new File(xmlInput));   
  
            // Cria um SchemaFactory capaz de compreender WXS schemas.   
            SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");     
             
            // carrega um WXS schema, representada por uma instacia Schema.   
            Source schemaFile = new StreamSource(new File(xsdInput));   
            Schema schema = schemaFactory.newSchema(schemaFile);   

            // Cria um objeto Validator que pode ser usado para validar   
            // uma instancia document.   
            Validator validator = schema.newValidator();   
            validator.setErrorHandler(this);   
           
  
            // Valida o Dom tree   
            validator.validate(new DOMSource(document));   
            } catch (ParserConfigurationException e) {   
                throw new Exception(e.getMessage());   
            } catch (SAXException e) {   
        throw new Exception(e.getMessage());   
            } catch (IOException e) {   
        throw new Exception(e.getMessage());   
            }   
    }   
  
    @Override   
    public void error(SAXParseException exception) throws SAXException {   
        System.out.println("ERROR: " + exception.getLocalizedMessage());
        
    }   
  
    @Override   
    public void fatalError(SAXParseException exception) throws SAXException {   
        System.out.println("FATAL: " + exception.getMessage());   
    }   
  
    @Override   
    public void warning(SAXParseException exception) throws SAXException {   
        System.out.println("WARNING: " + exception.getMessage());   
    }   
  
    public static void main(String[] args) {   
        
   /* 
		if(args.length != 1) 
	    	{ 
	    	System.out.println("Sao esperados 1 parametros!"); 
	    	return; 
	    	}
	 */
	//	String arquivo_xml = args[1];
			String arquivo_xml = "C://010541-200710-env-lot_sign.xml";
			System.out.println(arquivo_xml);  
			
    	XMLXSDValidate validate = new XMLXSDValidate(arquivo_xml,   
        "C:/NFE/PL_005c//enviNFe_v1.10.xsd");  
            try {   
                System.out.println("Iniciando Validação..");   
                validate.validate();   
                System.out.println("File '"+validate.getXmlInput()+"' validate sucessfull...");   
                } catch (Exception ex) {   
                System.out.println("File '"+validate.getXmlInput()+"' validate fail...");   
                ex.printStackTrace();   
        }   
    }   
  
}

Bom queria saber de vcs , como vcs tratam as exceções dos web-services um exemplo no meu codigo coloquei
um try / catch no trecho q ele monta o soap e transmite a informação para o sefaz caso tenha alguma coisa errada me exibe a Exceção informada no catch

qdo por exemplo eu passo um certificado que nao existe e rodo a aplicação ele me exibe uma msg da exceção mais uma msg que coloquei no catch

qria saber se vcs consegue manipular as exceção , ja tentei varias tipos de Exceptions e nao mudou mta coisa

Ainda sobre o erro:

gov.sefaz.nfe.commons.exception.ValidacaoAreaCabecalhoException

O xml que estou enviando é o seguinte:

<?xml version="1.0" encoding="UTF-8" ?> 
<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <soap12:Header>
	<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
	  <cUF>50</cUF> 
	  <versaoDados>2.00</versaoDados> 
	</nfeCabecMsg>
  </soap12:Header>

  <soap12:Body>
	<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
	   <consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
		<tpAmb>2</tpAmb> 
		<cUF>50</cUF> 
		<xServ>STATUS</xServ> 
	   </consStatServ>
	</nfeDadosMsg>
  </soap12:Body>

</soap12:Envelope>

[quote=evandromib]Bom galera consegui resolver o probleminha citado acima dos parse em ingles , ficou da seguite forma

na API xerces-2_9_1 procura o arquivo xercesImpl.jar dentro dele acesse \org\apache\xerces\impl\msg\XMLSchemaMessages.properties faça uma copia desse arquivo , dentro desse arquivo estão as mensagem do parse todas ingles

altere o conteudo do arquivo ex:
cvc-complex-type.2.4.b = cvc-complex-type.2.4.b: O conteudo do Elemento ‘’{0}’’ is not complete. One of ‘’{1}’’ is expected.

para cvc-complex-type.2.4.b = cvc-complex-type.2.4.b: O conteudo do Elemento ‘’{0}’’ nao esta completo. Um dos ‘’{1}’’ e esperado.

ao terminar salve o arquivo XMLSchemaMessages.properties como XMLSchemaMessages_pt_BR.properties

coloque esse arquivo de volta no xercesImpl.jar deixando os arquivos XMLSchemaMessages_pt_BR.properties e XMLSchemaMessages.properties no JAR

na aplicação substitua o

por

o LocalizedMessage se encarrega de procurar o arquivo com o que contem a tradução caso ele nao encontre joga como default o arquivo que esta em ingles

bom aqui funcionou legal só preciso de coragem para traduzir todo o arquivo
espero q ajude

flw
[/quote]

Este post realmente não é nada novo,
Mas… venho perguntar se existe alguma maneira de facilitar ainda mais a leitura…
Digo isso porque o “usuario” como todos conhecem, tem muita dificuldade (falta de vontade)
em querer entender oque ta escrito, entao dizer pra ele que cUF esta errado… é o mesmo que
ele te ligar e dizer, apareceu uma mensagem estranha na tela, pode arrumar?!

Alguem tem alguma idéia para melhorar o retorno da validação?
Seria aqueles {0} {1} {2} etc.

O que eu quero fazer é o seguinte.

ao inves de mostrar simplesmente o [cUF] tag xml
mostrar o seguinte:

cUF(Código do UF (Unidade da Federação)) - Conteúdo inválido.

Att. Jonas

Pessoal, estou tentando validar uma NFe 2.0 de exportação, com contribuinte Optante do Simples Nacional.
Tentei com CSOSN 102 e com 400 (mesma tag ICMSSN102).
Todas as tentativas retornam erro 527 = Operação de Exportação com informação de ICMS incompatível.

Alguma dica, por favor?

Grato pela atenção.

Alencar

[quote=philler]Pessoal, estou tentando validar uma NFe 2.0 de exportação, com contribuinte Optante do Simples Nacional.
Tentei com CSOSN 102 e com 400 (mesma tag ICMSSN102).
Todas as tentativas retornam erro 527 = Operação de Exportação com informação de ICMS incompatível.

Alguma dica, por favor?

Grato pela atenção.

Alencar[/quote]

Ola Philler, cara achei isto na net, veja se tem fundamento, abraços e sucesso ai

Para notas de exportação, não se deve informar o ICMS Isento, quando na verdade o correto é informar o Não Tributável, assim, ao invés do código CST ser 40, este deve ser o 41, caso contrário a NFe não será validada

[quote=philler]Pessoal, estou tentando validar uma NFe 2.0 de exportação, com contribuinte Optante do Simples Nacional.
Tentei com CSOSN 102 e com 400 (mesma tag ICMSSN102).
Todas as tentativas retornam erro 527 = Operação de Exportação com informação de ICMS incompatível.
Alencar[/quote]

Respondendo a minha própria questão:

O CSOSN deve ser 300 - Imune, sendo informado na tag .

Grato pela atenção.

Alencar

Pergunta aos colegas de NF-e

A imagem abaixo apresenta dados corretos?


ALGUEM PODE ME AJUDAR NAO TO CONSEGUINDO ENVIAR NFE TESTE NO PROGRAMA GRATUITO DA ERRO INESPERADO NA TRANSMISSAO .

Provavelmente seja a nova regra para emissão de NFe em homologação - erro 598.
A razão social do destinatário deve ser fixa: “NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL” (NT 2011.002).

Alencar

MAS COMO PROCEDER PARA O ENVIO

NO MODO NORMAL DA ERRO INESPERADO E NO MODO SCAN DA ESSE ERRO Q VC MENCIONO 598.

Creio que não tenha me feito claro.
A razão social (xNome) do destinatário deve ser essa que escrevi na mensagem anterior. Só isso.

Se tpAmb (B24) = 2: o xNome (E04) deve ser informado com a literal ?NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL?

Tem mais duas regras na NT 2011.002 que são facultativas, a saber:

Se tpAmb (B24) = 2: o CNPJ (E02) deve ser 99.999.999/0001-91 ou ter conteúdo vazio;
Se tpAmb (B24) = 2: a IE (E17) deve ter conteúdo vazio.

Alencar

AAA ISSO EU NAO TINHA FEITO TINHA USADO UM DESTINATARIO NORMAL , VOU TENTAR OBRIGADO

TENTEI NAO DEU CERTO CONTINUA ERRO INESPERADO , TO ACHANDO Q PODE SER O CERTIFICADO CERTIFICADORA AC NOTARIAL.

Boa noite,

Alguém está tendo problemas na consulta de NFe de homologação do Paraná.

Estou tendo erro na consulta do Status de Serviço. Descobri que estão retornando o XML sem a tag <?xml>

O problema é que quando o AXIS2 vai tentar gerar o evelope de retorno dá um erro no XML.

Segue o código de chamada:

NfeStatusServico2Stub.NfeCabecMsg nfeCabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
nfeCabecMsg.setCUF("41");
nfeCabecMsg.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
NfeStatusServico2Stub.NfeDadosMsg nfeDadosMsg = new NfeStatusServico2Stub.NfeDadosMsg();
OMElement ome = AXIOMUtil.stringToOM(xmlIn);
nfeDadosMsg.setExtraElement(ome);
NfeStatusServico2Stub stub = new NfeStatusServico2Stub("https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeStatusServico2");
NfeStatusServico2Stub.NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg, nfeCabecMsgE);
OMElement omeResult = result.getExtraElement();
String xmlOut = omeResult.toStringWithConsume();

Suprimi os try-catch

O erro está dando exatamente no NfeStatusServico2Stub.NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg, nfeCabecMsgE):

org.apache.axiom.soap.SOAPProcessingException: SOAP Envelope can not have children other than SOAP Header and Body
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.checkChild(SOAPEnvelopeImpl.java:104)
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.addChild(SOAPEnvelopeImpl.java:118)
	at org.apache.axiom.om.impl.llom.OMNodeImpl.<init>(OMNodeImpl.java:74)
	at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:106)
	at org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory.createOMElement(OMLinkedListImplFactory.java:96)
	at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:431)
	at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:273)
	at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)
	at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
	at org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:676)
	at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImpl.java:693)
	at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstElement(OMElementImpl.java:991)
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getHeader(SOAPEnvelopeImpl.java:88)
	at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:69)
	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
	at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:364)
	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
	at br.com.elucid.wstrade.nfe.statusservico.wsdl.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:156)
	at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.exec(StatusServicoServlet.java:181)
	at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.getStatusGeral(StatusServicoServlet.java:219)
	at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.doPost(StatusServicoServlet.java:64)
	at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.doGet(StatusServicoServlet.java:48)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:595)

O método nfeStatusServicoNF2 foi gerado pelo wsdl2java com AXIS2

    public NfeStatusServicoNF2Result nfeStatusServicoNF2(NfeDadosMsg nfeDadosMsg0, NfeCabecMsgE nfeCabecMsg1) throws java.rmi.RemoteException {
        org.apache.axis2.context.MessageContext _messageContext = null;
        try {
            org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[0].getName());
            _operationClient.getOptions().setAction("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2");
            _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);

            addPropertyToOperationClient(_operationClient, org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, "&");

            _messageContext = new org.apache.axis2.context.MessageContext();
            org.apache.axiom.soap.SOAPEnvelope env = null;

            env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
                    nfeDadosMsg0, optimizeContent(new javax.xml.namespace.QName(
                            "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2",
                            "nfeStatusServicoNF2")));
            env.build();

            if (nfeCabecMsg1 != null) {
                org.apache.axiom.om.OMElement omElementnfeCabecMsg1 = toOM(nfeCabecMsg1,
                        optimizeContent(new javax.xml.namespace.QName(
                                "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2",
                                "nfeStatusServicoNF2")));
                addHeader(omElementnfeCabecMsg1, env);

            }

            _serviceClient.addHeadersToEnvelope(env);
            _messageContext.setEnvelope(env);
            _operationClient.addMessageContext(_messageContext);
            _operationClient.execute(true);

            org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient
                    .getMessageContext(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
            org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();

            java.lang.Object object = fromOM(_returnEnv.getBody().getFirstElement(),
                    NfeStatusServicoNF2Result.class, getEnvelopeNamespaces(_returnEnv));
            
            return (NfeStatusServicoNF2Result) object;
        } catch (org.apache.axis2.AxisFault f) {
            org.apache.axiom.om.OMElement faultElt = f.getDetail();
            if (faultElt != null) {
                if (faultExceptionNameMap.containsKey(faultElt.getQName())) {
                    try {
                        java.lang.String exceptionClassName = (java.lang.String) faultExceptionClassNameMap.get(faultElt.getQName());
                        java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
                        java.lang.Exception ex = (java.lang.Exception) exceptionClass.newInstance();
                        java.lang.String messageClassName = (java.lang.String) faultMessageMap.get(faultElt.getQName());
                        java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
                        java.lang.Object messageObject = fromOM(faultElt, messageClass, null);
                        java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage", new java.lang.Class[] { messageClass });
                        m.invoke(ex, new java.lang.Object[] { messageObject });

                        throw new java.rmi.RemoteException(ex.getMessage(), ex);
                    } catch (java.lang.ClassCastException e) {
                        throw f;
                    } catch (java.lang.ClassNotFoundException e) {
                        throw f;
                    } catch (java.lang.NoSuchMethodException e) {
                        throw f;
                    } catch (java.lang.reflect.InvocationTargetException e) {
                        throw f;
                    } catch (java.lang.IllegalAccessException e) {
                        throw f;
                    } catch (java.lang.InstantiationException e) {throw f;}
                } else {throw f;}
            } else {throw f;}
        } finally {_messageContext.getTransportOut().getSender().cleanup(_messageContext);}
    }

XML retornado pelo SEFAZ do Paraná:

<env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
    <env:Header xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
        <nfeCabecMsg xmlns='http://www.portalfiscal.inf.br/nfe'>
            <cUF>41</cUF>
            <versaoDados>2.00</versaoDados>
        </nfeCabecMsg>
    </env:Header>
    <env:Body xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
        <nfeStatusServicoNF2Result xmlns='http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2'>
            <retConsStatServ versao='2.00' xmlns='http://www.portalfiscal.inf.br/nfe'>
                <tpAmb>2</tpAmb>
                <verAplic>PR-v2_2_3"</verAplic>
                <cStat>107"</cStat>
                <xMotivo>Serviço em Operação</xMotivo>
                <cUF>41"</cUF>"
                <dhRecbto>2011-05-12T22:10:14</dhRecbto>
                <tMed>1</tMed>
            </retConsStatServ>
        </nfeStatusServicoNF2Result>
    </env:Body>
</env:Envelope>"

Só como exemplo, segue o XML retornado de SP

<?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/NfeStatusServico2">
            <cUF>35</cUF>
            <versaoDados>2.00</versaoDados>
        </nfeCabecMsg>
    </soap:Header>
    <soap:Body>
        <nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
            <retConsStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
                <tpAmb>2</tpAmb>
                <verAplic>SP_NFE_PL_006h</verAplic>
                <cStat>107</cStat>
                <xMotivo>Serviço em Operação</xMotivo>
                <cUF>35</cUF>
                <dhRecbto>2011-05-13T15:24:40</dhRecbto>
                <tMed>1</tMed>
            </retConsStatServ>
        </nfeStatusServicoNF2Result>
    </soap:Body>
</soap:Envelope>

Alguém sabe como contornar a falta da tag <?xml>?

Obrigado,
Fernando Hirata Alexandre

Como eu faço para validar a assinatura de um XML que minha empresa recebeu de um Fornecedor e como validar se essa assinatura é a mesma que está na receita federal.

Eu pensei em fazer da seguinte forma:
1º Pego a NFe, retiro a assinatura original e assino novamente, depois comparo os DigestValue.
2º Faço uma consulta da situação da Nota na SEFAZ e comparo ali tambem com DigestValue que volta no protocolo da SEFAZ.

Seria isso, ou eu estou viajando muito?

Minha duvida é se eu assinar a nota original novamente não pode dar diferença visto que eu vou assinar com outro certificado já que eu não tenho o certificado do Fornecedor em mãos.

Obrigado

[quote=rafaelbtz]Como eu faço para validar a assinatura de um XML que minha empresa recebeu de um Fornecedor e como validar se essa assinatura é a mesma que está na receita federal.

Eu pensei em fazer da seguinte forma:
1º Pego a NFe, retiro a assinatura original e assino novamente, depois comparo os DigestValue.
2º Faço uma consulta da situação da Nota na SEFAZ e comparo ali tambem com DigestValue que volta no protocolo da SEFAZ.

Seria isso, ou eu estou viajando muito?

Minha duvida é se eu assinar a nota original novamente não pode dar diferença visto que eu vou assinar com outro certificado já que eu não tenho o certificado do Fornecedor em mãos.

Obrigado
[/quote]

Que eu saiba, é só você consultar a nota no SEFAZ do estado em que ela foi emitida.
O retorno da consulta traz uma assinatura digital.
Se você assinar a nota com um certificado diferente, a cadeia de Assinatura Digital com serteza será diferente.

Atenciosamente,
Fernando Hirata Alexandre