Skip to content

Consumo

Esta guia documenta el modulo de consumo de credito directo soportado por ms-credigestion, donde NoviSuite intermedia entre el dashboard o MBA3 y el sistema de credito directo ISISYSTEM para realizar consumos de credito en tiempo real.

ms-credigestion se encarga de:

  • Recibir solicitudes HTTP REST/JSON desde el dashboard o MBA3
  • Traducirlas a llamadas SOAP/XML contra los servicios WCF de ISISYSTEM
  • Parsear las respuestas XML y devolverlas como JSON limpio
  • Persistir el estado de cada autorizacion/consumo en PostgreSQL local
  • Manejar el ciclo de vida completo: consulta → financiacion → autorizacion → OTP → confirmacion → reverso

Flujo general: Dashboard/MBA3 → NoviSuite (ms-credigestion) → SOAP/XML → ISISYSTEM → XML → JSON → Dashboard/MBA3

DatoValor
Dominio produccionhttps://credigestion-api.novicompu.com
Puerto HTTP3005
Base de datos localcredigestion_service_development
Health checkGET /up
Integracion SOAP upstreamISISYSTEM (Cartera + Central)

Todos los endpoints de consumo usan solo Bearer JWT. No aceptan ServiceKey.

EsquemaHeader
Bearer JWTAuthorization: Bearer <token>
AccionEndpointMetodo SOAPServicio ISISYSTEMPersiste en DB
Consultar linea de creditoPOST /consumo/cupoConsultarTarjetaCarteraNo
Consultar financiacionPOST /consumo/financiacionConsultarAlternativaFinanciacionCentralNo
Generar autorizacionPOST /consumo/autorizacionGrabarAutorizacionCarteraSi
Registrar OTPPOST /consumo/otp— (local)Si
Confirmar consumoPOST /consumo/confirmarGrabarConsumoCarteraSi
Reversar autorizacionPOST /consumo/reversoGrabarReversoAutorizacionCarteraSi
Reversar consumoPOST /consumo/reverso-consumoGrabarReversoConsumoCarteraSi

La traduccion REST → SOAP, los namespaces, constantes inyectadas y manejo de errores estan documentados en Modulo isisystem-soap.

ServicioURLOperaciones
Carterahttp://186.5.126.42:8092/Cartera/ServicioCartera.svcConsultarTarjeta, GrabarAutorizacion, GrabarConsumo, GrabarReversoAutorizacion, GrabarReversoConsumo
Centralhttp://186.5.126.42:8092/Central/ServicioCentral.svcConsultarAlternativaFinanciacion
ConstanteValor por defectoVariable de entorno
UsuarioUSUARIOASIISISYSTEM_USUARIO
Codigo Empresa000598ISISYSTEM_CODIGO_EMPRESA
TerminalNOVISUITE-01ISISYSTEM_TERMINAL
Timeout30 segundosISISYSTEM_TIMEOUT
  • cNumeroTarjetaidentificacion: El campo SOAP debe ir poblado con la cedula del cliente. El servicio aplica el fallback cNumeroTarjeta = dto.numero_tarjeta ?? dto.identificacion.
  • OTP bypass: Si dto.otp viene vacio, se envia automaticamente cCodigoOtp = ISISYSTEM_OTP_BYPASS.
  • Mapeo de errores SOAP:
    • nNumeroError === 2 (cliente sin tarjeta) → HTTP 404
    • Cualquier nNumeroError con lError: true → HTTP 422 (error de negocio)
  • Nodos vacios xsi:nil="true": El parser detecta via isNilOrEmptyObject() y retorna null.

Consulta la linea de credito / tarjeta de un cliente en ISISYSTEM.

Autenticacion: Bearer JWT

