File size: 3,116 Bytes
2695e7b
64e0349
2695e7b
64e0349
5b38336
 
 
bddc6a2
 
 
 
 
 
 
 
 
 
 
 
64e0349
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11cdb7c
 
 
 
 
 
64e0349
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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)