FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Codigo QR AFIP Argentina
Buenas noches:
Estoy utilizando delphi 7 Necesito imprimir el codigo QR en las facturas. Ya tengo el componente que imprime el Codigo y puedo armé el string. Ejemplo: mensaje:='hola loco'; qr.Text:=mensaje; Imprimo la factura y escaneo el codigo y se lee.. "Hola loco". Ahora bien, hay que armar un string con los campos de la factura, pero ese string hay que codificarlo de alguna manera y luego cargarlo al qr. Ej, mensaje:='{"factura": 123456, "fecha ":2023-09-10 ..... etc etc}' mensaje:=fcodificarQR(mensaje); qr.Text:=mensaje; ni idea de como es ese fcodificarQR El link de las especificaciones de la AFIP, están mas abajo, pero son muy claras para quien ya sabe la respuesta. y les copio el ejemplo de JSON y el codificado. Si alguien sabe por donde iniciar esto, se lo agradezco. Saludos https://www.afip.gob.ar/fe/qr/especificaciones.asp JSON con datos del comprobante: {"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65," tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476} Texto codificado en el QR: https://www.afip.gob.ar/fe/qr/?p=eyJ...A1NDM2NzQ3Nn0= |
#2
|
||||
|
||||
Esto último no se copió.
JSON con datos del comprobante: {"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65," tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476} |
#3
|
||||
|
||||
Texto codificado en el QR:
https://www.afip.gob.ar/fe/qr/?p=eyJ...A1NDM2NzQ3Nn0= esto es lo que hay que conseguir |
#4
|
||||
|
||||
Tal vez se me escapa algo, pero por lo que he entendido...
1) Montar un JSON con los datos que te piden: Cita:
2) Codificar ese JSON en base64; Con esa codificación obtienes esto: Cita:
3) Con eso montas la URL, añadiendo delante esto: https://www.afip.gob.ar/fe/qr/?p= Resultado es esta URL: Cita:
(https://qrcode.tec-it.com/es) 5) y puedes probar a "decodificarlo" en este web: https://www.codigos-qr.com/lector-qr-online/ Y volverás a obtener el texto: Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Para crear la imagen QR utilizo el componente TDelphiZXingQRCode
Lo puedes descargar en https://github.com/foxitsoftware/DelphiZXingQRCode Luego hice un procedimiento que me devuelve un TBitmap del mismo
Y lo utilizo para la imagen que voy a imprimir.
|
#6
|
||||
|
||||
Buen día:
Gracias por responder. lo que no sé como hacer es : "Codificar ese JSON en base64" |
#7
|
||||
|
||||
Yo utilizo una unidad que utiliza las librerías de windows para hacer eso...
Pasa de Stream a string y el string está codificado en Base64 También decodifica. Para utilizarlo con un string -> string deberás crear un TMemoryStream de la cadena (JSON) y pasárselo.
|
#8
|
||||
|
||||
Un ejemplo de utilización completa sería:
Última edición por duilioisola fecha: 20-09-2023 a las 16:49:19. |
#9
|
||||
|
||||
Ya te han puesto ejemplos. En la docwiki de embarcadero tienes información de cómo hacerlo. Las versiones nueva ya incluyen lo necesario para hacerlo. https://docwiki.embarcadero.com/Libr...coding_Methods Esta clase: System.NetEncoding.TBase64Encoding se describe como: Provides methods to encode and decode data in base64 format. Posee métodos de clase que puedes llamar directamente. Y algún ejemplos: For example: Encode('Example') returns 'RXhhbXBsZQ=='. Decode('RXhhbXBsZQ==') returns 'Example'.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
||||
|
||||
Casi Casi
Buenos días:
Estoy probando la función que pasó duilioisola. El tema es que codifica bien hasta la posición 164, luego comienzan las diferencias.. esto debería dar: eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJu cm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1Jl YyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0 esto da: eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3 LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJucm9DbXAiOjk0LCJpbXBvcnRlIjox MjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwiIHRpcG9Eb2NSZWMiOjgwLCJu cm9Eb2NSZWMiOjIwMDAwMDAwMDAxLCJ0aXBvQ29kQXV0IjoiRSIsImNvZEF1dCI6 NzA0MTcwNTQzNjc0NzZ9 |
#11
|
||||
|
||||
Me sucedió lo mismo con el ejemplo que enviaste...
El problema era que había un espacio de más... En el ejemplo que escribí hay espacios de más: Mira :"ctz":65,"__tipoDocRec":80,"nroDocRec": Si corriges esto la conversión a Base 64 es correcta. |
#12
|
|||
|
|||
Buenas!!!
Uso el mismo componente para crear un .bmp con el QR, lo que me está dificultando es la impresión, ya que no sale del tamaño que debería. Ahí usas otros componentes gráficos? Recién noto que usas FastReport, Sorry! Saludos y muchas gracias Última edición por waly2k1 fecha: 09-01-2024 a las 22:12:51. Razón: Noté que usas FastReport |
#13
|
|||
|
|||
Impresion del QR?
Y cómo sería la impresión del .bmp? sin FastReport
probé con:
Y nada, solo logro imprimir una imagen muy pequeña ilegible Saludos y muchas gracias! |
#14
|
||||
|
||||
Depende de cómo estés imprimiendo...
Yo utilizo FastReport, pero hay otros muchos componentes para impresión. ¿Cuál utilizas? Supongo que podrías generar un PDF e insertar el gráfico. Además se puede hacer una impresión directa a la impresora. Ciertas impresoras de tickets tienen la funcionalidad de imprimir imágenes o códigos de barra directamente, como si fuera una impresora matricial a la que le envías un código especial y luego la imagen. |
#15
|
|||
|
|||
Buenas!
No utilizo componentes sino con canvas nomás lo hice Pasa que ya tenía el ticket con impresión manual (Printer), luego encontré en otro hilo que decía que la imagen debe ser mucho más grande para que se imprima en tamaño acorde. La hice de 1000 * 1000 e imprime en una pulgada +/-. Perdón por no contestar antes, pero anduve como loco con eso y cuando funcionó suspiré al fin. Siempre uso FastReport, pero para Tickets nunca, me hubiera ahorrado mucho tiempo con la impresión manual de logos/QR. Saludos y muchas gracias por tu tiempo! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Factura Electronica - Afip Argentina | Joe_Balda | Varios | 30 | 30-01-2021 05:10:34 |
Constancia de Inscripcion AFIP argentina | adripugliesso | Varios | 1 | 13-07-2017 22:00:11 |
AFIP Argentina: Consultas al padron de contribuyentes | AgustinOrtu | Bibliotecas de código fuente | 18 | 28-06-2017 04:04:38 |
Factura Electrónica AFIP Argentina | SergioFrey | Noticias | 2 | 19-05-2017 22:02:03 |
Ayuda Web Service AFIP Argentina | patriciojgf | Delphi para la web | 1 | 04-11-2014 18:46:34 |
|