{
"codigo_empresa": "000598",
"identificacion": "0916884245",
"numero_tarjeta": "0916884245"
}
CampoObligatorioValidacion
codigo_empresaSistring, max 20
identificacionSistring, max 50
numero_tarjetaNostring, max 20
{
"success": true,
"cliente": "MARCILLO ERICK",
"numero_tarjeta": "0916884245",
"codigo_cliente": 12345,
"fecha_activacion": "2024-01-15",
"fecha_ultima_compra": "2026-03-20",
"fecha_ultimo_pago": "2026-04-01",
"tipos_cupo": [{
"cCodigoTipoCupo": "003",
"cDescripcionTipoCupo": "CRÉDITO DIRECTO",
"cFrecuenciaCupo": "M",
"nCupoDisponible": 1500.00,
"nCupoAsignado": 3000.00,
"nCupoUtilizado": 1500.00
}],
"sub_cupos": [{
"cCodigoTipoOperacion": "001",
"cDescripcionTipoOperacion": "COMPRAS",
"cFrecuenciaCupo": "M",
"nCupoDisponibleOpe": 1500.00,
"nPlazoMaximo": 36
}]
}
HTTPCaso
400Body invalido
401JWT invalido
502ISISYSTEM rechazo
504timeout

POST /api/v1/credigestion/consumo/financiacion

Section titled “POST /api/v1/credigestion/consumo/financiacion”

Consulta las alternativas de financiacion (plazos y cuotas) para un monto dado.

Autenticacion: Bearer JWT

{
"codigo_empresa": "000598",
"numero_tarjeta": "0916884245",
"codigo_producto": "004",
"codigo_tipo_cupo": "003",
"monto": "400",
"items": [{"texto_articulo": "TV Samsung 55", "cantidad": 1, "precio": "400.00"}]
}
CampoObligatorioValidacion
codigo_empresaSistring, max 20
numero_tarjetaSistring, max 20
codigo_productoSistring, max 3
codigo_tipo_cupoSistring, max 3
codigo_tipo_operacionNostring, max 3
montoSinumerico como string
itemsNoArticuloConsumoDto[]
CampoObligatorioValidacion
codigo_articuloNostring
texto_articuloSistring
cantidadSientero, min 1
precioSinumerico como string
codigo_tipo_articuloNostring
caracteristicasNostring (formato 025:AZUL-026:23x45)
{
"success": true,
"opciones": [
{"plazo": 3, "cuota_mensual": 136.50, "cuota_garantia_extendida": 0, "interes_total": 9.50, "deuda_total": 409.50, "cuota_entrada_minima": 0},
{"plazo": 6, "cuota_mensual": 70.25, "interes_total": 21.50, "deuda_total": 421.50},
{"plazo": 12, "cuota_mensual": 37.80, "interes_total": 53.60, "deuda_total": 453.60}
]
}
HTTPCaso
400Body invalido
401JWT invalido
502ISISYSTEM rechazo
504timeout

POST /api/v1/credigestion/consumo/autorizacion

Section titled “POST /api/v1/credigestion/consumo/autorizacion”

Solicita la autorizacion de consumo en ISISYSTEM. Crea un registro local en PostgreSQL con el estado inicial.

Autenticacion: Bearer JWT

{
"codigo_empresa": "000598",
"identificacion": "0916884245",
"numero_tarjeta": "0916884245",
"codigo_producto": "004",
"plazo": 12,
"monto": "400",
"punto_venta": "POS-001",
"codigo_tipo_cupo": "003"
}
CampoObligatorioValidacion
codigo_empresaSistring, max 20
identificacionSistring, max 50
numero_tarjetaSistring, max 20
codigo_productoSistring, max 3
plazoSientero, min 1
montoSinumerico como string
punto_ventaSistring, max 50
codigo_tipo_cupoNostring, max 3
codigo_tipo_operacionNostring, max 3
cuota_inicialNonumerico como string
garantia_extendidaNoboolean
itemsNoArticuloConsumoDto[]
{
"success": true,
"autorizacion_id": "14022",
"numero_operacion": 56789,
"codigo_seguridad_enviado": true,
"biometria_requerida": false,
"imagen_qr": null,
"estado": "AUTORIZADO",
"id": "1"
}

Clave: Si codigo_seguridad_enviado=true, se requiere el paso OTP. Si es false (QA), se salta a confirmacion.

