platinum-place / laravel-dgii
Integration package for DGII (Electronic Invoicing e-CF) Dominican Republic. Automated signature, authentication, and submission for standard, consumption, and range cancellation documents.
Package info
github.com/platinum-place/laravel-dgii
Language:Blade
pkg:composer/platinum-place/laravel-dgii
Requires
- php: ^8.2
- ext-dom: *
- ext-libxml: *
- ext-simplexml: *
- illuminate/http: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
- platinum-place/php-dgii-xml-signer: ^1.0
Requires (Dev)
- laravel/pint: ^1.21
- orchestra/testbench: ^9.0|^10.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0
- dev-main
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.25
- v1.2.24
- v1.2.23
- v1.2.22
- v1.2.21
- v1.2.20
- v1.2.19
- v1.2.18
- v1.2.17
- v1.2.16
- v1.2.15
- v1.2.14
- v1.2.13
- v1.2.12
- v1.2.11
- v1.2.10
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.26
- v1.0.25
- v1.0.24
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-05-28 12:43:33 UTC
README
🎯 Filosofía del Paquete
Este paquete sigue una filosofía de facilitador (enabler):
- El que sabe usar la DGII sabe usar el paquete.
- No intentamos "esconder" ni duplicar las validaciones o flujos de la DGII bajo modelos complejos o DTOs pesados.
- El paquete es 100% libre de estado (stateless) y no almacena credenciales ni claves en el archivo de configuración. Todo (entornos, tokens de acceso, certificados, contraseñas) se suministra en tiempo de ejecución por quien consume el método.
- Facilitamos únicamente las partes complejas de la integración:
- La firma digital PKCS#12 de los XMLs.
- La autenticación mediante el ciclo Semilla -> Firma -> Token de acceso.
- La comunicación HTTP nativa optimizada con macros de Laravel para subir y consultar e-CF.
🏗️ Estructura de Directorios
- Services (
src/Services/): Contiene los servicios internos encargados del renderizado y firma digital de los XMLs (DgiiXmlRender) y del envío de peticiones HTTP a los servidores web de la DGII (DgiiClient). - DgiiService (
src/Services/DgiiService.php): Gateway minimalista expuesto mediante el FacadeDgiique inyecta y orquesta los servicios internos para exponer firmas de métodos limpias. - Templates (
resources/views/): Vistas Blade opcionales para la estructuración de XMLs de e-CF estándar, de consumo, anulaciones y acuses.
🛠️ Instalación
Instala el paquete mediante Composer:
composer require platinum-place/laravel-dgii
Publica el archivo de configuración opcional para endpoints y dominios:
php artisan vendor:publish --tag=dgii-config
🚀 Uso Rápido (vía Facades)
Toda interacción pública se realiza a través del Facade Dgii.
1. Obtener Semilla y Autenticarse
use PlatinumPlace\LaravelDgii\Facades\Dgii; // 1. Obtener semilla limpia desde la DGII $seedXml = Dgii::getSeed('testecf'); // testecf (sandbox), certecf (certificación), ecf (producción) // 2. [Tu aplicación] Firma digitalmente el XML de la semilla y guárdalo en un archivo. // 3. Intercambiar la semilla firmada por un access token oficial $authInfo = Dgii::verifySeed('testecf', '/ruta/a/semilla_firmada.xml'); $accessToken = $authInfo['token'];
2. Generar y Firmar Facturas (e-CF)
Puedes usar las plantillas Blade del paquete o generar tu propio XML y firmarlo manualmente usando el SignManager integrado.
use PlatinumPlace\LaravelDgii\Facades\Dgii; $invoiceData = [ 'IdDoc' => ['TipoeCF' => 31, 'eNCF' => 'E310000000001', ...], 'Emisor' => [...], 'Comprador' => [...], 'DetallesItems' => [...] ]; $certContent = file_get_contents('/ruta/al/certificado.p12'); $certPassword = 'tu_contraseña'; // Genera el XML y aplica la firma digital PKCS#12 $result = Dgii::renderInvoice($certContent, $certPassword, $invoiceData); // Contiene 'xml' (el string firmado) y opcionalmente 'integral' $signedXml = $result['xml']; // [Tu aplicación] Guarda el XML firmado donde prefieras en tu disco local o base de datos.
3. Enviar e-CF y Consultar Estatus
use PlatinumPlace\LaravelDgii\Facades\Dgii; // 1. Enviar el XML firmado a la DGII (especificando el ambiente, token y archivo) $result = Dgii::sendInvoice('testecf', $accessToken, '/ruta/al/comprobante_firmado.xml'); $trackId = $result['trackId']; // 2. Consultar el estado de procesamiento del comprobante mediante el trackId $status = Dgii::findInvoice('testecf', $accessToken, $trackId);
4. Consultar Estatus de Servicios de la DGII
Para estos métodos de disponibilidad, asegúrate de tener configurada tu DGII_API_KEY en tu .env.
use PlatinumPlace\LaravelDgii\Facades\Dgii; // Consulta el estado general de disponibilidad de los servicios de la DGII $services = Dgii::getServiceStatus(); // Consulta las ventanas de mantenimiento programadas por la DGII $maintenance = Dgii::getMaintenanceWindows();
📖 Documentación Completa
- Primeros Pasos - Guía detallada para comenzar la integración.
- Arquitectura de Servicios - Detalle técnico del sistema de servicios.
- Referencia del Facade - Listado y especificación detallada de todos los métodos expuestos a través del Facade
Dgii. - Estructuras de Datos - Detalle del formato esperado en los arrays para renderizar XMLs utilizando las plantillas Blade.
⚖️ Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.