Este proyecto implementa una API RESTful para gestionar pagos y transacciones, construida con TypeScript, Express y documentada con Swagger/OpenAPI.
- Gestión completa de transacciones de pago
- Documentación interactiva con Swagger UI
- Tipado estático con TypeScript
- Arquitectura modular y escalable
- Sistema de estados de transacción
- Manejo de errores robusto
- Node.js (v14 o superior)
- npm o yarn
- TypeScript
- Clona el repositorio:
git clone [[dummy-payment-service](https://github.com/ehernandezvilla/dummy-payment-service)]
cd dummy-payment-service
- Instala las dependencias:
npm install
- Configura las variables de entorno:
cp .env.example .env
# Edita .env con tus configuraciones
src/
├── controllers/
│ └── paymentController.ts
├── models/
│ └── Transaction.ts
├── routes/
│ └── paymentRoutes.ts
├── swagger.ts
└── index.ts
El proyecto utiliza las siguientes dependencias principales:
{
"express": "^4.17.1",
"typescript": "^4.5.0",
"swagger-jsdoc": "^6.0.0",
"swagger-ui-express": "^4.1.6",
"uuid": "^8.3.2"
}
- Inicia el servidor en modo desarrollo:
npm run dev
- Para compilar y ejecutar en producción:
npm run build
npm start
La API estará disponible en: http://localhost:3000
Documentación Swagger UI: http://localhost:3000/api-docs
- POST
/api/payments/initiate
- Body:
{
"amount": number,
"userId": string
}
- POST
/api/payments/update-status
- Body:
{
"transactionId": string,
"status": "payment_pending" | "payment_processing" | "payment_success" | "payment_failed" | "payment_cancelled" | "payment_expired"
}
- GET
/api/payments/:transactionId/status
payment_pending
: Pago iniciado pero no procesadopayment_processing
: Pago en procesopayment_success
: Pago completado exitosamentepayment_failed
: Pago fallidopayment_cancelled
: Pago canceladopayment_expired
: Pago expirado
- Validación de datos de entrada
- Manejo seguro de transacciones
- Tipado estricto con TypeScript
npm run dev # Inicia el servidor en modo desarrollo
npm start # Inicia el servidor en modo producción
La documentación completa de la API está disponible a través de Swagger UI en la ruta /api-docs
cuando el servidor está en ejecución.
- Haz un Fork del proyecto
- Crea una rama para tu característica (
git checkout -b feature/AmazingFeature
) - Realiza tus cambios y haz commit (
git commit -m 'Add: AmazingFeature'
) - Push a la rama (
git push origin feature/AmazingFeature
) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE.md para más detalles.
[TU_NOMBRE]
- GitHub: @ehernandezvilla
- LinkedIn: /ehernandezvilla
- Agradecimientos especiales a los contribuidores y mantenedores de las librerías utilizadas
- Inspirado en las mejores prácticas de la comunidad de TypeScript y Express
⌨️ con ❤️