5. Integración con DGII¶
5.1. Endpoints DGII¶
| Operación | URL CERT | URL PROD |
|---|---|---|
| Validar Semilla (token) | /CerteCF/Autenticacion/api/Autenticacion/ValidarSemilla |
/eCF/Autenticacion/api/Autenticacion/ValidarSemilla |
| Recepción e-CF | /CerteCF/RecepcionEcf |
/eCF/RecepcionEcf |
| Consulta TrackID | /CerteCF/ConsultaEstado/{trackid} |
/eCF/ConsultaEstado/{trackid} |
| Aprobación Comercial (ACR) | /CerteCF/AprobacionComercial |
/eCF/AprobacionComercial |
Configurados en .env como DGII_API_BASE_CERT y DGII_API_BASE_PROD. El selector se hace por SaleInvoice.ecf_ambiente.
5.2. Servicios¶
Archivo: accounting/ecf/dgii_client.py.
Funciones clave:
- obtener_token(ambiente, cert) → firma semilla → recibe expires + access_token
- enviar_ecf_a_dgii(invoice, xml_firmado) → POST multipart con bearer + mTLS opcional → devuelve trackid
- consultar_estado_por_trackid(trackid, ambiente) → GET → devuelve estado normalizado
- enviar_aprobacion_comercial(ecf_recibido) → ACR
Manejo de errores en accounting/services/error_classifier.py: clasifica respuestas DGII en XML_INVALIDO, RNC_INACTIVO, ENCF_DUPLICADO, SECUENCIA_AGOTADA, RED_TIMEOUT, MTLS_INVALIDO, etc.
5.3. Endpoints públicos que DGII consulta¶
DGII recibe llamadas server-to-server desde su sistema hacia el del contribuyente. En el ERP:
/contabilidad/ecf/api/Autenticacion/ValidarSemilla (POST, csrf_exempt)
/contabilidad/ecf/api/RecepcionEcf (POST, csrf_exempt)
/contabilidad/ecf/api/AprobacionComercial (POST, csrf_exempt)
/contabilidad/ecf/api/AcuseRecibo (POST, csrf_exempt)
/contabilidad/ecf/api/ConsultaEstado/{trackid} (GET, csrf_exempt)
Alias también disponibles como /fe/... para compatibilidad.
Validación recomendada en cada handler:
- Si ECF_MTLS_REQUIRED=1: verificar request.META['SSL_CLIENT_S_DN'] coincida con DN DGII
- Si ECF_BEARER_REQUIRED=1: validar firma del bearer entrante con cert DGII público
5.4. Registro de URL en portal DGII¶
Acceder al portal de homologación: https://oficinavirtual.dgii.gov.do
- Sección Postulación e-CF → crear postulación (asignada un
PostulacionID). - Registrar URLs HTTPS exactas:
https://erp.tuempresa.com.do/contabilidad/ecf/api/Autenticacion/ValidarSemillahttps://erp.tuempresa.com.do/contabilidad/ecf/api/RecepcionEcfhttps://erp.tuempresa.com.do/contabilidad/ecf/api/AprobacionComercial- Subir nombre y versión del software (debe matchear
DGII_SOFTWARE_VERSION_PUBLICy pasaraccounting.services.dgii_versioning.normalize_dgii_software_version). - Enviar postulación. DGII responde en 2-5 días hábiles.