Herramientas de usuario

Herramientas del sitio


ada:sicoferp:rentas:herramientas:ws.recaudo
  • Servicio integracion Consulta y Recaudo *.

Este documento detalla la especificación técnica para la integración con el servicio de consulta de facturas .

        
1. Información General

Nombre del Servicio: `ConsultaFacturaServlet` Endpoint: `/factura/consulta` Método: `POST` Content-Type: `application/json; charset=UTF-8` Descripción: Verifica la existencia, integridad y estado de una factura (vencimiento, pagos previos, anulación) antes de permitir un recaudo.

2. Estructura de la Petición (Request)

El servicio espera un cuerpo JSON con los siguientes campos obligatorios:

Campo Tipo Requerido Descripción
:———— :—– :——-: :————————————————–
`usuario` String Usuario de servicios web autorizado.
`clave` String Contraseña del usuario.
`consecutivo` String Número de factura (Debe ser un número mayor a 0).
`valor` String Valor de la factura (Debe ser un número mayor a 0).
 Ejemplo de Request JSON:

{

"usuario": "ws_recaudo",
"clave": "pass123",
"consecutivo": "998877",
"valor": "250000"

}

3. Estructura de la Respuesta (Response)

El servicio retorna un objeto JSON con el resultado de la validación y codificación `UTF-8`.

3.1. Éxito (Código 200)

{

"codigo": 200,
"mensaje": "La factura existe y se encuentra disponible para pago."

}

3.2. Errores de Cliente (Códigos 4xx)

Código Mensaje Razón
:— :— :—
400 “La petición no contiene información.” Falta datos en el json.
415 “El JSON recibido no es válido.” Error de sintaxis en el JSON enviado.
400 “No se han especificado…” Faltan campos obligatorios en el JSON.
412 “El campo 'consecutivo/valor' debe ser mayor que cero.” Validación de negocio: los números deben ser positivos.
401 “El usuario no esta autorizado…” Credenciales inválidas o estado inactivo.
404 “No se encontró una factura asociada…” Factura inexistente o el valor no coincide con la base de datos.
409 “La factura ya fue pagada…” Estado de factura 'Pagado' en el sistema.
410 “La factura fue anulada…” Estado de factura 'Anulado' en el sistema.
422 “La factura se encuentra vencida” La fecha de vencimiento es anterior a la fecha actual.

3.3. Errores de Servidor (Código 500)

{

"codigo": 500,
"mensaje": "Error interno."

}

4. Lógica de Negocio y Validaciones Actualizadas

1. Validación Numérica: Se han incorporado reglas estrictas para que `consecutivo` y `valor` sean cadenas que representen números mayores a cero. 2. Manejo de Fechas: La validación de vencimiento ahora normaliza la fecha actual (sin horas/minutos) para comparar únicamente por día contra la `fecha_vencimiento`. 3. Seguridad: Sigue utilizando el esquema de validación contra `ADMINISTRACION.usuario_servicios` mediante MD5. 4. Control de Concurrencia: Utiliza `ReentrantLock` para asegurar que las consultas sobre una misma factura se serialicen correctamente si es necesario.

5. Reglas de Negocio Aplicadas

1. Seguridad: Validación de acceso idéntica al proceso de recaudo (MD5). 2. Validación de Valor: El parámetro `valor` enviado debe coincidir exactamente con el valor almacenado en la vista `V_FACTURA_ACTIVA_RECAUDO`. 3. Estados Restrictivos:

  • Si el estado es el definido en `Estados.getPagado()`, se bloquea el proceso.
  • Si el estado es el definido en `Estados.getAnulado()`, se bloquea el proceso.

4. Validación de Fecha: Se comprueba que la factura no haya superado su fecha de vencimiento (`fecha_vencimiento`).

* Servicio Recaudo.

Este documento detalla la especificación técnica para la integración con el servicio de recaudo de facturas.

1. Información General

* Nombre del Servicio: `RecaudoFacturaServlet` * Endpoint: `/factura/recaudo` * Método: `POST` * Content-Type: `application/json; charset=UTF-8` * Descripción: Servicio encargado de validar, procesar y generar comprobante y notificación de pago para una factura específica en el sistema.

