Spaces:
Running
Running
| import stripe | |
| import globales | |
| import herramientas | |
| import ga4Analiticas | |
| from fastapi import Request, Header | |
| async def procesa_evento(request: Request, stripe_signature: str = Header(None)): | |
| webhook_secret = globales.webhook | |
| data = await request.body() | |
| 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()) | |
| gaCliente = event_data['metadata'].get('gaCliente', None) | |
| 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'])) | |
| #Importante: Todas las acciones relacionadas a la compra con tarjeta deben ir en el IF. | |
| #De lo contrario se marcará también en OXXO, antes de hacerce el pago. | |
| if len(event_data['payment_method_options']) > 0: #Si es mayor que cero checa si existe card. | |
| if len(event_data['payment_method_options']["card"]) > 1: #Si el contenido de card es mayor de uno, si existe y puedes finalmente procesar el pago. | |
| cus_id = event_data['customer'] | |
| print("Customer directo:", cus_id) | |
| imagenes = event_data['metadata']['imagenes'] | |
| print("Imágenes:") | |
| print(imagenes) | |
| firebase_user = event_data['metadata']['firebase_user'] | |
| herramientas.registrar_evento(cus_id, firebase_user, int(imagenes)) | |
| #Analytics se hace al final después de registrar la venta. | |
| print("gacliente:", gaCliente) | |
| print("Sending to GA4...") | |
| ga4Analiticas.send_ga4_purchase_event(event_data) | |
| 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)) | |
| print("gacliente:", gaCliente) | |
| print("Sending to GA4...") | |
| ga4Analiticas.send_ga4_purchase_event(event_data) | |
| else: | |
| print(f'unhandled event: {event_type}') | |
| return {"status": "success"} |