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.