Una prueba de concepto (Proof of Concept) que demuestra la integración de Stripe con FastAPI para el procesamiento de pagos.
- 🔧 Características
- 📁 Estructura del Proyecto
- ⚙️ Instalación
- 🔑 Configuración
- 🚀 Uso
- 📚 API Endpoints
- 🧪 Testing
- 🔒 Seguridad
- 📖 Documentación
- 🤝 Contribución
- ✅ FastAPI - Framework web moderno y rápido para APIs
- ✅ Stripe Integration - Procesamiento seguro de pagos
- ✅ Validación automática - Pydantic para validación de datos
- ✅ Documentación automática - Swagger UI integrado (FastAPI por defecto)
- ✅ Variables de entorno - Configuración segura
- ✅ Logging - Sistema de registro para auditoría
PoC Stripe/
├── src/
│ ├── __init__.py # Paquete principal
│ ├── main.py # Aplicación FastAPI principal
│ └── stripe_service.py # Servicio de integración con Stripe
├── venv/ # Entorno virtual de Python
├── .env # Variables de entorno (no versionar)
├── .gitignore # Archivos ignorados por Git
└── README.md # Este archivo
- Python 3.8+
- pip (gestor de paquetes de Python)
- Cuenta de Stripe (para las claves API)
-
Clona el repositorio
git clone <url-del-repositorio> cd "PoC Stripe"
-
Crea y activa el entorno virtual
# Windows python -m venv venv venv\Scripts\activate # Linux/Mac python -m venv venv source venv/bin/activate
-
Instala las dependencias
pip install fastapi uvicorn stripe python-dotenv
-
Crea un archivo
.enven la raíz del proyecto:# Stripe Configuration STRIPE_SECRET_KEY=sk_test_your_secret_key_here STRIPE_PUBLISHABLE_KEY=pk_test_your_publishable_key_here STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here # FastAPI Configuration DEBUG=True HOST=localhost PORT=8000
-
Obtén tus claves de Stripe:
- Ve a Stripe Dashboard
- Navega a
Developers > API keys - Copia las claves de prueba (test keys)
# Desde la raíz del proyecto
cd src
python -m uvicorn main:app --reload --host localhost --port 8000- API: http://localhost:8000
- Documentación Swagger: http://localhost:8000/docs
- Documentación ReDoc: http://localhost:8000/redoc
| Método | Endpoint | Descripción | Parámetros |
|---|---|---|---|
GET |
/ |
Endpoint de bienvenida | Ninguno |
POST |
/pay |
Crear un Payment Intent | amount, currency, payment_method |
GET |
/paymentMethods |
Crear método de pago de prueba | Ninguno |
POST |
/refund |
Procesar un reembolso | payment_id |
GET |
/status/{payment_id} |
Obtener estado de un pago | payment_id (path) |
{
"amount": 2000,
"currency": "usd",
"payment_method": ""
}{
"payment_id": "pi_1234567890"
}curl -X POST "http://localhost:8000/pay" \
-H "Content-Type: application/json" \
-d '{
"amount": 2000,
"currency": "usd",
"payment_method": ""
}'curl -X GET "http://localhost:8000/paymentMethods"curl -X GET "http://localhost:8000/status/pi_1234567890"curl -X POST "http://localhost:8000/refund" \
-H "Content-Type: application/json" \
-d '{
"payment_id": "pi_1234567890"
}'Utiliza estas tarjetas de prueba:
| Número | Descripción |
|---|---|
4242424242424242 |
Visa - Pago exitoso |
4000000000000002 |
Visa - Tarjeta declinada |
4000000000009995 |
Visa - Fondos insuficientes |
- Mínimo: $0.50 (50 centavos)
- Máximo: $999,999.99
usd,eur,gbp,cad,aud,jpy
- ✅ Variables de entorno para claves API
- ✅ Validación de entrada con Pydantic
- ✅ Validación de montos y monedas
- ✅ Manejo seguro de errores
- ✅ Logging detallado para auditoría
- ✅ Verificación de formato de claves Stripe
- Las claves API se leen desde variables de entorno
- Todas las operaciones son validadas antes de enviar a Stripe
- Los errores son capturados y loggeados apropiadamente
- Solo se usan claves de prueba en desarrollo
main.py: Define los endpoints de FastAPI y maneja requests/responsesstripe_service.py: Contiene toda la lógica de integración con Stripe- Validaciones: Montos, monedas, IDs de pago y claves API
- Logging: Registro de todas las operaciones para debugging
- Fork el proyecto
- Crea una rama feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto es una Prueba de Concepto con fines educativos.
Desarrollador: Jesús Ojeda - Backend Developer Proyecto: PoC Stripe - FastAPI Integration
⚡ ¡Listo para procesar pagos con Stripe y FastAPI!