stripe-kraken / funciones.py
Moibe's picture
Funci贸n Principal crear sesi贸n
5cfc6de
raw
history blame
2.86 kB
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