HTTPCaso
400Body invalido
401JWT invalido
502ISISYSTEM rechazo (lError: true)
504timeout

Registra el codigo OTP ingresado por el cliente. Solo checkpoint local — no llama a ISISYSTEM. El OTP se valida en /confirmar.

Autenticacion: Bearer JWT

{"autorizacion_id": "14022", "otp": "483926"}
CampoObligatorioValidacion
autorizacion_idSistring, max 50
otpSistring, max 10
{"success": true, "autorizacion_id": "14022", "estado": "OTP_RECIBIDO", "message": "OTP registrado. Proceda a confirmar el consumo."}
  • Solo se puede registrar OTP si el estado actual es AUTORIZADO
  • Si el estado no es valido, devuelve 400 Bad Request
HTTPCaso
400estado invalido
401JWT invalido
404autorizacion no encontrada

POST /api/v1/credigestion/consumo/confirmar

Section titled “POST /api/v1/credigestion/consumo/confirmar”

Confirma el consumo enviando la factura y OTP a ISISYSTEM (GrabarConsumo).

Autenticacion: Bearer JWT

{
"autorizacion_id": "14022",
"numero_factura": "FAC-001-001-000012345",
"monto_facturado": "400",
"fecha_factura": "2026-04-15",
"valor_iva": "48",
"valor_comision": "0"
}
CampoObligatorioValidacion
autorizacion_idSistring, max 50
numero_facturaSistring, max 50
monto_facturadoSinumerico como string
fecha_facturaSistring, max 10 (yyyy-mm-dd)
valor_ivaNonumerico como string
valor_comisionNonumerico como string

Al confirmar, el servicio toma del registro local (credigestion_consumos):

  • codigo_producto, codigo_tipo_cupo, codigo_tipo_operacion (de la autorizacion)
  • numero_tarjeta, identificacion (del cliente)
  • otp (registrado en /otp)
  • plazo, monto (del consumo original)
{
"success": true,
"autorizacion_id": "14022",
"estado": "CONSUMIDO",
"numero_operacion": 56789,
"valor_cuota": 37.80,
"pago_minimo": 37.80,
"saldo_actual": 1900.00,
"fecha_max_pago": "2026-05-15",
"tabla_amortizacion": [{"numero_cuota": 1, "fecha_vencimiento": "2026-05-15", "valor_capital": 33.33, "valor_interes": 4.47, "valor_cuota": 37.80}],
"cupos_afectados": [{"cCodigoTipoCupo": "003", "nCupoDisponible": 1100.00, "nCupoUtilizado": 1900.00}]
}
  • Se acepta tanto AUTORIZADO como OTP_RECIBIDO
  • Si el OTP no fue registrado previamente, se envia "0" como cCodigoOtp (ISISYSTEM decide si lo requiere)
HTTPCaso
400body invalido o estado no es AUTORIZADO/OTP_RECIBIDO
401JWT invalido
404autorizacion no encontrada
502ISISYSTEM rechazo (puede ser OTP invalido)
504timeout

Reversa una autorizacion antes de confirmar.

Autenticacion: Bearer JWT

{"autorizacion_id": "14022", "numero_tarjeta": "0916884245", "identificacion": "0916884245"}
CampoObligatorioValidacion
autorizacion_idSistring, max 50
numero_tarjetaNoSe toma del registro si no se envia
identificacionNoSe toma del registro si no se envia
{"success": true, "estado": "REVERSADO", "message": "Autorizacion reversada exitosamente"}
  • No se puede reversar si el estado es CONSUMIDO (ya fue confirmado — usar /reverso-consumo)
  • No se puede reversar si ya esta en estado REVERSADO
HTTPCaso
400body invalido o estado no permite reverso
401JWT invalido
404autorizacion no encontrada
502ISISYSTEM rechazo el reverso
504timeout

POST /api/v1/credigestion/consumo/reverso-consumo

Section titled “POST /api/v1/credigestion/consumo/reverso-consumo”

Reversa un consumo ya confirmado. Usa numero_factura como referencia.

