Afip SDK también funciona con ARCA, sin cambios necesarios.

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

Conectate a AFIP sin vueltas

Certificados, codigo, tutoriales, soporte, todo lo que necesitas para usar los web services de AFIP en un solo lugar.