Configuración
UruFacturaConfig
Section titled “UruFacturaConfig”La clase UruFacturaConfig es el punto central de configuración del SDK. Se pasa al constructor de UruFacturaClient.
var config = new UruFacturaConfig{ // ... propiedades};using var client = new UruFacturaClient(config);Propiedades
Section titled “Propiedades”Identificación del emisor
Section titled “Identificación del emisor”| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
RutEmisor | string | ✅ | RUT del emisor — 12 dígitos sin puntos ni guión (ej: "210000000012") |
RazonSocialEmisor | string | ✅ | Razón social del emisor tal como figura en DGI |
NombreComercialEmisor | string? | — | Nombre comercial o de fantasía del emisor |
Giro | string? | — | Giro o actividad económica del emisor |
DomicilioFiscal | string | ✅ | Domicilio fiscal del emisor |
Ciudad | string | ✅ | Ciudad del domicilio fiscal |
Departamento | string | ✅ | Departamento del domicilio fiscal |
Certificado digital
Section titled “Certificado digital”| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
RutaCertificado | string | ✅ | Ruta absoluta o relativa al archivo .p12 / .pfx |
PasswordCertificado | string | ✅ | Contraseña del certificado digital |
Ambiente
Section titled “Ambiente”| Propiedad | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
Ambiente | Ambiente | Ambiente.Homologacion | Define el endpoint DGI a usar |
DgiSoapBaseUrl | string | (derivado) | URL SOAP DGI calculada automáticamente según Ambiente |
SoapTimeoutSegundos | int | 30 | Timeout en segundos para las llamadas SOAP a DGI |
OmitirValidacionSsl | bool | false | Deshabilita la validación TLS del servidor. Activar solo cuando el ambiente de Homologación tenga una CA no reconocida por el sistema. Nunca activar en Producción. |
Valores del enum Ambiente:
| Valor | Endpoint DGI |
|---|---|
Ambiente.Homologacion | https://efacturahomologacion.dgi.gub.uy/ePresentacionSoap/service |
Ambiente.Produccion | https://efactura.dgi.gub.uy/ePresentacionSoap/service |
Ejemplo completo
Section titled “Ejemplo completo”var config = new UruFacturaConfig{ // Identificación RutEmisor = "210000000012", RazonSocialEmisor = "Mi Empresa S.A.", DomicilioFiscal = "Av. 18 de Julio 1234, Apto. 201", Ciudad = "Montevideo", Departamento = "Montevideo",
// Certificado (desde variables de entorno en producción) RutaCertificado = Environment.GetEnvironmentVariable("CERT_PATH") ?? "/ruta/por/defecto/certificado.p12", PasswordCertificado = Environment.GetEnvironmentVariable("CERT_PASSWORD")!,
// Ambiente Ambiente = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production" ? Ambiente.Produccion : Ambiente.Homologacion,};Configuración con .NET Options Pattern
Section titled “Configuración con .NET Options Pattern”Para proyectos ASP.NET Core, es recomendable usar el patrón de opciones:
{ "UruFactura": { "RutEmisor": "210000000012", "RazonSocialEmisor": "Mi Empresa S.A.", "DomicilioFiscal": "Av. 18 de Julio 1234", "Ciudad": "Montevideo", "Departamento": "Montevideo", "Ambiente": "Homologacion", "RutaCertificado": "/ruta/al/certificado.p12" }}builder.Services.Configure<UruFacturaConfig>( builder.Configuration.GetSection("UruFactura"));
// La contraseña viene de secretos seguros, no del appsettingsbuilder.Services.PostConfigure<UruFacturaConfig>(config =>{ config.PasswordCertificado = builder.Configuration["UruFactura:PasswordCertificado"] ?? Environment.GetEnvironmentVariable("CERT_PASSWORD") ?? throw new InvalidOperationException("Certificado no configurado");});
builder.Services.AddSingleton<UruFacturaClient>(sp =>{ var config = sp.GetRequiredService<IOptions<UruFacturaConfig>>().Value; return new UruFacturaClient(config);});