NFSe - Salvador

1,977 views
Skip to first unread message

Giuliano Nascimento

unread,
Dec 17, 2010, 4:25:09 PM12/17/10
to NFePHP
Caros,

Estou trabalhando na Nota Fiscal de Serviços Eletrônica de Salvador, depois do XML validado, ao enviar pro webservice estou recebendo a mensagem:

E1 - Assinatura do Hash não confere

Já conferi 1 milhão de vezes e ainda não descobri o problema.

Alguém pode dar uma luz?


Giuliano.


Segue um XML de teste:


<?xml version="1.0" encoding="UTF-8"?><EnviarLoteRpsEnvio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"><LoteRps id="1"><NumeroLote>1</NumeroLote><Cnpj>96825575000112</Cnpj><InscricaoMunicipal>09769900102</InscricaoMunicipal><QuantidadeRps>1</QuantidadeRps><ListaRps><Rps><InfRps id="1infRPSid"><IdentificacaoRps><Numero>1</Numero><Serie>1</Serie><Tipo>1</Tipo></IdentificacaoRps><DataEmissao>2010-12-17T18:04:48</DataEmissao><NaturezaOperacao>1</NaturezaOperacao><OptanteSimplesNacional>2</OptanteSimplesNacional><IncentivadorCultural>2</IncentivadorCultural><Status>1</Status><Servico><Valores><ValorServicos>240.00</ValorServicos><ValorDeducoes>0.00</ValorDeducoes><IssRetido>2</IssRetido><ValorIss>48.00</ValorIss><ValorIssRetido>0.00</ValorIssRetido><BaseCalculo>240.00</BaseCalculo><Aliquota>0.05</Aliquota></Valores><ItemListaServico>11.4</ItemListaServico><CodigoTributacaoMunicipio>2927408</CodigoTributacaoMunicipio><Discriminacao>Carregamento</Discriminacao><CodigoMunicipio>2927408</CodigoMunicipio></Servico><Prestador><Cnpj>96825575000112</Cnpj><InscricaoMunicipal>09769900102</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>01838723026436</Cnpj></CpfCnpj></IdentificacaoTomador><RazaoSocial>BRF - BRASIL FOODS S.A.</RazaoSocial><Endereco><Endereco>RODOVIA BR 324, KM 7,5</Endereco><Numero>8859</Numero><Bairro>PIRAJA</Bairro><CodigoMunicipio>2927408</CodigoMunicipio><Uf>BA</Uf><Cep>41290550</Cep></Endereco><Contato><Email>giul...@giusoft.com.br</Email></Contato></Tomador></InfRps><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#1infRPSid"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>8ELsWKEr2277FjmPZpLMbFz6dAc=</DigestValue></Reference></SignedInfo><SignatureValue>fKL8p2CTLeOszNObk6TyqzV4P+AWPDEVlAwlapyT4ZnNFqrO6IjUFxUek5+wwZyoUzfTHBUEEYj4Bz+3GwT/e5PTFUyc8ddp8dhvZDXvGMcTnlLohcF8rYXaKiiXR0w1HYOkymWwDAIg6vGT0b/BCvx/oB363EZjs7vmUdf3Lnw=</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></Rps></ListaRps></LoteRps>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#1"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>Y0E+G/jHlnymgAEwTGHli8+tRmI=</DigestValue></Reference></SignedInfo><SignatureValue>fKL8p2CTLeOszNObk6TyqzV4P+AWPDEVlAwlapyT4ZnNFqrO6IjUFxUek5+wwZyoUzfTHBUEEYj4Bz+3GwT/e5PTFUyc8ddp8dhvZDXvGMcTnlLohcF8rYXaKiiXR0w1HYOkymWwDAIg6vGT0b/BCvx/oB363EZjs7vmUdf3Lnw=</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></EnviarLoteRpsEnvio>

FerreiraH.

unread,
Dec 18, 2010, 4:46:44 PM12/18/10
to nfe...@googlegroups.com
Imagina temos 5500 municipios
Se cada municipio Brasileiro desenvolver sua propria NFSe teremos Um vasto campo para trabalhar.
Se uma empresa prestadora de serviço tiver 50 clientes em municipios diferente ela precisará de 50 softs distinto instalado no micro do faturista isso é lindo.

Sobre sua pergunta precisa enviar o link do manual do municipio em questão, algum de nos precisa estudar este manual, para pode responder.
Ai se demorarem, num fica aborrecido não.

