Moibe's picture
Crear Cliente
64e0349
raw
history blame
3.12 kB
import funciones
from fastapi import FastAPI, Form, HTTPException
from fastapi.responses import JSONResponse
from typing import Optional
app = FastAPI()
# Nuevo endpoint para Health Check
@app.get("/health",
tags=["Health Check"],
description="Verifica el estado de salud de la API.",
summary="Health Check"
)
async def health_check():
"""
Este endpoint devuelve una respuesta 200 OK para indicar que la API est谩 funcionando.
"""
return JSONResponse(content={"status": "ok"}, status_code=200)
@app.post("/creaCliente/")
async def creaCliente(
email: str = Form(...),
name: Optional[str] = Form(None),
description: Optional[str] = Form(None),
phone: Optional[str] = Form(None),
# Si quieres pasar metadata, podr铆as recibirla como un JSON string y luego parsearla
# o como m煤ltiples campos de formulario si sabes cu谩les ser谩n.
# Por simplicidad aqu铆, no incluiremos metadata compleja directamente en Form,
# pero es posible extenderlo.
):
"""
Crea un nuevo cliente (Customer) en Stripe utilizando los datos proporcionados.
Args:
email (str): El correo electr贸nico del cliente.
name (str, opcional): El nombre del cliente.
description (str, opcional): Una descripci贸n para el cliente.
phone (str, opcional): El n煤mero de tel茅fono del cliente.
Returns:
dict: Un diccionario con el ID del cliente de Stripe si la creaci贸n fue exitosa.
O un error si la creaci贸n fall贸.
"""
try:
# Llama a la funci贸n create_stripe_customer que definimos previamente.
customer = funciones.create_stripe_customer(
email=email,
name=name,
description=description,
phone=phone
# Si quieres a帽adir metadata, aqu铆 la pasar铆as si la recibes en el Form.
# Por ejemplo: metadata={"origen": "FastAPI", "username": some_username_variable}
)
if customer:
return {"message": "Cliente creado exitosamente", "customer_id": customer.id, "customer_email": customer.email}
else:
# Si la funci贸n retorna None, significa que hubo un error interno
raise HTTPException(status_code=500, detail="No se pudo crear el cliente en Stripe. Verifica los logs del servidor.")
except HTTPException as e:
# Re-lanza HTTPException para que FastAPI la maneje directamente
raise e
except Exception as e:
# Captura cualquier otra excepci贸n no esperada
raise HTTPException(status_code=500, detail=f"Ocurri贸 un error inesperado al procesar la solicitud: {str(e)}")
@app.post("/creaLinkSesion/")
async def creaLinkSesion(
price_id: str = Form(...), # Sigue siendo requerido, enviado como Form si la petici贸n es multipart/form-data
customer_email: Optional[str] = Form(None), # Ahora opcional, valor por defecto None
customer_id: Optional[str] = Form(None) # Ahora opcional, valor por defecto None
):
return funciones.create_checkout_session(price_id, customer_email, customer_id)