Autenticacion: Bearer JWT

{"autorizacion_id": "14022", "numero_tarjeta": "0916884245"}
CampoObligatorioValidacion
autorizacion_idSistring, max 50
numero_tarjetaNoSe toma del registro si no se envia

El servicio construye la llamada SOAP GrabarReversoConsumo con:

  • cNumeroReferencia: numero de factura del registro local
  • cNumeroTarjeta: del DTO o del registro local
  • cTerminal: variable de entorno ISISYSTEM_TERMINAL
  • cUsuario: variable de entorno ISISYSTEM_USUARIO
  • lAjusteConciliacion: false
{"success": true, "estado": "CONSUMO_REVERSADO", "numero_factura": "FAC-001-001-000012345", "message": "Reverso realizado correctamente"}
  • Solo se puede reversar si el estado es CONSUMIDO
  • Si no tiene numero_factura registrado, devuelve 400
  • No se puede reversar si esta en estado AUTORIZADO, OTP_RECIBIDO, REVERSADO o CONSUMO_REVERSADO
HTTPCaso
400body invalido, estado no es CONSUMIDO, o no hay factura registrada
401JWT invalido
404autorizacion no encontrada
502ISISYSTEM rechazo el reverso del consumo
504timeout

stateDiagram-v2
[*] --> AUTORIZADO : POST /autorizacion\n(GrabarAutorizacion SOAP)
AUTORIZADO --> OTP_RECIBIDO : POST /otp\n(checkpoint local)
AUTORIZADO --> CONSUMIDO : POST /confirmar\n(GrabarConsumo SOAP)
AUTORIZADO --> REVERSADO : POST /reverso\n(GrabarReversoAutorizacion SOAP)
OTP_RECIBIDO --> CONSUMIDO : POST /confirmar\n(GrabarConsumo SOAP)
CONSUMIDO --> CONSUMO_REVERSADO : POST /reverso-consumo\n(GrabarReversoConsumo SOAP)
REVERSADO --> [*]
CONSUMO_REVERSADO --> [*]
Estado ActualAccionEstado Resultante
AUTORIZADOPOST /otpOTP_RECIBIDO
AUTORIZADOPOST /confirmarCONSUMIDO
AUTORIZADOPOST /reversoREVERSADO
OTP_RECIBIDOPOST /confirmarCONSUMIDO
CONSUMIDOPOST /reverso-consumoCONSUMO_REVERSADO
  • REVERSADO — autorizacion anulada antes de consumir
  • CONSUMO_REVERSADO — consumo confirmado y luego anulado

ColumnaTipoDescripcion
idbigint PKID interno
autorizacion_idvarchar(50)Numero de autorizacion de ISISYSTEM
numero_operacionvarchar(20)Numero de operacion de ISISYSTEM
estadovarchar(30)Estado actual
codigo_empresavarchar(20)Codigo de empresa
identificacionvarchar(50)Cedula del cliente
numero_tarjetavarchar(20)Numero de tarjeta
codigo_productovarchar(10)Codigo de producto
codigo_tipo_cupovarchar(10)Codigo tipo de cupo
codigo_tipo_operacionvarchar(10)Codigo tipo de operacion
montodecimal(18,2)Monto autorizado
plazointPlazo autorizado
punto_ventavarchar(50)Punto de venta
otpvarchar(10)OTP registrado
numero_facturavarchar(50)Numero de factura
monto_facturadodecimal(18,2)Monto facturado
fecha_facturadateFecha de factura
isisystem_auth_responsejsonbRespuesta cruda de GrabarAutorizacion
isisystem_consumo_responsejsonbRespuesta cruda de GrabarConsumo
biometria_requeridabooleanSi requiere biometria
imagen_qrtextQR en base64 (si aplica)
source_systemvarchar(50)Origen (default: NOVISUITE)
created_at / updated_attimestampFechas de creacion/modificacion

El filtro global del servicio responde errores con este envelope:

