PHPackages                             alfredomejia/cfdi-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. alfredomejia/cfdi-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

alfredomejia/cfdi-php
=====================

Librería PHP escalable para manejo de CFDI con patrones de diseño modernos.

01PHP

Since Aug 25Pushed 8mo agoCompare

[ Source](https://github.com/AlfredoMejia3001/cfdi-php)[ Packagist](https://packagist.org/packages/alfredomejia/cfdi-php)[ RSS](/packages/alfredomejia-cfdi-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

🚀 CFDI PHP - Librería Completa para Comprobantes Fiscales Digitales
===================================================================

[](#-cfdi-php---librería-completa-para-comprobantes-fiscales-digitales)

📋 Descripción
-------------

[](#-descripción)

**CFDI PHP** es una librería moderna y escalable para generar Comprobantes Fiscales Digitales por Internet (CFDI) en PHP. Implementa patrones de diseño avanzados para ser mantenible, extensible y fácil de usar.

✨ Características Principales
-----------------------------

[](#-características-principales)

- ✅ **CFDI 4.0**: Generación de facturas electrónicas estándar
- ✅ **Complemento de Pagos 2.0**: Para recibos de pago y abonos
- ✅ **Complemento de Carta Porte 3.1**: Para transporte de mercancías
- ✅ **Complemento de Nómina 1.2**: Para nóminas y recursos humanos
- ✅ **Validación Finkok**: Integración con servicios de validación automática
- ✅ **Arquitectura Moderna**: Builder Pattern, Factory Pattern, Strategy Pattern
- ✅ **XML Válido**: Generación conforme a esquemas del SAT
- ✅ **Manejo de Errores**: Validaciones robustas y mensajes claros

🏗️ Arquitectura de la Librería
------------------------------

[](#️-arquitectura-de-la-librería)

### 🔧 Patrones de Diseño Implementados

[](#-patrones-de-diseño-implementados)

1. **Builder Pattern**: Construcción fluida y expresiva de CFDIs
2. **Factory Pattern**: Creación centralizada de diferentes tipos
3. **Strategy Pattern**: Complementos pluggeables y extensibles
4. **Service Layer**: Servicios especializados y reutilizables
5. **Dependency Injection**: Flexibilidad y testing mejorado

### 📁 Estructura del Proyecto

[](#-estructura-del-proyecto)

```
cfdi-php/
├── src/
│   ├── CFDIFactory.php              # 🎯 Punto de entrada principal
│   ├── Builders/                    # 🔧 Constructores fluidos
│   │   ├── AbstractCFDIBuilder.php
│   │   ├── CFDI40Builder.php
│   │   ├── PagosBuilder.php
│   │   ├── CartaPorteBuilder.php
│   │   └── NominaBuilder.php
│   ├── Services/                    # 🛠️ Servicios especializados
│   │   ├── FinkokService.php
│   │   ├── ValidationService.php
│   │   ├── XMLGeneratorService.php
│   │   └── FileService.php
│   ├── Models/                      # 📋 Modelos de datos
│   │   ├── CFDIData.php
│   │   ├── Comprobante.php
│   │   ├── Emisor.php
│   │   └── Receptor.php
│   ├── Contracts/                   # 📜 Interfaces
│   │   ├── CFDIBuilderInterface.php
│   │   ├── ValidationServiceInterface.php
│   │   └── ComplementStrategyInterface.php
│   ├── Strategies/                  # 🔌 Complementos pluggeables
│   │   ├── Pagos/
│   │   ├── CartaPorte/
│   │   ├── Nomina/
│   │   └── ComercioExterior/
│   ├── Exceptions/                  # ⚠️ Excepciones personalizadas
│   │   ├── CFDIException.php
│   │   └── ValidationException.php
│   └── Legacy/                      # 🔄 Clases originales (compatibilidad)
│       ├── CFDI40.php
│       ├── CartaPorte31.php
│       ├── Nomina12.php
│       └── RecepcionPagos.php
├── examples/                        # 📚 Ejemplos de uso
│   ├── ejemplo_cfdi_basico.php
│   ├── ejemplo_pagos.php
│   ├── ejemplo_cartaporte.php
│   ├── ejemplo_nomina.php
│   └── README.md
├── composer.json                    # 📦 Dependencias
└── README.md                        # 📖 Esta documentación

```

🚀 Instalación
-------------

[](#-instalación)

### Requisitos Previos

[](#requisitos-previos)

- **PHP 7.4 o superior**
- **Composer** instalado
- **Extensiones PHP**:
    - `ext-soap` (para comunicación con Finkok)
    - `ext-dom` (para generación de XML)
    - `ext-libxml` (para manipulación de XML)

### Instalación

[](#instalación)

1. **Clonar el repositorio:**

```
git clone https://github.com/AlfredoMejia/cfdi-php.git
cd cfdi-php
```

2. **Instalar dependencias:**

```
composer install
```

3. **Verificar extensiones:**

```
php -m | grep -E "(soap|dom)"
```

🔧 Configuración
---------------

[](#-configuración)

### Credenciales de Finkok

[](#credenciales-de-finkok)

Para usar las validaciones automáticas, necesitas una cuenta en Finkok:

```
$finkokUser = "tu_usuario@finkok.com.mx";
$finkokPass = "tu_password";
```

### Configuración del Entorno

[](#configuración-del-entorno)

```
// Habilitar reporte de errores
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Configurar zona horaria
date_default_timezone_set('America/Mexico_City');
```

📖 Guía de Uso
-------------

[](#-guía-de-uso)

### 🎯 Punto de Entrada Principal

[](#-punto-de-entrada-principal)

La librería se usa a través de `CFDIFactory`, que es el punto de entrada principal:

```
