File size: 2,855 Bytes
d90d6a6
12cb4be
3e64a10
d90d6a6
d159d12
d90d6a6
d159d12
 
d90d6a6
51214b8
2690756
 
4a900cc
5cfc6de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import globales
import herramientas
import conexion_firebase

def funcion_generica(platillo):

    try:        
        return "Hola"

    except Exception as e:     
        print("Excepci贸n: ", e)
        # Opci贸n para regresar imagen gen茅rica. (ya no porque se env铆a desde backend.)
        # return "default.png"
        return '{"Error 500": e}'
    
def create_checkout_session(price_id, customer_email=None, customer_id=None):
    """
    Crea una nueva Checkout Session para un pago 煤nico.

    Args:
        price_id (str): El ID del precio en Stripe para el art铆culo que se va a comprar.
        customer_email (str, opcional): Email para pre-rellenar o asociar con un cliente existente.
        customer_id (str, opcional): ID de un cliente existente en Stripe para asociar la sesi贸n.

    Returns:
        str: La URL de la Checkout Session, o None si hay un error.
    """
    print("Estoy en create checkout session y el customer ID es: ", customer_id)
    try:
        session_params = {
            'line_items': [{
                'price': price_id,
                'quantity': 1,
            }],
            'mode': 'payment',  # Para pagos 煤nicos (one-time payment)
            'success_url': 'https://tudominio.com/gracias?session_id={CHECKOUT_SESSION_ID}',
            'cancel_url': 'https://tudominio.com/cancelar',
            'locale': 'es', # Establece el idioma del checkout a espa帽ol
            'client_reference_id': 'Moibe'
        }

        # Opciones para el cliente
        if customer_id:
            session_params['customer'] = customer_id
        elif customer_email:
            session_params['customer_email'] = customer_email
        else:
            # Si no se provee ni customer_id ni customer_email, Stripe puede crear uno si es necesario
            # O podr铆as pedir el email en el formulario de Checkout.
            pass

        # Opcional: Agregar informaci贸n de env铆o si aplica (para productos f铆sicos)
        # session_params['shipping_address_collection'] = {'allowed_countries': ['US', 'CA', 'MX']}

        # Opcional: Permitir c贸digos promocionales
        # session_params['allow_promotion_codes'] = True

        # Opcional: Agregar metadata a la sesi贸n (no al pago final directamente, pero 煤til para webhooks)
        # session_params['metadata'] = {'order_id': 'ORD12345', 'user_id': 'user_abc'}

        session = stripe.checkout.Session.create(**session_params)

        print(f"Checkout Session creada exitosamente. ID: {session.id}")
        print(f"URL de redirecci贸n: {session.url}")
        return session.url

    except stripe.error.StripeError as e:
        print(f"Error de Stripe al crear la Checkout Session: {e}")
        return None
    except Exception as e:
        print(f"Ocurri贸 un error inesperado al crear la Checkout Session: {e}")
        return None