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