Este proyecto es una API REST full-stack para una tienda en línea, desarrollada con fines didácticos utilizando Spring Boot. Incluye funcionalidades completas desde la autenticación de usuarios hasta la creación de órdenes y la integración con la pasarela de pagos de Mercado Pago.
- Autenticación y Seguridad: Sistema de autenticación basado en JWT (JSON Web Tokens) con Spring Security. Endpoints protegidos y públicos.
- Gestión de Usuarios: Registro y Login de usuarios con contraseñas hasheadas (BCrypt).
- Catálogo de Productos: CRUD completo para la gestión de Productos y Categorías.
- Carrito de Compras: Lógica completa para añadir, actualizar, ver y eliminar artículos del carrito de compras de un usuario.
- Creación de Órdenes: Conversión de un carrito de compras a una orden de compra persistente.
- Integración de Pagos: Flujo de pago completo con Mercado Pago (creación de preferencia y validación mediante webhooks).
- Manejo de Errores: Gestor de excepciones global para respuestas de error claras y consistentes (400, 401, 404, 409).
- Backend: Java 17, Spring Boot 3
- Seguridad: Spring Security, JWT
- Base de Datos: Spring Data JPA, Hibernate, PostgreSQL
- Pasarela de Pagos: Mercado Pago SDK
- Utilidades: Lombok, Spring Validation
- Build Tool: Maven
Sigue estos pasos para configurar y ejecutar el proyecto en tu entorno local.
- JDK 17 o superior.
- Maven 3.6 o superior.
- Una instancia de PostgreSQL en ejecución.
- Una cuenta de desarrollador de Mercado Pago para obtener credenciales de prueba.
-
Clona el repositorio:
git clone spring-boot-mercadopago cd spring-boot-mercadopago
-
Crea la Base de Datos:
- Abre tu cliente de PostgreSQL (como pgAdmin o DBeaver).
- Crea una nueva base de datos llamada
shopping_cart_db
(o el nombre que prefieras).
-
Configura las variables de entorno:
- Ve a la carpeta
src/main/resources/
. - Crea una copia del archivo
application.properties.example
y renómbrala aapplication.properties
. - Abre el nuevo archivo
application.properties
y rellena los valores que faltan:spring.datasource.password
: La contraseña de tu usuario de PostgreSQL.jwt.secret
: Una clave secreta larga y aleatoria codificada en Base64.mercadopago.access.token
: Tu Access Token de Prueba (Sandbox) de Mercado Pago, que empieza conTEST-...
.
- Ve a la carpeta
Una vez configurado, puedes ejecutar la aplicación usando Maven:
mvn spring-boot:run