Ir para conteúdo
  • Cadastre-se

dev botao

Tag Integridade para NFSe de Limeira


  • Este tópico foi criado há 724 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal, boa tarde...
Estou com uma enorme dificuldade de gerar a tag de integridade para o xml da prefeitura de Limeira/SP
Utilizando o código php demostrado no área do desenvolver da prefeitura de Limeira eu consigo chegar na tag de integridade correta, mas ao gerar pelo componente ACBR, não está gerando igual.
 

<?php
	$token	     = 'd0pQZDIwMExaaWhNSGF6YVE5WDErMDYvRllvUXY2cXp6QncrcWR6aHBqST0=';
	$tag	     = '<RPS>[conteúdo]</RPS>';
	$tag	     = preg_replace('/[^\x20-\x7E]+/','',$tag);
	$tag	     = preg_replace('/[ ]+/','',$tag);
	$integridade = hash('sha512',$tag.$token);
	echo $integridade;
?>


 

function TACBrNFSeX.GerarIntegridade(const AXML: string): string;
var
  XML: string;
  i, j: Integer;
  xAssinatura: TStringList;
begin
  j := Length(AXML);
  XML := '';

  for i := 1 to J do
  begin
    if {$IFNDEF HAS_CHARINSET}ACBrUtil.Compatibilidade.{$ENDIF}CharInSet(AXML[i], ['!'..'~']) then
      XML := XML + AXML[i];
  end;

//  SSL.CarregarCertificadoSeNecessario;

  xAssinatura := TStringList.Create;
  try
    xAssinatura.Add(XML + Configuracoes.Geral.Emitente.WSChaveAcesso);

    Result := string(SSL.CalcHash(xAssinatura, dgstSHA512, outHexa, False));
    Result := lowerCase(Result);
  finally
    xAssinatura.Free;
  end;
end;

Quando chega aqui, para gerar a tag de integridade o resultado para gerar difere do código PHP.
Notei que o resultado para a variável $tag remove todas as tags do xml e concatena com a chave de acesso.
Mesmo fazendo isso e jogando direto nesse CalcHash não chego no resultado desejado:
 

Resultado em PHP

$tag = '7RPSL12022-04-1112022-04-11100.004.004.002108.011233526902358566280002597056038752679829AdrianadaSilvadosSantosRuaZairaOmettoS/NJardimNossaSenhoradoAmparo3526902SP13482275drisantos604@gmail.com22'
$token = 'CJSMFYBDZ1EESHEYROW'

$integridade = 'bb3989b878143f72212aeb17ed608ec1b90c52b98b89c9a84c2310bb5cf304b70d45f45e63e5bdaa2ae331e2bb3118be4f2a010eb55a48d72b7f24cc17765298'

Gostaria da ajuda de você de como resolver isso.

Desde já grato
Raphael
 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Raphael,

Você esta com todos os fontes de todas as pastas atualizados?

Se sim, reinstalou o ACBr?

Se sim, qual é o erro que ocorre ao tentar emitir uma nova para Limeira usando o componente ACBrNFSeX ?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Italo, estou com todos os fontes atualizados.
Tanto que apaguei a pasta ACBR e baixei tudo novamente e reinstalei
O erro que acontece é na tag de integridade - Integridade Inválida

image.thumb.png.ea1ebae9c46360f1965c73821716fc29.png

 

Segundo o pessoal da prefeitura a única coisa errada é a tag de integridade conforme o E-mail que recebi
O token está correto, só o conteúdo da tag que ta errado.

image.thumb.png.030006576acfcc42ceaa7633969f331f.png

E estou com esse problema desde a semana passada.

Desde já grato pela ajuda...

Link para o comentário
Compartilhar em outros sites

  • Consultores

Raphael,

Você tem o manual do provedor iiBrasil que exemplifica a geração da Integridade?

Se sim, poderia anexar?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

italo, 
Tenho sim, a informação de fornecida no site da própria prefeitura de Limeira.

image.thumb.png.4a8536862ae329990fd1819b3e63fec5.png

Essa imagem foi retirada da área do desenvolvedor para NFSe.

Se quiser acessar o site diretamente para verificar :  https://limeira.iibr.com.br/login.php

image.png.4a7455d387b40ac460c08b92b5259e5e.png

 

ou ir diretamente em :  https://limeira.iibr.com.br/dev/dev_dashboard.php#dev_ws_notafiscal$$ZWEyNWMwYWE3N2U2NDhlYWJmODA0Y2YzMDhmMDIzMzZaV0V5TldNd1lXRTNOMlUyTkRobFlXSm1PREEwWTJZek1EaG1NREl6TXpZek5qRT0=$$li_361_3$$3

image.thumb.png.60b8ac904410c1799062ee9f727de0b4.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Raphael,

