Valdir Posted March 21, 2019 Report Share Posted March 21, 2019 Boas... Alguém já consegui converter o HasCSRT para os novos paâmetros conforme a NT 2018.005 - v1.20 ? 2.4 Exemplo do hashCSRT Considere a situação hipotética de emissão de uma NF-e, e os parâmetros a serem utilizado no cálculo do “hashCSRT” são: Chave de Acesso: 41180678393592000146558900000006041028190697 CSRT: G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO idCSRT: 01 - Passo 1: Concatenar o CSRT com a chave de acesso da NF-e/NFC-e que está sendo emitida. Resultado: G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO411806783935920001465589000000060410281 90697 - Passo 2: Aplicar o algoritmo SHA-1 sobre o resultado da concatenação do passo 1, gerando uma string de 40 caracteres em hexadecimal. Resultado: <string de 20 bytes hexadecimais> Resultado: 696bfa2de10ce17eaee3ea8123639867c82b8a0c - Passo 3: Converter o resultado do passo anterior para Base64, resultando em uma string de 28 caracteres (20 bytes). Resultado: 696bfa2de10ce17eaee3ea8123639867c82b8a0c Resultado: aWv6LeEM4X6u4+qBI2OYZ8grigw= - Passo 4: Montar o grupo de identificação do responsável técnico (tag: infRespTec). Resultado: <infRespTec> <CNPJ>99999999999999</CNPJ> <xContato>Nome do Contato</xContato> <email>email@empresaficticia.com.br</email> <fone>41999999999</fone> <idCSRT>01</idCSRT> <hashCSRT>696bfa2de10ce17eaee3ea8123639867c82b8a0c</hashCSRT> <hashCSRT>aWv6LeEM4X6u4+qBI2OYZ8grigw=</hashCSRT> </infRespTec> Até o Passo 2, tranquilo, porém ao acessar a o passo 3, não funfa. Alguém sabe porquê ? Obrigado. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 23, 2019 Report Share Posted March 23, 2019 Valdir, Coloquei uma função em C# noutro tópico que se alguém conseguir entender e criar uma no xHarbour o nosso problema estará resolvido. Valdir 1 Quote Link to comment Share on other sites More sharing options...
frkiko Posted March 23, 2019 Report Share Posted March 23, 2019 Bom dia Valdir. - Passo 2: Aplicar o algoritmo SHA-1 sobre o resultado da concatenação do passo 1, gerando uma string de 40 caracteres em hexadecimal. Como que faço o SHA-1 em xHarbour ? Não achei em xHarbour, ou minha versão não tem? Quote Link to comment Share on other sites More sharing options...
Valdir Posted March 24, 2019 Author Report Share Posted March 24, 2019 Bom dia Valdir. - Passo 2: Aplicar o algoritmo SHA-1 sobre o resultado da concatenação do passo 1, gerando uma string de 40 caracteres em hexadecimal. Como que faço o SHA-1 em xHarbour ? Não achei em xHarbour, ou minha versão não tem? Oi Frkiko... Essa função só está presente a partir das Versões mais recentes. Se não me engano, a partir de 2016. frkiko 1 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 25, 2019 Report Share Posted March 25, 2019 Valdir, Cheguei no resultado com a ajuda do João. // CRIAR HashCSRT // wCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" wChave := "41180678393592000146558900000006041028190697" codigo := wCSRT + wChave codigo1 := hb_sha1(codigo, .T.) codigo2 := HB_Base64encode(codigo1, Len(codigo1)) Msginfo( codigo1+chr(13)+chr(13)+"Modelo: aWv6LeEM4X6u4+qBI2OYZ8grigw="+chr(13)+chr(13)+"Gerado: "+codigo2, "HB_base64encode() -> Tamanho: "+str(len(codigo2)) ) frkiko 1 Quote Link to comment Share on other sites More sharing options...
Valdir Posted March 25, 2019 Author Report Share Posted March 25, 2019 Valdir, Cheguei no resultado com a ajuda do João. // CRIAR HashCSRT // wCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" wChave := "41180678393592000146558900000006041028190697" codigo := wCSRT + wChave codigo1 := hb_sha1(codigo, .T.) codigo2 := HB_Base64encode(codigo1, Len(codigo1)) Msginfo( codigo1+chr(13)+chr(13)+"Modelo: aWv6LeEM4X6u4+qBI2OYZ8grigw="+chr(13)+chr(13)+"Gerado: "+codigo2, "HB_base64encode() -> Tamanho: "+str(len(codigo2)) ) Funcionou certinho... Obrigado Oscar. Abraços. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
toya Posted March 25, 2019 Report Share Posted March 25, 2019 ajustado: function NFe_CSRT() local Result := .t. local cIdCSRT := "" local cCSRT := "" local cChaveNFe := "" local cHashCSRT := "" local cBase64 := "" cIdCSRT := "01" cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" cChaveNFe := "41180678393592000146558900000006041028190697" cHashCSRT := hb_sha1( cCSRT + cChaveNFe ) msg_OK_titulo( 'cIdCSRT := "01"' + CRLF + 'cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO"' + CRLF + 'cChaveNFe := "41180678393592000146558900000006041028190697"' + CRLF + 'cHashCSRT := hb_sha1( cCSRT + cChaveNFe )', "Hash do Código de Segurança do Responsável Técnico (CSRT)" ) cBase64 := HB_Base64Encode( HexToSTr( cHashCSRT ), 20 ) msg_OK_titulo( "<idCSRT>01</idCSRT>" + CRLF + "<hashCSRT>" + cBase64 + "</hashCSRT>", "Hash do Código de Segurança do Responsável Técnico (CSRT)" ) return Result Valdir 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 25, 2019 Report Share Posted March 25, 2019 Many thanks Toya, amarrando os links: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=19894#p129577 Quote Link to comment Share on other sites More sharing options...
Valdir Posted March 26, 2019 Author Report Share Posted March 26, 2019 ajustado: function NFe_CSRT() local Result := .t. local cIdCSRT := "" local cCSRT := "" local cChaveNFe := "" local cHashCSRT := "" local cBase64 := "" cIdCSRT := "01" cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" cChaveNFe := "41180678393592000146558900000006041028190697" cHashCSRT := hb_sha1( cCSRT + cChaveNFe ) msg_OK_titulo( 'cIdCSRT := "01"' + CRLF + 'cCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO"' + CRLF + 'cChaveNFe := "41180678393592000146558900000006041028190697"' + CRLF + 'cHashCSRT := hb_sha1( cCSRT + cChaveNFe )', "Hash do Código de Segurança do Responsável Técnico (CSRT)" ) cBase64 := HB_Base64Encode( HexToSTr( cHashCSRT ), 20 ) msg_OK_titulo( "<idCSRT>01</idCSRT>" + CRLF + "<hashCSRT>" + cBase64 + "</hashCSRT>", "Hash do Código de Segurança do Responsável Técnico (CSRT)" ) return Result Grande Mestre Toya... Obrigado mais uma vez pela ajuda. Abraços. Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted March 27, 2019 Report Share Posted March 27, 2019 Pessoal boa noite. Essa função HB_BASE64ENCODE, está na xHarbour.lib ou em outra LIB? Na compilação, está dando erro pela ausência dela. []s, Quote Link to comment Share on other sites More sharing options...
Valdir Posted March 27, 2019 Author Report Share Posted March 27, 2019 Pessoal boa noite. Essa função HB_BASE64ENCODE, está na xHarbour.lib ou em outra LIB? Na compilação, está dando erro pela ausência dela. []s, Amigo Jorge... Se não me engano, é a Tlib ou RTlib. Abraços. Quote Link to comment Share on other sites More sharing options...
Valdir Posted March 27, 2019 Author Report Share Posted March 27, 2019 Só completando... Não sei se estará presente nas versões anteriores de 2016. Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted March 27, 2019 Report Share Posted March 27, 2019 Só completando... Não sei se estará presente nas versões anteriores de 2016. Obrigado Valdir, ontem mesmo, eu atualizei o xHb e com isso, a TIP.LIB e resolveu, inclusive havia marcado como resolvido a minha questão, mas acho que esqueci de salvar ahahahah Valdir 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.