File size: 2,544 Bytes
c5d5fac f0995ed c5d5fac f8c30a9 c5d5fac af21a5d c5d5fac 918b080 b0b0253 918b080 df1d91c a011497 b0b0253 918b080 b0b0253 a011497 b0b0253 6ec701d 918b080 c5d5fac 918b080 12406ec c5d5fac 767123a c5d5fac 932f59f c5d5fac 918b080 c5d5fac e9d3c12 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
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 |