2. Estructura de la Petición (Request)

El servicio espera un objeto JSON con los siguientes atributos:

Campo Tipo Requerido Descripción
:———— :—– :——-: :———————————————–
`usuario` String Usuario de servicios web autorizado.
`clave` String Contraseña del usuario (Validada vía MD5 en DB).
`consecutivo` String Número de factura a recaudar.
`valor` String Valor total del recaudo (sin decimales).
`banco` String Código del banco que procesa la transacción.

Ejemplo de Request:

{

"usuario": "ws_recaudo_dav",
"clave": "P@ssw0rd2024",
"consecutivo": "85562",
"valor": "150000",
"codbanco": "012"

}

3. Estructura de la Respuesta (Response)

El servicio siempre retorna un objeto JSON con un código de estado interno y un mensaje descriptivo.

3.1. Éxito (Código 201)

{

"codigo": 201,
"mensaje": "Recaudo exitoso.",
"comprobante": 1234567

}

3.2. Errores Comunes

| Código | Mensaje | Razón |

:— :— :—
415 “El JSON recibido no es válido.” Error de sintaxis en el JSON enviado.
412 “El campo 'consecutivo/valor' debe ser mayor que cero.”
400 “La petición no contiene información.” Falta datos en el json.
401 “El usuario no esta autorizado…” Credenciales inválidas o estado inactivo.
404 “No se encontró un banco…” El código de banco no existe en el maestro.
404 “No se encontró una factura…” Factura inexistente o el valor no coincide.
409 “La factura ya fue pagada…” Factura en estado 'C' (Cancelada/Pagada).
410 “La factura fue anulada…” Factura en estado 'N' (Anulada).
422 “La factura se encuentra vencida” La fecha actual es superior a la de vencimiento.
500 “Error interno.” Error inesperado en el servidor o base de datos.

4. Flujo de Validaciones y Reglas de Negocio

1. Autenticación: Validación contra la tabla `ADMINISTRACION.usuario_servicios` con cifrado MD5. 2. Control de Concurrencia: Se implementa un bloqueo por hilo (`ReentrantLock`) basado en el `consecutivo` y `valor`. Esto garantiza que una factura no sea procesada dos veces si se reciben peticiones simultáneas. 3. Integridad de Datos:

  • Solo se permiten pagos por el valor exacto de la factura.
  • La factura debe existir en la vista `RECAUDO.V_FACTURA_ACTIVA_RECAUDO`.

4. Generación de Comprobante:

  • Se crea un registro en `ComprobanteDeIngreso`.
  • Se realiza el `commit` de la transacción.
  • Se ejecuta el proceso de Aprobación Automática del comprobante.
  • Se guarda en un log el proceso de recaudo , tabla recaudo.log_pago_factura

5. Especificaciones Técnicas (Stack)

* Java Versión: 6 (JDK 1.6). * Librerías: `org.json` para el manejo de JSON. * Persistencia: JDBC sobre conexión gestionada por Hibernate (`SessionFactorySitu`). * Logs: Implementado vía `com.ada.utilidades.Log`.

Nota para Integradores:
Si el servicio retorna un error de red o un código 500, se recomienda realizar una consulta previa del estado de la factura antes de reintentar el pago para evitar duplicidades, a pesar de los controles de concurrencia del lado del servidor.

Métodos: `GET`, `POST`

Content-Type: `application/json;charset=UTF-8`

Parámetros de Entrada (Obligatorios)

Seguridad - usuario (string): Usuario registrado en la tabla `ADMINISTRACION.usuario_servicios` con estado activo. - clave (string): Contraseña del usuario (se valida con hash MD5 en base de datos).

Datos de Consulta - consecutivo (string): Identificador de la factura a consultar. - valor (string): Valor de la factura que debe coincidir exactamente con el registrado en BD. Usado para validar la factura y confirmar integridad de datos.

La fecha de vencimiento se valida internamente contra la base de datos para asegurar que la factura no esté vencida. No debe enviarse como parámetro de la solicitud.
ada/sicoferp/rentas/herramientas/ws.recaudo.txt · Última modificación: 2026/07/16 13:45 por 192.168.175.156