Saltar a contenido

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

  1. Sección Postulación e-CF → crear postulación (asignada un PostulacionID).
  2. Registrar URLs HTTPS exactas:
  3. https://erp.tuempresa.com.do/contabilidad/ecf/api/Autenticacion/ValidarSemilla
  4. https://erp.tuempresa.com.do/contabilidad/ecf/api/RecepcionEcf
  5. https://erp.tuempresa.com.do/contabilidad/ecf/api/AprobacionComercial
  6. Subir nombre y versión del software (debe matchear DGII_SOFTWARE_VERSION_PUBLIC y pasar accounting.services.dgii_versioning.normalize_dgii_software_version).
  7. Enviar postulación. DGII responde en 2-5 días hábiles.