platinum-place / php-dgii-xml-signer
XML Signer for DGII (Electronic Invoicing e-CF) Dominican Republic. Implements XMLDSig with specific canonicalization for official validation.
Package info
github.com/platinum-place/php-dgii-xml-signer
pkg:composer/platinum-place/php-dgii-xml-signer
Requires
- php: ^8.1
- ext-dom: *
- ext-openssl: *
- selective/xmldsig: ^3.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0|^11.0
README
Firmador de XML especializado para cumplir con los estándares de Facturación Electrónica (e-CF) de la Dirección General de Impuestos Internos (DGII) en la República Dominicana.
🚀 Características
- Estándar XMLDSig: Implementación robusta basada en
selective/xmldsig. - Canonicalización Especial: Ajustes técnicos en la normalización C14N requeridos por el validador oficial de la DGII.
- Soporte Certificados: Compatible con archivos
.p12y.pfx. - Ligero: Diseñado para ser integrado fácilmente en cualquier proyecto PHP o framework (Laravel, Symfony, etc.).
🛠️ Instalación
composer require platinum-place/php-dgii-xml-signer
📖 Uso rápido
use PlatinumPlace\DgiiXmlSigner\SignManager; $signer = new SignManager(); // Leer el certificado $certContent = file_get_contents('path/to/certificate.p12'); $password = 'tu_password'; // XML a firmar $xml = '<root>...</root>'; // Firmar $signedXml = $signer->sign($certContent, $password, $xml); file_put_contents('signed_invoice.xml', $signedXml);
🙋♂️ 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.