Crear QR de AFIP en PHP

Con pocas líneas de código


Crear QR de AFIP en PHP

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 endroid/qr-code

composer require endroid/qr-code

Y generamos el codigo QR

require('./vendor/autoload.php');

use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\RoundBlockSizeMode;
use Endroid\QrCode\Writer\PngWriter;
use Endroid\QrCode\Writer\ValidationException;

// Datos para el QR (Respetar si es string o numero)
$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_encode(json_encode($QR_code_data));

// Create QR code
$qrCode = new QrCode(
    data: $QR_code_text,
    encoding: new Encoding('UTF-8'),
    errorCorrectionLevel: ErrorCorrectionLevel::Low,
    size: 300,
    margin: 10,
    roundBlockSizeMode: RoundBlockSizeMode::Margin,
    foregroundColor: new Color(0, 0, 0),
    backgroundColor: new Color(255, 255, 255)
);

$result = (new PngWriter())->write($qrCode, $logo, $label);

echo $result->getDataUri(); // Podemos obtenerlo como URL para uswr en <img src="..."> tag
$result->saveToFile(__DIR__.'/qr_code.png'); // 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.