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
- illuminate/http: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
Requires (Dev)
- laravel/pint: ^1.21
- orchestra/testbench: ^9.0|^10.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-06-01 14:27:44 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) se suministra en tiempo de ejecución por quien consume el método.
- Facilitamos únicamente las partes complejas de la integración:
- El renderizado de los XMLs requeridos por la DGII (e-CF estándar, de consumo, anulaciones y acuses) mediante plantillas Blade listas y optimizadas.
- La autenticación mediante el flujo de intercambio Semilla -> Token de acceso.
- La comunicación HTTP nativa optimizada con macros de Laravel para subir y consultar e-CF.
Note
La firma digital PKCS#12 de los XMLs es responsabilidad de la aplicación que consume este paquete. Esto permite mantener la base del paquete ligera y libre de estado.
Estructura de Directorios
- Services (
src/Services/): Contiene los servicios internos encargados del renderizado 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 Facturas (e-CF)
Puedes usar las plantillas Blade del paquete para renderizar tus e-CF a formato XML crudo.
use PlatinumPlace\LaravelDgii\Facades\Dgii; $invoiceData = [ 'IdDoc' => ['TipoeCF' => 31, 'eNCF' => 'E310000000001', ...], 'Emisor' => [...], 'Comprador' => [...], 'DetallesItems' => [...] ]; // Genera el XML limpio listo para ser firmado por tu aplicación $xml = Dgii::renderInvoice($invoiceData); // [Tu aplicación] Aplica la firma digital PKCS#12 al XML generado y guárdalo.
Para generar facturas de consumo (RFCE):
// Genera el XML de consumo limpio (requiere el código de seguridad e-CF de la firma original) $consumerXml = Dgii::renderConsumerInvoice($securityCode, $invoiceData);
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();
Soporte y Consultoría
Si necesitas asistencia técnica con la implementación de este paquete o tienes dudas generales sobre el ecosistema de Facturación Electrónica en la República Dominicana, puedes contactarme directamente.
Ofrezco servicios de consultoría especializada para empresas que buscan certificar sus sistemas ante la DGII.
- Contacto: Mis métodos de contacto actualizados están disponibles en mi Perfil de GitHub.
- Issues: Para errores del paquete, por favor abre un issue en este repositorio.
Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.