stripe-fastapi-docker-prod / ga4Analiticas.py
Moibe's picture
Debug Mode gone
932f59f
import json
import requests
import globales
def send_ga4_purchase_event(session):
"""
Función para enviar un evento de compra a GA4 usando Measurement Protocol.
Args:
event_data: Un diccionario con los datos del evento de compra de Stripe.
"""
url = f"https://www.google-analytics.com/mp/collect?measurement_id={globales.ga4ID}&api_secret={globales.ga4Key}"
moneda = session['currency'].upper()
imagenes = session['metadata']['imagenes']
print(f"Imágenes es: {imagenes} y es del tipo {type(imagenes)}...")
valor = session['amount_total'] / 100.0
print(f"Valor es {valor} y es del tipo {type(valor)}...")
cxm = int(valor) / int(imagenes) #costo por imagen
print(f"cxm es {cxm} y su tipo es {type(cxm)}...")
id_imagenes = str(imagenes) + 'i'
id_valor = str(int(valor)) + moneda
id_cxm = str(cxm) + moneda
#print(f"id_cxm es : {id_cxm} y su tipo es {type(id_cxm)}...")
item_id = id_imagenes + id_valor
item_name = id_cxm
# Prepara los items (productos) para GA4
items = []
# Nota: Tendrías que obtener los detalles de los productos
# de Stripe de manera más robusta, por ejemplo, de tu base de datos
# o de los metadatos de la sesión si los guardaste allí.
# Por simplicidad, aquí se usa un ejemplo estático.
# Simulación de obtención de items
# En un caso real, esto sería más complejo.
items.append({
"item_id": item_id, #1000i-1900mxn
"item_name": item_name, #1.8mxn
"price": int(valor),
"quantity": 1
})
payload = {
"client_id": session['metadata']['gaCliente'], # Aquí deberías usar el Client ID o User ID del usuario
"events": [
{
"name": "purchase",
"params": {
#"debug_mode": True,
"transaction_id": session['id'],
"value": valor, # Convierte de céntimos a la unidad de moneda
"currency": moneda,
"items": items
}
}
]
}
try:
response = requests.post(url, data=json.dumps(payload), headers={"Content-Type": "application/json"})
response.raise_for_status() # Lanza una excepción si la respuesta no es 2xx
print("Evento de compra enviado a GA4 con éxito.")
return True
except requests.exceptions.RequestException as e:
print(f"Error al enviar el evento a GA4: {e}")
return False