veja este caso
<
RazaoSocial>BRF - BRASIL FOODS S.A.</RazaoSocial><Endereco><Endereco>RODOVIA BR 324, KM 7,5</Endereco>

Me parece confuso <Endereco><Endereco> mas como não tenho o manual não sei avaliar



--
Ferreira Helder
B2Stok.net  B2Stok
Voce pode colaborar

Giuliano Nascimento

unread,
Dec 20, 2010, 6:50:11 AM12/20/10
to NFePHP
Mas tem um detalhe: A ABRASF!!!

Ela criou um padrão que deve estar sendo seguido por vários municípios, o que facilitaria muito o trabalho!

Vejam no link abaixo alguns que já aderiram:

http://www.spedbrasil.net/forum/topics/nfse-padrao-abrasf

http://www.abrasf.org.br/


Giuliano Nascimento

unread,
Dec 20, 2010, 6:55:07 AM12/20/10
to NFePHP
Eu já conferi o layout do XML várias vezes, e está perfeito. Inclusive, valido o XML antes de enviar (com o XSD) e não tenho mais o erro deste tipo.

Mas, me parece que Salvador foge um pouco da especificação (como já notei).

Meu problema agora, é no HASH da assinatura, pois mesmo fazendo como especificado, o webservice reclama que o HASH está errado.

Segue alguns links:

Manual: https://nfsehml.sefaz.salvador.ba.gov.br/OnLine/Documentos/ABRASF%20-%20Manual%20de%20Integracao.pdf
Exemplos XML: https://nfsehml.sefaz.salvador.ba.gov.br/OnLine/Documentos/XML.zip
XSD: https://nfsehml.sefaz.salvador.ba.gov.br/OnLine/Documentos/XSD.zip
Validação de XML: https://nfsehml.sefaz.salvador.ba.gov.br/OnLine/Modulo/ValidaXSDLoteFrm.aspx




From: helder.m...@gmail.com
Date: Sat, 18 Dec 2010 19:46:44 -0200
Subject: Re: [nfephp] NFSe - Salvador
To: nfe...@googlegroups.com

Fabricio Silva

unread,
Dec 20, 2010, 8:54:03 AM12/20/10
to nfe...@googlegroups.com
Bom dia Giuliano, sou de Salvador tb, e desenvolvi a NFSe, com base no NfePHP.
Tive que mudar algumas coisas para que funcionasse.

Veja se entre as tags não está ficando nenhum espaço em branco.

Att,
Fabricio Silva
--
sds,
__________________________________
Fabricio Gondim da Silva

Giuliano Nascimento

unread,
Dec 20, 2010, 4:11:48 PM12/20/10
to NFePHP
Fabricio,

Estou tendo uma dificuldade muito grande de obter ajuda com o suporte da SEFAZ daqui...

Se você puder me ajudar... agradeço muito...

Você poderia calcular o HASH do XML abaixo e me passar o valor?

<InfRps id="1infRPSid"><IdentificacaoRps><Numero>1</Numero><Serie>1</Serie><Tipo>1</Tipo></IdentificacaoRps><DataEmissao>2010-12-20T18:08:13</DataEmissao><NaturezaOperacao>1</NaturezaOperacao><OptanteSimplesNacional>2</OptanteSimplesNacional><IncentivadorCultural>2</IncentivadorCultural><Status>1</Status><Servico><Valores><ValorServicos>240.00</ValorServicos><ValorDeducoes>0.00</ValorDeducoes><IssRetido>2</IssRetido><ValorIss>48.00</ValorIss><ValorIssRetido>0.00</ValorIssRetido><BaseCalculo>240.00</BaseCalculo><Aliquota>0.05</Aliquota></Valores><ItemListaServico>11.4</ItemListaServico><CodigoTributacaoMunicipio>2927408</CodigoTributacaoMunicipio><Discriminacao>Carregamento</Discriminacao><CodigoMunicipio>2927408</CodigoMunicipio></Servico><Prestador><Cnpj>96825575000112</Cnpj><InscricaoMunicipal>09769900102</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>01838723026436</Cnpj></CpfCnpj></IdentificacaoTomador><RazaoSocial>BRF - BRASIL FOODS S.A.</RazaoSocial><Endereco><Endereco>RODOVIA BR 324, KM 7,5</Endereco><Numero>8859</Numero><Bairro>PIRAJA</Bairro><CodigoMunicipio>2927408</CodigoMunicipio><Uf>BA</Uf><Cep>41290550</Cep></Endereco><Contato><Email>giul...@giusoft.com.br</Email></Contato></Tomador></InfRps>

