Download the PHP package ecfx/ecf-dgii-php without Composer
On this page you can find all versions of the php package ecfx/ecf-dgii-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ecfx/ecf-dgii-php
More information about ecfx/ecf-dgii-php
Files in ecfx/ecf-dgii-php
Package ecf-dgii-php
Short Description PHP SDK for the ECF DGII electronic fiscal receipt API (Dominican Republic)
License MIT
Homepage https://github.com/SSD-Smart-Software-Development-SRL/ecf-dgii-php
Informations about the package ecf-dgii-php
ECF DGII PHP SDK
PHP SDK para integrar la facturacion electronica (e-CF) en Republica Dominicana a traves de ECF SSD.
Que es ECF SSD
ECF SSD es una plataforma que simplifica la emision de comprobantes fiscales electronicos (e-CF) en Republica Dominicana. En vez de que cada empresa implemente todo el proceso de comunicacion con la DGII (firmado XML, autenticacion por semilla, manejo de certificados, reintentos, almacenamiento, etc.), ECF SSD lo hace por ti.
Tu solo envias el comprobante en JSON a traves de este SDK, y el servicio se encarga de:
- Firmar el comprobante electronicamente (XML signing con tu certificado digital)
- Autenticar con la DGII (semilla -> token)
- Enviar el e-CF a la DGII
- Validar emisor-receptor
- Almacenar los comprobantes de forma segura
- Reintentar automaticamente en caso de fallos
- Gestionar tus certificados digitales
Usas WooCommerce? Tenemos un plugin listo para facturacion electronica sin escribir codigo.
Buscas otro lenguaje? Tambien disponible en .NET, TypeScript, React, Python, Java, Kotlin, Swift y C++. Ver todos los SDKs y plugins.
Instalacion
Requisitos
- PHP 8.1+
- ext-curl
- ext-json
- ext-mbstring
Como Empezar
Paso 1: Registrate en ECF SSD
Visita https://ecf.ssd.com.do y crea tu cuenta.
Paso 2: Obten tu API Key
- Una vez logueado, selecciona el ambiente Test en el selector de ambientes (esquina superior derecha)
- Ve a Settings > API Key > Generate API Key
- Copia tu API Key -- la usaras como bearer token para autenticarte con el SDK
Paso 3: Contacta a ECF SSD para la Integracion
Contacta al equipo de ECF SSD ([email protected]) para iniciar el proceso de integracion y certificacion de tu sistema (no de las empresas de tus clientes -- la certificacion es para tu plataforma). El equipo te guiara a traves del proceso usando el ambiente de certificacion (Cert).
Paso 4: Usa Produccion
Una vez que tu sistema este integrado y certificado, podras usar el ambiente de produccion (Prod) para emitir comprobantes fiscales electronicos reales.
Vienes de otro proveedor? ECF SSD soporta migracion desde otros proveedores de facturacion electronica. Contacta al equipo para coordinar la transicion.
Configuracion
Ambientes
| Ambiente | URL | Uso |
|---|---|---|
| Test | https://api.test.ecfx.ssd.com.do |
Desarrollo y pruebas internas |
| Cert | https://api.cert.ecfx.ssd.com.do |
Proceso de certificacion con la DGII |
| Prod | https://api.prod.ecfx.ssd.com.do |
Produccion |
Autenticacion
El SDK utiliza JWT Bearer Token. Puedes configurar el token de dos formas:
- Directamente en el codigo: pasando el API Key con
setAccessToken() - Variable de entorno:
ECF_DGII_TOKEN
Ejemplo: Factura de Consumo (ECF 32)
Cada tipo de ECF tiene su propio conjunto de clases con el prefijo del tipo (ej. Ecf32ECF, Ecf32Encabezado, Ecf32Item para Factura de Consumo).
Usando EcfService (auto-routing + polling)
El EcfService enruta automaticamente al endpoint correcto segun el tipo de ECF y hace polling hasta que la DGII termine de procesar:
Como Funciona sendEcf
- Enrutamiento automatico: Determina el endpoint correcto (
/ecf/31,/ecf/32, etc.) basandose en eltipoeCF - Envio: POST al endpoint correspondiente
- Polling: Consulta periodicamente el estado hasta que la DGII responda (
FinishedoError) - Resultado: Retorna el
EcfResponsecon el estado final, codigo de seguridad, URL de impresion, etc.
Respuesta (EcfResponse)
Al completarse el envio, recibes un EcfResponse con los datos necesarios para cumplir con los requisitos de impresion de la DGII:
| Campo | Descripcion |
|---|---|
ImpresionUrl |
URL para generar el codigo QR requerido por la DGII en el comprobante impreso |
CodSec |
Codigo de seguridad -- debe aparecer en el comprobante impreso |
FechaFirma |
Fecha y hora de la firma digital del comprobante |
Estatus |
Estado DGII: Aceptado, AceptadoCondicional, Rechazado |
Progress |
Estado del procesamiento: Queued, Sending, Polling, Finished, Error |
Encf |
Numero de comprobante fiscal electronico (eNCF) |
Mensaje |
Mensaje de respuesta de la DGII |
Errors |
Detalle de errores (si los hay) |
MontoTotal |
Monto total del comprobante |
QR e Impresion
La DGII requiere que todo comprobante impreso incluya un codigo QR. El campo ImpresionUrl contiene la URL que debe codificarse como QR. Adicionalmente, el CodSec (codigo de seguridad) y la FechaFirma deben aparecer impresos en el comprobante.
Tipos de Comprobantes (ECF)
Cada tipo de ECF tiene su propio conjunto de clases. Usa las clases que correspondan a tu tipo de documento:
| Tipo | Prefijo | eNCF | Descripcion | Endpoint |
|---|---|---|---|---|
| 31 | Ecf31* |
E31 | Factura de Credito Fiscal | recepcionEcf31() |
| 32 | Ecf32* |
E32 | Factura de Consumo | recepcionEcf32() |
| 33 | Ecf33* |
E33 | Nota de Debito | recepcionEcf33() |
| 34 | Ecf34* |
E34 | Nota de Credito | recepcionEcf34() |
| 41 | Ecf41* |
E41 | Compras | recepcionEcf41() |
| 43 | Ecf43* |
E43 | Gastos Menores | recepcionEcf43() |
| 44 | Ecf44* |
E44 | Regimenes Especiales | recepcionEcf44() |
| 45 | Ecf45* |
E45 | Gubernamental | recepcionEcf45() |
| 46 | Ecf46* |
E46 | Exportaciones | recepcionEcf46() |
| 47 | Ecf47* |
E47 | Pagos al Exterior | recepcionEcf47() |
Por ejemplo, para enviar una Factura de Credito Fiscal usa Ecf31ECF, Ecf31Encabezado, Ecf31Item, etc. y llama $ecfApi->recepcionEcf31($ecf).
Funcionalidades del API
Ademas de enviar comprobantes, el SDK expone todos los endpoints del API:
| Clase | Descripcion |
|---|---|
EcfService |
Envio de ECF con auto-routing y polling |
EcfApi |
Envio de ECF (tipos 31-47), consultas, busquedas, anulaciones |
CompanyApi |
CRUD de empresas y gestion de certificados |
DgiiApi |
Consultas DGII (directorio, estado, timbre, track IDs, etc.) |
RecepcionApi |
Seguimiento de solicitudes de recepcion |
ApiKeyApi |
Gestion de API keys |
Funcionalidades adicionales
| Funcionalidad | Descripcion |
|---|---|
| Empresas | Crear, consultar y eliminar empresas registradas |
| Certificados | Subir y consultar certificados digitales |
| Consulta de e-CF | Buscar comprobantes por RNC, eNCF, fecha, monto, etc. |
| Aprobacion Comercial | Enviar aprobacion/rechazo comercial (ACECF) |
| Anulacion de Rangos | Solicitar anulacion de secuencias de eNCF |
| Consultas DGII | Directorio, estado, resultado, timbre, RFCE, track IDs |
| Estatus de Servicios | Verificar disponibilidad de servicios DGII |
| API Keys | Crear API keys para acceso programatico |
Uso Directo de los Clientes API
Para control total, usa las clases API generadas directamente:
Manejo de Errores
| Excepcion | Cuando |
|---|---|
EcfProcessingException |
La DGII rechaza el ECF durante el procesamiento |
EcfPollingTimeoutException |
El polling excede el maximo de intentos sin resultado final |
ApiException |
Errores HTTP/red al comunicarse con el API |
Variables de Entorno
| Variable | Descripcion |
|---|---|
ECF_DGII_TOKEN |
API key para autenticacion (desde ecf.ssd.com.do Settings > API Key) |
Ejemplos
examples/ecf32-factura-consumo.json-- Factura de Consumo (ECF 32) con ITBISexamples/ecf31-factura-credito-fiscal.json-- Factura de Credito Fiscal (ECF 31) con ITBIS, impuestos adicionales y descuentos
Regenerar desde OpenAPI Spec
Contribuir
- Fork el repositorio
- Crea tu feature branch (
git checkout -b feature/mi-feature) - Haz commit de tus cambios (
git commit -m 'Agregar mi feature') - Push al branch (
git push origin feature/mi-feature) - Abre un Pull Request
Los tests corren automaticamente via GitHub Actions en cada push y PR.
Documentacion del API
La documentacion completa del API de ECF SSD esta disponible en:
https://ecf.ssd.com.do/documentacion/api-ecf-ssd
Incluye referencia de todos los endpoints, schemas, codigos de error y ejemplos de request/response.
Arquitectura Backend / Frontend
Flujo detallado
- El cliente (browser/app) envía los datos de la factura al backend (
POST /invoice,/order,/sale) - El backend valida, guarda y convierte la factura interna al formato ECF
- El backend envía el ECF a la API de ECF SSD (
POST /ecf/{tipo}) y recibe unmessageId - El backend retorna el
messageIdal cliente — el cliente no espera, puede continuar - Cuando el cliente necesita consultar el estado del ECF, usa
EcfFrontendClientque internamente:- Verifica si hay un token de solo lectura en cache
- Si no existe o expiró: llama a
getToken()(que el consumidor provee — típicamente unfetch('/ecf-token')a su backend), luego llama acacheToken(token)para almacenarlo - Si la API retorna 401: automáticamente llama a
getToken()de nuevo, actualiza el cache, y reintenta
- El cliente hace polling directamente contra la API de ECF SSD (
GET /ecf/{rnc}/{encf}) hasta queprogressseaFinished
Ejemplo: Backend (PHP)
Ejemplo: Frontend (TypeScript con EcfFrontendClient)
El cliente envía la factura al backend PHP, recibe el messageId y encf, y luego usa EcfFrontendClient para consultar el estado directamente contra la API de ECF SSD:
Plugin WooCommerce
Si usas WooCommerce, tenemos un plugin listo para facturacion electronica sin escribir codigo:
Soporte
- Documentacion API: https://ecf.ssd.com.do/documentacion/api-ecf-ssd
- Plataforma: https://ecf.ssd.com.do
- Contacto: [email protected]
- Issues: GitHub Issues
Otros SDKs y Plugins
Este SDK es parte de una coleccion de SDKs oficiales para multiples plataformas:
| Plataforma | Paquete | Instalacion |
|---|---|---|
| .NET | dotnet add package SSDDO.ECF_DGII.SDK |
|
| TypeScript | npm | npm install ecf-dgii-client |
| React | npm | npm install ecf-dgii-react |
| Python | PyPI | pip install ecf-dgii-client |
| PHP | Packagist | composer require ecfx/ecf-dgii-php |
| Java | Maven Central | Ver java/README.md |
| Kotlin | Maven Central | Ver kotlin/README.md |
| iOS/Swift | Swift Package Manager | Ver ios/README.md |
| C++ | vcpkg / Conan | Ver C++/README.md |
| WooCommerce | GitHub | Plugin WordPress |
Licencia
MIT
Hecho con platano power por SSD Smart Software Development SRL
All versions of ecf-dgii-php with dependencies
ext-curl Version *
ext-json Version *
ext-mbstring Version *
guzzlehttp/guzzle Version ^7.3
guzzlehttp/psr7 Version ^1.7 || ^2.0