Spaces:
Sleeping
Sleeping
import funciones | |
from fastapi import FastAPI, Form, HTTPException | |
from fastapi.responses import JSONResponse | |
from typing import Optional | |
app = FastAPI() | |
# Nuevo endpoint para 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) | |
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)}") | |
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) |