{
"status": "error",
"statusCode": 502,
"message": "ISISYSTEM rechazo la operacion: GrabarConsumo",
"errors": []
}
{
"status": "error",
"statusCode": 502,
"message": "ISISYSTEM rechazo la operacion: GrabarAutorizacion",
"upstreamMessage": "Cupo insuficiente para el monto solicitado",
"operation": "GrabarAutorizacion",
"errorCode": 2
}
{
"status": "error",
"statusCode": 504,
"message": "ISISYSTEM no respondio a tiempo durante GrabarConsumo"
}
{
"status": "error",
"statusCode": 400,
"message": "La autorizacion 14022 no esta en estado AUTORIZADO (actual: CONSUMIDO)"
}
{
"status": "error",
"statusCode": 404,
"message": "No se encontro autorizacion 14022"
}

VariableValor QANota
ISISYSTEM_USUARIOPOSNVC001Usuario funcional asignado a NoviSuite
ISISYSTEM_CODIGO_EMPRESA000598Empresa por defecto
ISISYSTEM_OTP_BYPASS999999OTP fijo mientras no este Biometria
CedulaClienteCupo DisponibleEstado
0914665005GILBERT TACLE$1700Activa
0926208323TINOCO SALTOS$1685Activa
  • OTP bypass QA: 999999 (se inyecta automaticamente si el campo OTP esta vacio)
  • Mapeo cNumeroTarjeta: en QA el campo debe ir poblado con la cedula del cliente
  • Productos: el wizard usa "004" por defecto; verificar disponibilidad en QA

Terminal window
curl -X POST http://localhost:3005/api/v1/credigestion/consumo/cupo \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>" \
-d '{
"codigo_empresa": "000598",
"identificacion": "0916884245"
}'
Terminal window
curl -X POST http://localhost:3005/api/v1/credigestion/consumo/autorizacion \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>" \
-d '{
"codigo_empresa": "000598",
"identificacion": "0916884245",
"numero_tarjeta": "0916884245",
"codigo_producto": "004",
"plazo": 12,
"monto": "400",
"punto_venta": "POS-001",
"codigo_tipo_cupo": "003"
}'
Terminal window
curl -X POST http://localhost:3005/api/v1/credigestion/consumo/confirmar \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>" \
-d '{
"autorizacion_id": "14022",
"numero_factura": "FAC-001-001-000012345",
"monto_facturado": "400",
"fecha_factura": "2026-04-15"
}'
Terminal window
curl -X POST http://localhost:3005/api/v1/credigestion/consumo/reverso-consumo \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>" \
-d '{
"autorizacion_id": "14022"
}'

# -- ISISYSTEM SOAP (credito directo) --
ISISYSTEM_CARTERA_URL=http://186.5.126.42:8092/Cartera/ServicioCartera.svc
ISISYSTEM_CENTRAL_URL=http://186.5.126.42:8092/Central/ServicioCentral.svc
ISISYSTEM_USUARIO=POSNVC001
ISISYSTEM_CODIGO_EMPRESA=000598
ISISYSTEM_TERMINAL=NOVISUITE-01
ISISYSTEM_TIMEOUT=30
ISISYSTEM_OTP_BYPASS=999999

  • El modulo isisystem-soap es global — cualquier otro modulo del servicio puede inyectar IsisystemSoapService
  • Las constantes SOAP (cUsuario, cCodigoEmpresa, cTerminal) no se envian desde el request del cliente; el servicio las inyecta automaticamente
  • El OTP no tiene un endpoint SOAP propio — /otp es un checkpoint local que guarda el codigo, y la validacion real ocurre en /confirmar (GrabarConsumo con cCodigoOtp)
  • Si no se registra OTP antes de confirmar, se envia "0" como cCodigoOtp
  • Para reversar una autorizacion (antes de confirmar): usar /reverso → GrabarReversoAutorizacion
  • Para reversar un consumo (despues de confirmar): usar /reverso-consumo → GrabarReversoConsumo
  • El numero_factura es el cNumeroReferencia que se envia a GrabarReversoConsumo
  • Timeout SOAP configurable via ISISYSTEM_TIMEOUT (en segundos, default 30)