QRCode, SAT-Fiscal e o Leitor de cupons da Receita.

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

QRCode, SAT-Fiscal e o Leitor de cupons da Receita.

Mensagem por rochinha »

Amiguinhos,

Eis que anos já se passaram depois do inicio do tópico SAT-Fiscal a mistica está desvendada do qual aprendemos como manipular as .DLLs do trato com o ambiente S@T-CFe.

Para os que decidiram usar programação pura ao invés do projeto ACBr provavelmente estão felizes com os resultados, mas a pergunta que não quer calar é:

Como estão as leituras dos códigos QR-Code gerado por suas aplicações?
Estão sendo lidas corretamente e direcionando para o cupom armazenado no ambiente da Receita?

Eu uso em meu smartphone com Android o aplicativo DeOlhoNaNota e em muitos testes cheguei a um ponto de 99% de acerto.

Uso também a codificação pura, e em testes com DIMEP pude perceber que o mesmo retorna uma string criptografada que vem com algo a mais, me causando erros de leitura do aplicativo da Receita.

No trecho abaixo está contida a assinatura retornada pelo DIMEP o qual deverá ser usado para gerar o QR-Code que será impresso:

<assinaturaQRCODE>ItoUgEIfFKSh2fzo1HoxtL8uTmB7y+gVr49K7u/NH+S9g/aobElBQnYf5l7EalJB7r8v1hKszuUOk+yoYRnsH8AI5ap7tPqfAwAIehv7PcGWNfVJii7qurs++
71VR+mCwDMZjRV66jYTNal4/2xJAc/Wnqop18NlpSdoevn6i4OMi89OZO++vy5hpAByHCoRqXHBAkummmNFxBCw2x4nN0KuZnkExgeCBW8PbVYDUJ92Arm1f42ecrVMB4QOo
C2zMt0Z99HWWoVW2CpdQi85XC0zZl21wPHcPgrOw97gc0R/JSWbxK2Bj6hEeTPjZ+Q1b5Q+9XBds3OLRhzEdfnXlw==hygljwuohmmoewarfnmighlxzke7k2bjlto4
sb2vltorgm26khhangknnfvpzydt5terudyw5vuvtzlhlqs3qrzvplfnlvw==</assinaturaQRCODE>


Para montagem da string que será passada para a impressora para a montagem perfeita eu preciso retirar da assinatura acima somente o que eu desejo:

ItoUgEIfFKSh2fzo1HoxtL8uTmB7y+gVr49K7u/NH+S9g/aobElBQnYf5l7EalJB7r8v1hKszuUOk+yoYRnsH8AI5ap7tPqfAwAIehv7PcGWNfVJii7qurs++
71VR+mCwDMZjRV66jYTNal4/2xJAc/Wnqop18NlpSdoevn6i4OMi89OZO++vy5hpAByHCoRqXHBAkummmNFxBCw2x4nN0KuZnkExgeCBW8PbVYDUJ92Arm1f42ecrVMB4QOo
C2zMt0Z99HWWoVW2CpdQi85XC0zZl21wPHcPgrOw97gc0R/JSWbxK2Bj6hEeTPjZ+Q1b5Q+9XBds3OLRhzEdfnXlw==


Vejam que desprezei o trecho:

hygljwuohmmoewarfnmighlxzke7k2bjlto4sb2vltorgm26khhangknnfvpzydt5terudyw5vuvtzlhlqs3qrzvplfnlvw==

Vejam um trecho de código:

Código: Selecionar todos

   oXMLDoc := TOLEAUTO():New("Microsoft.XMLDOM")
   oXMLDoc:async := .f. 

   lSuccess := oXMLDoc:loadXML( cXMLFile )

   if lSuccess // se abriu com sucesso...

      oXMLide := oXMLDoc:getElementsByTagName( "ide" ):Item(0) // pega o objeto completo // :xml

      // Pego a assinatura completa
      assinaturaQRCODE := XMLGetResult( "assinaturaQRCODE", oXMLide ) // oXMLide:getElementsByTagName( "assinaturaQRCODE" ):Item(0):Text

      // Pego somente o trecho correspondente a assinatura
      cAssinaturaQRCodeOK := substr( assinaturaQRCODE, 1, at("==", assinaturaQRCODE )+1 )
      ...
Ficando assim a minha string de impressão:

