Crear QR de AFIP en Ruby

Con pocas líneas de código


Crear QR de AFIP en Ruby

Luego de obtener el CAE vamos a generar el QR de AFIP para nuestro comprobante.

Preparamos el QR

Para generar el QR vamos a utilizar rqrcode

gem install rqrcode

Y generamos el codigo QR

require "rqrcode"
require "json"
require "base64"

# Datos para el QR
qr_code_data = {
  "ver": 1, # Versión del formato de los datos (1 por defecto)
  "fecha": "2017-10-25", # Fecha de emisión del comprobante
  "cuit": 12345678912, # Cuit del Emisor del comprobante
  "ptoVta": 1, # Punto de venta utilizado para emitir el comprobante
  "tipoCmp": 6, # Tipo de comprobante
  "nroCmp": 32, # Tipo de comprobante
  "importe": 150, # Importe Total del comprobante (en la moneda en la que fue emitido)
  "moneda": "ARS", # Moneda del comprobante
  "ctz": 1, # Cotización en pesos argentinos de la moneda utilizada
  "tipoDocRec": 80, # Código del Tipo de documento del receptor
  "nroDocRec": 12345678912, # Número de documento del receptor
  "tipoCodAut": "E", # “A” para comprobante autorizado por CAEA, “E” para comprobante autorizado por CAE
  "codAut": 12345678912345 # CAE o CAEA, segun corresponda
}

# Preparamos el texto para el qr en base a https://www.afip.gob.ar/fe/qr/documentos/QRespecificaciones.pdf
qr_code_text = "https://www.afip.gob.ar/fe/qr/?p=#{Base64.urlsafe_encode64(JSON.dump(qr_code_data))}"

# Generamos el QR
qrcode = RQRCode::QRCode.new(qr_code_text)

# Lo transformamos a PNG
png = qrcode.as_png(
  bit_depth: 1,
  border_modules: 4,
  color_mode: ChunkyPNG::COLOR_GRAYSCALE,
  color: "black",
  file: nil,
  fill: "white",
  module_px_size: 6,
  resize_exactly_to: false,
  resize_gte_to: false,
  size: 200
)

puts "data:image/png;base64,#{Base64.encode64(png.to_s)}" # Podemos obtenerlo como URL para usar en <img src="..."> tag
IO.binwrite("./qr-afip.png", png.to_s) # o podemos guardarlo como un archivo

QR de AFIP

Ya tenemos el QR listo para nuestro comprobante. Ahora podemos crear el PDF

Conéctate a ARCA hoy mismo

Certificados, código, tutoriales, soporte... todo lo que necesitas para usar los web services de ARCA en un solo lugar.