# Endpoints de devoluciones y consultas

Esta referencia detalla los endpoints utilizados para buscar en el historial de transacciones y procesar devoluciones (tanto referenciadas como con tarjeta presente).

## 1. Consultar transacciones (`/consulta`)

Recupera el estado y los detalles de operaciones pasadas.

* **URL (Test):** `https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/consulta`  
* **URL (Prod):** `https://tpvpc.redsys.es/TPV_PC/services/rest/tpvpcwss/v1/consulta`  
* **Método:** `POST`

### Parámetros de la petición (`datosOperacion`)

| Campo | Tipo | Requerido | Descripción |
| :--- | :--- | :--- | :--- |
| `fechaInicio` | String | Sí | Fecha de inicio (`YYYY-MM-DD HH:mm:ss` o `YYYY-MM-DD-HH.mm.ss`). |
| `fechaFin` | String | Sí | Fecha de fin. El rango máximo es de 30 días desde la fecha de inicio. |
| `pedido` | String | No | Buscar por ID de pedido (Order ID) del sistema. |
| `factura` | String | No | Buscar por su referencia de factura. |
| `operacion` | String | No | Filtrar por tipo: `PAGO`, `PREAUTORIZACION`, `CONFIRMACION`, `DEVOLUCION`. |
| `resultado` | String | No | Filtrar por resultado: `AUTORIZADA`, `DENEGADA`. |
| `rts` | String | No | Buscar por ID de transacción (Transaction ID). Anula todos los demás filtros. |
| `pagina` | Int | No | Número de página para la paginación (empieza en 0). |

### Respuesta (resultadoConsulta)

| Campo | Tipo | Descripción |
| :--- | :--- | :--- |
| `numOperaciones` | Int | Total de registros encontrados. |
| `totalPaginas` | Int | Total de páginas disponibles. |
| `operaciones` | Array | Lista de objetos de transacción que contienen `importe`, `estado`, `resultado`, etc. |

## 2. Devolución referenciada (`/devolucion`)

Devuelve una transacción utilizando su ID de pedido (`pedidoBase`) sin interacción con la tarjeta.

* **URL (Test):** `https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/devolucion`  
* **URL (Prod):** `https://tpvpc.redsys.es/TPV_PC/services/rest/tpvpcwss/v1/devolucion`  
* **Método:** `POST`

### Parámetros de la petición (`datosOperacion`)

| Campo | Tipo | Requerido | Longitud máx. | Descripción |
| :--- | :--- | :--- | :--- | :--- |
| `importe` | Double | Sí | 12 | Importe a devolver. |
| `factura` | String | Sí | 250 | Referencia para la propia devolución. |
| `pedidoBase` | String | Sí | 50 | El `pedido` (ID de pedido) de la venta original. |

### Respuesta (`resultadoDevolucion`)

Se devuelve únicamente si `resultado.codigo` es `0`.

| Campo | Tipo | Descripción |
| :---- | :---- | :---- |
| `importe` | String | Importe devuelto. |
| `resultado` | String | `Autorizada` o `Denegada`. |
| `estado` | String | `F` (Finalizada). |

## 3. Devolución con tarjeta presente (`/devolucionTarjeta`)

Inicia una devolución que requiere que el cliente inserte su tarjeta.

* **URL (Test):** `https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/devolucionTarjeta` 
* **URL (Prod):** `https://tpvpc.redsys.es/TPV_PC/services/rest/tpvpcwss/v1/devolucionTarjeta`  
* **Método:** `POST`

### Parámetros de la petición (`datosOperacion`)

| Campo | Tipo | Requerido | Longitud máx. | Descripción |
| :---- | :---- | :---- | :---- | :---- |
| `importe` | Double | Sí | 12 | Importe a devolver. |
| `factura` | String | Sí | 250 | Referencia para la devolución. |
| `pedidoBase` | String | Sí | 50 | El `pedido` (ID de pedido) de la venta original. |

### Respuesta (`info`)

Acuse de recibo síncrono. El resultado final se envía mediante notificación.

| Campo | Tipo | Descripción |
| :---- | :---- | :---- |
| `resultado.codigo` | String | `0` indica éxito. |