35160511111111111111599000001020001697721888|20160518000333|26.60|11111111111111|ItoUgEIfFKSh2fzo1HoxtL8uTmB7y+gVr49K7u/NH+S9g/aobElBQnYf5l7EalJB7r8
v1hKszuUOk+yoYRnsH8AI5ap7tPqfAwAIehv7PcGWNfVJii7qurs++71VR+mCwDMZjRV66jYTNal4/2xJAc/Wnqop18NlpSdoevn6i4OMi89OZO++vy5hpAByHCoRqXHBAkummmNFxBC
w2x4nN0KuZnkExgeCBW8PbVYDUJ92Arm1f42ecrVMB4QOoC2zMt0Z99HWWoVW2CpdQi85XC0zZl21wPHcPgrOw97gc0R/JSWbxK2Bj6hEeTPjZ+Q1b5Q+9XBds3OLRhzEdfnXlw==


Vejam que depois dos caracteres "==" não exista mais nada e assim deve ser.

Estou codificando a impressão usando ESC/POS na Bematech MP-2500, MP-4000 e MP-4200 sendo que na MP-4200 o QR-Code é nativo e nas outras é necessário atualizar o firmware.

Código: Selecionar todos

   ...
   // Configuracao do QRCode
   iTamanho := Len( x_URL_QrCode ) + 3
   iHigh := iif( iTamanho > 255, iTamanho / 256      , iTamanho )
   iLow  := iif( iTamanho > 255, MOD( iTamanho, 256 ), 0 )
 
   // Impressão do QRCode
   iTam1 := 8 // Melhores resultados
   iTam2 := 8 // Melhores resultados

   // Funciona normalmente
   cBuffer := chr(27) + chr(97) + chr(1) + ;           //esse código faz a centralização
                  chr(29) + chr(107) + chr(81) + ;        //esse é o do qr code
                  chr(2) + chr(iTam1) + chr(iTam2) + chr(1) + ;    //aqui é o tamanho 12/8 8/4
                  chr(iLow) + ;                                //divisão correspondente ao tamanho do texto
                  chr(iHigh) + ;                               //resto da divisão correspondente ao tamanho do texto / 255
                  x_URL_QrCode                             //aqui começa o texto
    fwrite( nTXTCFe, cBuffer )
    ...
Quanto a quais impressoras possuem impressão de QRCode são:

Bematech – MP4200 TH
Bematech – MP2500 TH
Daruma – DR700
EPSON – T20

Caso a sua Bematech não esteja imprimindo nada ou desconfigurada você pode limpar as instalações usando o BemaGost

Caso precise atualizar o firmware de sua MP-4200TH Veja este link

Aqui Um documento interessante

Coloquei este tópico separado do principal para manter o foco somente no QR-Code. Peço aos amigos que mantenham o foco.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

QRCode, SAT-Fiscal e o Leitor de cupons da Receita.

Mensagem por HASA »

:-O
Bom dia, Rocha vc desprezou um pedaço da assinatura ( o finalzinho ...Bj6 ) ou foi na ora de selecionar mesmo?

hEeTPjZ+Q1b5Q+9XBds3OLRhzEdfnXlw==

:D
HASA
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

QRCode, SAT-Fiscal e o Leitor de cupons da Receita.

Mensagem por rochinha »

Amiguinhos,
Vejam que desprezei o trecho:

hygljwuohmmoewarfnmighlxzke7k2bjlto4sb2vltorgm26khhangknnfvpzydt5terudyw5vuvtzlhlqs3qrzvplfnlvw==
Sim desprezei a sub-assinatura do final, não sei o que ela é, parece até assinatura da assinatura, mas depois de retirar este trecho o aplicativo não deu mais erro de assinatura e passou a tentar buscar os dados do cupom na receita, ou seja, tentar, porque eu estava usando cupons gerados no emulador.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

QRCode, SAT-Fiscal e o Leitor de cupons da Receita.

Mensagem por HASA »

:))
- Entendi, tenho pego alguns cupons de SAT em minhas compras e passo pela App QR CODE READER que mostra o conteúdo do QrCode e se comparar veras que a assinatura tem 344 caracteres por esse motivo acredito que não possa cortar.

Outro coisa é que o Sat Tanca manda apenas os 344 caracteres esses a mais que você mencionou deve ser outra coisa do equipamento da Dimep, não entendi o que possa ser.
:-O
HASA
Responder