Ayuda a desarrolladores para integrar Verifactu con PHP: aprende a realizar peticiones REST, generar facturas con QR, firmar con certificado digital y crear XML de forma eficiente.

Para cumplir con los requisitos de Verifactu, existen dos opciones principales:
Integrarse directamente con la administración: Este enfoque presenta varios retos técnicos, entre ellos:
Usar una API REST como Verifacti: Una solución sencilla que permite realizar peticiones en JSON sin necesidad de certificado digital y sin los retos técnicos de la integración directa. Ver documentación API Verifactu.
De cara a usar una API Rest como la de Verifactu, es necesario poder realizar llamadas a este tipo de APIs. Para realizar una petición HTTP a una API REST desde PHP, puedes utilizar diferentes métodos. Las librerías más comunes son:
A continuación, un ejemplo de cómo realizar la misma petición usando cURL en PHP:
<?php
$url = "https://api.verifacti.com/verifactu/create";
$apiKey = "<API_KEY>";
$data = '{
"serie": "A",
"numero": "234634",
"fecha_expedicion": "02-12-2024",
"tipo_factura": "F1",
"descripcion": "Descripcion de la operacion",
"nif": "A15022510",
"nombre": "Nombre cliente",
"lineas": [{
"base_imponible": "200",
"tipo_impositivo": "21",
"cuota_repercutida": "42"
}],
"importe_total": "242"
}';
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer " . $apiKey,
"Content-Type: application/json"
),
));
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
echo "cURL Error: " . $error;
} else {
echo $response;
}
?>Parte de la integración requerirá pegar un QR en un documento PDF desde PHP. Para ello puedes utilizar:
Ejemplo con FPDF:
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image('qr_code.png', 10, 10, 50, 50);
$pdf->Output('factura.pdf', 'F');Si vas a optar por generar tú mismo el QR, para generar un código QR en PHP, puedes utilizar librerías como:
Ejemplo usando QRcode:
include('phpqrcode/qrlib.php');
QRcode::png('Texto de ejemplo', 'qr_code.png');Nota: Este paso sería innecesario si se usa Verifacti, ya que la API proporciona el QR.
Obligatoriedad Verifactu. Quién está obligado al cumplimiento de VeriFactu. Obligatoriedad para sisemas informáticos de facturación, personas jurídicas y autónomos.
Explicación sobre el Real Decreto 1007/2023, conocido como el reglamento VeriFactu. Resumen e implicaciones del reglamento VeriFactu.
Ayuda a desarrolladores para integrar Verifactu con Python: aprende a realizar peticiones REST, generar facturas con QR, firmar con certificado digital y crear XML de forma eficiente.