Como pode ver, nenhum espaço nem caractere estranho (acentos, etc.).

Pra mim dá:
RtE2cmVjAnEw4olAN4Xww+zfHQ0=

Usando: $hash=base64_encode(hash('sha1',$xml,TRUE));


Giuliano.

Fabricio Silva

unread,
Dec 20, 2010, 4:38:23 PM12/20/10
to nfe...@googlegroups.com
OI Giuliano,
Percebi que o xml que vc me enviou nao tinha as tags do lote apenas de um RPS... 
Quando estava desenvolvendo a NFSE entrei em contato com o pessoal da sefaz e tava tendo dificuldade tb com o suporte de la...
No meu caso eu monto meu lote todo, assino o rps e depois assino o lote. (coloco apenas um RPS por lote para facilitar a minha vida e eles lá do suporte me informaram que a maioria estava enviando apenas um RPS)
Acrescentei as tags do lote ao xml que vc me enviou e assinei, o hash do RPS bateu exatamento igual ao seu

RtE2cmVjAnEw4olAN4Xww+zfHQ0=



Qualquer dúvida, estou a disposição.
Fabricio Silva



--

Giuliano Nascimento

unread,
Dec 21, 2010, 6:08:25 AM12/21/10
to NFePHP
Estou fazendo exatamente da mesma forma que você, mas o webservice reclama que o HASH está errado!

Só mandei um RPS pra ficar mais simples...

Você teria um XML completamente assinado pra que eu pudesse comparar com o meu?

Pode ser algum problema com a mensagem SOAP... Notei que não usam cabeçalho e dados. Você teria um exemplo também?

Giuliano.


Date: Mon, 20 Dec 2010 18:38:23 -0300

Subject: Re: [nfephp] NFSe - Salvador

Fabricio Silva

unread,
Dec 21, 2010, 7:47:07 AM12/21/10
to nfe...@googlegroups.com
Segue um xml assinado, pronto para ser enviado.
00000000572-rps.xml

Giuliano Nascimento

unread,
Dec 23, 2010, 8:59:41 AM12/23/10
to NFePHP

Valeu!
Vou conferir com o meu e depois retorno...

Giuliano

Giuliano Nascimento

unread,
Dec 26, 2010, 3:25:39 PM12/26/10
to NFePHP
Fabricio,

Você acabou de me confundir mais ainda...

Gerando o HASH da tag InfRps do arquivo que você enviou (ou seja, de <InfRps id="2"> até </InfRps> inclusive), eu não obtenho o mesmo valor que você tem no seu arquivo!

Como você está calculando???


Giuliano.

Fabricio Silva

unread,
Dec 27, 2010, 8:06:03 AM12/27/10
to nfe...@googlegroups.com
Olá Giuliano, segue trecho onde calculo o hash

//extrair a tag com os dados a serem assinados 
// o $tagid é o "InfRps" que passo como parametro para o metodo
$node = $xmldoc->getElementsByTagName($tagid)->item(0);
$nodeSignature = $xmldoc->getElementsByTagName('Rps')->item(0);
$id = trim($node->getAttribute("id"));
$idnome = preg_replace('/[^0-9]/','', $id);
//extrai os dados da tag para uma string
$dados = $node->C14N(FALSE,FALSE,NULL,NULL);
//calcular o hash dos dados
$hashValue = hash('sha1',$dados,TRUE);
//converte o valor para base64 para serem colocados no xml
$digValue = base64_encode($hashValue);

Att,
Fabricio Silva.

--

Eduardo Monteiro

unread,
Sep 15, 2015, 11:22:27 AM9/15/15
to NFePHP, giu...@hotmail.com
Olá,

Como vocês conseguiram resolver o problema da assinatura?
Usei o arquivo XML do Fabricio como comparação.
Obtenho o mesmo Hash de assinatura para o InfRps 6OYoA6DP1w9jesTCeq5rvh/9jQ4= ), mas o lote não bate de forma alguma.

Além disso, quando envio o XML para o WebService de Salvador obtenho a mesma resposta que vocês.

E1
Assinatura do Hash não confere
Reenvie asssinatura do Hash conforme algoritmo estabelecido no Manual de Instrução da NFS-e
Reply all
Reply to author
Forward
0 new messages