Tarjetas - bootcamp-uchile-2026/grupo-4-backend GitHub Wiki
Tarjetas
Servicio encargado de recibir los datos de una tarjeta de pago y devolver el resultado de su procesamiento.
El servicio expone una operación para enviar la información de la tarjeta y obtener una respuesta con el identificador de la operación, el nombre del titular, los últimos cuatro dígitos y un mensaje.
Endpoints
POST /tarjetas- Procesar los datos de una tarjeta
Modelo
Tarjeta
Representa la información de una tarjeta expuesta por el modelo del módulo.
| Campo | Tipo | Descripción |
|---|---|---|
| id | number | Identificador del registro |
| nombre | string | Nombre del titular de la tarjeta |
| ultimosDigitos | string | Últimos cuatro dígitos de la tarjeta |
DTOs
CreateTarjetaDto
DTO utilizado para recibir los datos de una tarjeta.
Campos y validaciones
| Campo | Tipo | Requerido | Validación | Descripción |
|---|---|---|---|---|
| numero | string | Sí | Entre 13 y 19 dígitos numéricos (^\d{13,19}$) |
Número de la tarjeta |
| vencimiento | string | Sí | Formato MM/AA, con mes de 01 a 12 |
Fecha de vencimiento |
| cvv | string | Sí | 3 o 4 dígitos numéricos | Código de seguridad |
| nombre | string | Sí | Texto no vacío y que no contenga únicamente espacios | Nombre del titular |
Las validaciones están definidas mediante decoradores de class-validator. Las expresiones utilizadas comprueban el formato, pero no verifican que el número de tarjeta sea válido según Luhn ni que la fecha de vencimiento sea futura.
Ejemplo de Request Body
Los datos siguientes son ficticios y únicamente ilustrativos; no corresponden a una tarjeta real.
{
"numero": "4111111111111111",
"vencimiento": "12/28",
"cvv": "123",
"nombre": "Juan Perez"
}
TarjetaResponseDto
DTO utilizado para representar la respuesta del endpoint de Tarjetas.
| Campo | Tipo | Descripción |
|---|---|---|
| id | number | Identificador de la operación |
| nombre | string | Nombre del titular de la tarjeta |
| ultimosDigitos | string | Últimos cuatro dígitos del número ingresado |
| mensaje | string | Mensaje del resultado del procesamiento |
El número completo de tarjeta, su vencimiento y el CVV no forman parte de la respuesta.
Ejemplo de respuesta
{
"id": 1,
"nombre": "Juan Perez",
"ultimosDigitos": "1111",
"mensaje": "Tarjeta procesada correctamente (simulación)"
}
Endpoints detallados
POST /tarjetas
Recibe los datos de una tarjeta mediante CreateTarjetaDto y devuelve una respuesta con la estructura de TarjetaResponseDto.
Request Body
Utiliza CreateTarjetaDto.
{
"numero": "4111111111111111",
"vencimiento": "12/28",
"cvv": "123",
"nombre": "Juan Perez"
}
Response — 201 Created
{
"id": 1,
"nombre": "Juan Perez",
"ultimosDigitos": "1111",
"mensaje": "Tarjeta procesada correctamente (simulación)"
}
Response — 400 Bad Request
Cuando se encuentra habilitada la validación de DTO mediante ValidationPipe, una solicitud que no cumpla las reglas de CreateTarjetaDto puede generar una respuesta HTTP 400.
Por ejemplo, un número con menos de 13 dígitos no cumple la validación declarada.
{
"message": [
"El número de tarjeta debe contener entre 13 y 19 dígitos"
],
"error": "Bad Request",
"statusCode": 400
}
El contenido exacto del error puede variar de acuerdo con la configuración global de validación y los filtros HTTP del proyecto. El controller documenta expresamente la respuesta 201; la respuesta 400 depende de la aplicación de las validaciones de entrada.
Consideraciones de seguridad
- No incluir el número completo de tarjeta ni el CVV en respuestas HTTP, registros de auditoría o logs.
- No almacenar ni procesar tarjetas reales directamente sin un proveedor de pagos y controles de seguridad adecuados.
- Los ejemplos de esta Wiki deben utilizar exclusivamente datos de prueba.