import time import stripe from fastapi import FastAPI, Request, Header import sulkuPypi import globales import herramientas app = FastAPI() string_key = globales.llave # This is a terrible idea, only used for demo purposes! app.state.stripe_customer_id = None @app.get("/") def start(): return {f"Status":"Deployed"} @app.post("/webhook") async def webhook_received(request: Request, stripe_signature: str = Header(None)): webhook_secret = globales.webhook data = await request.body() print("Construyendo el evento:") try: event = stripe.Webhook.construct_event( payload=data, sig_header=stripe_signature, secret=webhook_secret ) # print("Evento construido...") # print(event) # print("Evento impreso") except Exception as e: print("Excepción es: ", e) try: event_data = event['data']['object'] except Exception as e: print("Excepción-183 es: ", e) event_type = event['type'] print("Voy a imprimir el event type:") print(event_type) print("Sucedido a las: ", herramientas.imprimeTime()) if event_type == 'checkout.session.completed': print("Checkout Session completado.") print("Status:") print(event_data['status']) print("Payment Method Options:") print(event_data['payment_method_options']) print("Cantidad de elementos:") print(len(event_data['payment_method_options'])) #Si hay un elemento que es card abona inmediatamente. #Si no, por ahora ignora. #if len(event_data['payment_method_options']) > 0: print("Imprimiendo payment method cards con pago en oxxo: ") time.sleep(2) print(event_data['payment_method_options']["card"]) time.sleep(3) if event_type == 'checkout.session.async_payment_succeeded': print("Pago asíncrono completado.") print("Checkout Session completado.") print("Status:") print(event_data['status']) print("Payment Method Options:") print(event_data['payment_method_options']) print("Cantidad de elementos:") print(len(event_data['payment_method_options'])) cus_id = event_data['customer'] print("Customer directo:", cus_id) imagenes = event_data['metadata']['imagenes'] print("Imágenes:") print(imagenes) herramientas.registrar_evento(cus_id, int(imagenes)) # if event_type == 'payment_intent.succeeded': # print("Pago realizado...") # #print(event_data) # # # # print(event_data['customer_details']['name']) # print("Metadata:") # print(event_data['metadata']) # #cus_id = event_data['metadata']['stripe_customer_id'] # # print("Metadata Cusid:") # # print(cus_id) # # else: print(f'unhandled event: {event_type}') return {"status": "success"}