Eu não conheço PHP, você poderia me explicar o que faz as 3 linhas abaixo?

$tag	     = preg_replace('/[^\x20-\x7E]+/','',$tag);
$tag	     = preg_replace('/[ ]+/','',$tag);
$integridade = hash('sha512',$tag.$token);

Na terceira o $tag.$token, o ponto entre essas 2 variáveis significa uma concatenação?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Italo,
eu conheço pouco de php também, mas o que eu sei é que a função preg_replace() permite substituir sequências baseadas em expressões regulares.

$tag.$token isso é concatenação.

hash('sha512',$tag.$token) vai usar um hash em SHA512 nas 2 variáveis concatenadas.

'/[^\x20-\x7E]+/' é uma expressão regular que significa "qualquer coisa que não seja um código de caractere no intervalo hexadecimal 0x20 a 0x7E, ou seja, 32 a 126 em ascii(https://www.ime.usp.br/~pf/algoritmos/apend/ascii.html) "

 

^ not
\x20 hex código para o caracter de espaço
- to 
\x7e hex código para o caracter ~

Então, qualquer coisa que não esteja neste intervalo será substituído por ''(vazio). Lembrando que esse replace só acontece para o conteúdo das tags, todas as tags são removidas.
Você pode fazer um teste colocando o código disponibilizado no site da prefeitura, neste link(http://phptester.net/) para testar o funcionamento do código.
Substituindo as variáveis(
$tag e $token) pelo conteudo informado para se chegar ao valor da tag de integridade como mostra a imagem.
image.thumb.png.f62edc79eb06008108ea10f26f225b27.png

A tag de integridade foi gerada exatamente igual ao exemplo da prefeitura de Limeira.

Pode-se testar os valores de cada variavel em cada momento do processamento colocando o echo depois de cada código, como na imagem abaixo.

image.thumb.png.e27f1520d6356b43fb0680735988b40b.png

Eu estou perto de conseguir implementar, se conseguir, envio o código para vocês.
Meu problema está no hash que não ta batendo, estou usando a DLL WinCrypt mas não ta batendo
 

    SSL.SSLCryptLib := cryWinCrypt;
    SSL.SSLHttpLib := httpWinHttp;
    SSL.SSLXmlSignLib := xsLibXml2;

    Memo2.Text := lowerCase(SSL.CalcHash(XML + WSChaveAcesso, dgstSHA512, outHexa, False));

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Raphael,

Muito estranho pois no exemplo em PHP não tem nada que diz que as tags são removidas, pelo contrario.

veja:

$tag	     = '<RPS>[conteúdo]</RPS>';

Para mim essa linha esta apenas informando que devo pegar o conteúdo do XML referente ao RPS, ou seja, tudo o que esta compreendido entre as tags <RPS> e </RPS> inclusive elas e não pegar os conteúdos de todas as tags concatenar para depois fazer o resto.

Fiz uma alteração nos fontes, favor atualizar, reinstalar e faça novos testes.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Italo, nada ainda... eu já tinha tentado esta modificação de passar as infos de XML e Chave de acesso direto na funcao CalcHash
Veja como está minha configuração do webservice, pode ser que tenha algo de errado


image.thumb.png.4a9995589aeb531afec585ad23cea590.png

 

A opção de SSLType já tentei todos os tipos....

Link para o comentário
Compartilhar em outros sites

  • Consultores

Raphael,

Não acredito que o problema seja o SSLType.

Agora o GerarIntegridade esta igual ao do componente antigo e pelo que me recordo teve um usuário que consegui emitir nota a muito tempo quando ainda não existia o componente novo.

Com essa modificação notei que o resultado final é diferente da implementação anterior.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Italo
Muito obrigado pela ajuda...
Com essa última modificação funcionou.
Não tinha funcionado antes porque eu nao tinha reinstalado, mas quando reinstalei funcionou em relação a integridade.
Esta dando a mensagem de NFSe não encontrada e não trouxe as infos no componente, mas foi gerada.

image.thumb.png.e9c718994b249589ae8f7ce7792f0f81.png

 

Olha o XML de retorno, Não sei porque não esta no componente esses dados, Isso eu resolvo

image.thumb.png.42358f36accc88d7523dbd15fc02683e.png

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Raphael,

Anexe o XML (soap) de retorno para que eu possa analisar e fazer mais algum ajuste se necessário.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Raphael,

Favor atualizar os fontes e reinstale o ACBr e faça novos testes.

O provedor não retorno o XML da NFS-e e sim um link onde você pode visualizar e imprimir o DANFSE.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Raphael,

Esse Link me parece estar codificado, seria interessante descobrir como fazer a decodificação para apresentar ele de forma legível.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Raphael,

Faça um teste com a unit em anexo. Não esqueça de reinstalar o ACBr.

iiBrasil.Provider.pas

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 724 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.