Jump to content
Fivewin Brasil

HashCSRT


Valdir

Recommended Posts

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.

 

Link to comment
Share on other sites

 

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.

 

Link to comment
Share on other sites

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)) )

 

Link to comment
Share on other sites

 

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.

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

 

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...