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