Spaces:
Running
Running
Analytics
Browse files- autenticacion.py +5 -4
- ga4Ejemplo.py +68 -0
- globales.py +3 -3
- main.py +4 -2
- archivos/algo.py → test.py +0 -0
autenticacion.py
CHANGED
@@ -6,15 +6,16 @@ def defineAmbiente(env):
|
|
6 |
|
7 |
print("Estoy en defineambiente...")
|
8 |
if local_check():
|
9 |
-
print("Entorno Local...")
|
|
|
10 |
import bridges
|
11 |
if env == 'prod':
|
12 |
llave = bridges.llave_prod
|
13 |
webhook = bridges.webhook_prod
|
14 |
firestore = 'config_prod.json'
|
15 |
-
else: #if dev
|
16 |
-
llave
|
17 |
-
webhook
|
18 |
firestore = 'config_dev.json'
|
19 |
else:
|
20 |
print("Entorno remoto listo...")
|
|
|
6 |
|
7 |
print("Estoy en defineambiente...")
|
8 |
if local_check():
|
9 |
+
print("Entorno Local...")
|
10 |
+
|
11 |
import bridges
|
12 |
if env == 'prod':
|
13 |
llave = bridges.llave_prod
|
14 |
webhook = bridges.webhook_prod
|
15 |
firestore = 'config_prod.json'
|
16 |
+
else: #if dev
|
17 |
+
llave = bridges.llave_sandbox
|
18 |
+
webhook = bridges.webhook_sandbox
|
19 |
firestore = 'config_dev.json'
|
20 |
else:
|
21 |
print("Entorno remoto listo...")
|
ga4Ejemplo.py
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import requests
|
2 |
+
import json
|
3 |
+
import os
|
4 |
+
|
5 |
+
# Tu API Secret y Measurement ID de Google Analytics 4
|
6 |
+
GA4_API_SECRET = "zqxXw6mdR1CR0FaQYWaZEQ" # Reemplaza con tu secreto
|
7 |
+
GA4_MEASUREMENT_ID = "G-PHPJCWFF9L" # Reemplaza con tu ID de medición
|
8 |
+
|
9 |
+
def send_ga4_purchase_event(event_data):
|
10 |
+
"""
|
11 |
+
Función para enviar un evento de compra a GA4 usando Measurement Protocol.
|
12 |
+
|
13 |
+
Args:
|
14 |
+
event_data: Un diccionario con los datos del evento de compra de Stripe.
|
15 |
+
"""
|
16 |
+
url = f"https://www.google-analytics.com/mp/collect?measurement_id={GA4_MEASUREMENT_ID}&api_secret={GA4_API_SECRET}"
|
17 |
+
|
18 |
+
# Extrae la información de la sesión de Stripe
|
19 |
+
session = event_data['data']['object']
|
20 |
+
|
21 |
+
# Prepara los items (productos) para GA4
|
22 |
+
items = []
|
23 |
+
# Nota: Tendrías que obtener los detalles de los productos
|
24 |
+
# de Stripe de manera más robusta, por ejemplo, de tu base de datos
|
25 |
+
# o de los metadatos de la sesión si los guardaste allí.
|
26 |
+
# Por simplicidad, aquí se usa un ejemplo estático.
|
27 |
+
|
28 |
+
# Simulación de obtención de items
|
29 |
+
# En un caso real, esto sería más complejo.
|
30 |
+
items.append({
|
31 |
+
"item_id": "SKU_EJEMPLO",
|
32 |
+
"item_name": "Producto Ejemplo",
|
33 |
+
"price": session['amount_total'] / 100.0, # Stripe usa céntimos
|
34 |
+
"quantity": 1
|
35 |
+
})
|
36 |
+
|
37 |
+
payload = {
|
38 |
+
"client_id": "CLIENT_ID_DEL_USUARIO", # Aquí deberías usar el Client ID o User ID del usuario
|
39 |
+
"events": [
|
40 |
+
{
|
41 |
+
"name": "purchase",
|
42 |
+
"params": {
|
43 |
+
"debug_mode": True,
|
44 |
+
"transaction_id": session['id'],
|
45 |
+
"value": session['amount_total'] / 100.0, # Convierte de céntimos a la unidad de moneda
|
46 |
+
"currency": session['currency'].upper(),
|
47 |
+
"items": items
|
48 |
+
}
|
49 |
+
}
|
50 |
+
]
|
51 |
+
}
|
52 |
+
|
53 |
+
try:
|
54 |
+
response = requests.post(url, data=json.dumps(payload), headers={"Content-Type": "application/json"})
|
55 |
+
response.raise_for_status() # Lanza una excepción si la respuesta no es 2xx
|
56 |
+
print("Evento de compra enviado a GA4 con éxito.")
|
57 |
+
return True
|
58 |
+
except requests.exceptions.RequestException as e:
|
59 |
+
print(f"Error al enviar el evento a GA4: {e}")
|
60 |
+
return False
|
61 |
+
|
62 |
+
# --- Lógica de tu webhook ---
|
63 |
+
# Esta es una parte de ejemplo de tu endpoint.
|
64 |
+
# Aquí recibes el evento de Stripe.
|
65 |
+
# Puedes verificar el evento con la firma para mayor seguridad.
|
66 |
+
|
67 |
+
# if stripe_event.type == 'checkout.session.completed':
|
68 |
+
# send_ga4_purchase_event(stripe_event)
|
globales.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import autenticacion
|
2 |
|
3 |
-
env = '
|
4 |
llave, webhook = autenticacion.defineAmbiente(env)
|
5 |
|
6 |
-
|
7 |
-
|
|
|
1 |
import autenticacion
|
2 |
|
3 |
+
env = 'dev' #o dev
|
4 |
llave, webhook = autenticacion.defineAmbiente(env)
|
5 |
|
6 |
+
print("La llave es: ", llave)
|
7 |
+
print("Y el webhook es: ", webhook)
|
main.py
CHANGED
@@ -2,12 +2,12 @@ import stripe
|
|
2 |
import globales
|
3 |
import herramientas
|
4 |
from fastapi import FastAPI, Request, Header
|
|
|
|
|
5 |
|
6 |
app = FastAPI()
|
7 |
|
8 |
string_key = globales.llave
|
9 |
-
# This is a terrible idea, only used for demo purposes!
|
10 |
-
#app.state.stripe_customer_id = None
|
11 |
|
12 |
@app.get("/")
|
13 |
def start():
|
@@ -53,6 +53,8 @@ async def webhook_received(request: Request, stripe_signature: str = Header(None
|
|
53 |
print(event_data['payment_method_options'])
|
54 |
print("Cantidad de elementos:")
|
55 |
print(len(event_data['payment_method_options']))
|
|
|
|
|
56 |
#Si hay un elemento que es card abona inmediatamente.
|
57 |
#Si no, por ahora ignora.
|
58 |
if len(event_data['payment_method_options']) > 0: #Si es mayor que cero checa si existe card.
|
|
|
2 |
import globales
|
3 |
import herramientas
|
4 |
from fastapi import FastAPI, Request, Header
|
5 |
+
import ga4Ejemplo
|
6 |
+
|
7 |
|
8 |
app = FastAPI()
|
9 |
|
10 |
string_key = globales.llave
|
|
|
|
|
11 |
|
12 |
@app.get("/")
|
13 |
def start():
|
|
|
53 |
print(event_data['payment_method_options'])
|
54 |
print("Cantidad de elementos:")
|
55 |
print(len(event_data['payment_method_options']))
|
56 |
+
print("Sending to GA4...")
|
57 |
+
ga4Ejemplo.send_ga4_purchase_event(event_data)
|
58 |
#Si hay un elemento que es card abona inmediatamente.
|
59 |
#Si no, por ahora ignora.
|
60 |
if len(event_data['payment_method_options']) > 0: #Si es mayor que cero checa si existe card.
|
archivos/algo.py → test.py
RENAMED
File without changes
|