genera un Comprobante Fiscal Digital por Internet (CFDI) versión 3.3
El código que has compartido es un script en PHP que genera un Comprobante Fiscal Digital por Internet (CFDI) versión 3.3, de acuerdo con los requerimientos del Servicio de Administración Tributaria (SAT) de México. Este script realiza varias tareas, como la creación de un archivo XML, la generación de un sello digital, y la comunicación con un Proveedor Autorizado de Certificación (PAC) para timbrar el CFDI.
Para entender y comenzar a hacer tu propio CFDI, te guiaré a través de los pasos básicos y te proporcionaré un ejemplo sencillo.
Pasos para crear un CFDI:
Configuración Inicial:
Establece la zona horaria.
Define las rutas de los directorios donde se almacenarán los archivos necesarios.
Asignación de Valores a Variables:
Define las variables necesarias para el CFDI, como los datos del emisor, receptor, y los conceptos que se incluirán en la factura.
Creación del Archivo XML:
Utiliza la clase
DOMDocumentde PHP para crear y manipular el archivo XML.Añade los nodos y atributos necesarios para el CFDI.
Generación del Sello Digital:
Usa la función
openssl_signpara generar el sello digital con la clave privada.Convierte el sello a formato Base64.
Timbrado del CFDI:
Envía el archivo XML al PAC para obtener el timbre fiscal.
Procesos Posteriores al Timbrado:
Guarda el archivo XML timbrado.
Genera un código QR para el CFDI.
Ejemplo Sencillo:
Aquí tienes un ejemplo simplificado de cómo podrías comenzar a crear tu propio CFDI:
<?php
header('Content-Type: text/html; charset=UTF-8');
// Configuración inicial
date_default_timezone_set('America/Mexico_City');
// Asignación de valores a variables
$emisor_rfc = "TCM970625MB1";
$receptor_rfc = "XAXX010101000";
$fecha = date("Y-m-d\TH:i:s");
$subTotal = "100.00";
$total = "116.00";
$moneda = "MXN";
$formaDePago = "01";
$metodoDePago = "PUE";
$LugarExpedicion = "45079";
// Creación del archivo XML
$xml = new DOMDocument('1.0', 'UTF-8');
$root = $xml->createElement("cfdi:Comprobante");
$root = $xml->appendChild($root);
// Añadir atributos al nodo raíz
$root->setAttribute("xsi:schemaLocation", "http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd");
$root->setAttribute("xmlns:cfdi", "http://www.sat.gob.mx/cfd/3");
$root->setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
$root->setAttribute("Version", "3.3");
$root->setAttribute("Fecha", $fecha);
$root->setAttribute("SubTotal", $subTotal);
$root->setAttribute("Total", $total);
$root->setAttribute("Moneda", $moneda);
$root->setAttribute("FormaPago", $formaDePago);
$root->setAttribute("MetodoPago", $metodoDePago);
$root->setAttribute("LugarExpedicion", $LugarExpedicion);
// Añadir nodo Emisor
$emisor = $xml->createElement("cfdi:Emisor");
$emisor = $root->appendChild($emisor);
$emisor->setAttribute("Rfc", $emisor_rfc);
$emisor->setAttribute("Nombre", "Nombre del Emisor");
$emisor->setAttribute("RegimenFiscal", "601");
// Añadir nodo Receptor
$receptor = $xml->createElement("cfdi:Receptor");
$receptor = $root->appendChild($receptor);
$receptor->setAttribute("Rfc", $receptor_rfc);
$receptor->setAttribute("Nombre", "Nombre del Receptor");
$receptor->setAttribute("UsoCFDI", "G01");
// Guardar el archivo XML
$xml->formatOutput = true;
$xml->save('cfdi.xml');
echo "Archivo CFDI creado con éxito.";
?>Este ejemplo crea un archivo XML básico para un CFDI. Necesitarás añadir más detalles y funcionalidades, como la generación del sello digital y el proceso de timbrado, para que sea completamente funcional. Además, deberás manejar las claves privadas y certificados adecuadamente, y asegurarte de cumplir con todas las regulaciones del SAT.
Comentarios
Publicar un comentario