Moibe commited on
Commit
c5d5fac
·
1 Parent(s): ade17b7
Files changed (5) hide show
  1. autenticacion.py +5 -4
  2. ga4Ejemplo.py +68 -0
  3. globales.py +3 -3
  4. main.py +4 -2
  5. 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 == bridges.llave_sandbox
17
- webhook == bridges.webhook_sandbox
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 = 'prod' #o dev
4
  llave, webhook = autenticacion.defineAmbiente(env)
5
 
6
- # print("La llave es: ", llave)
7
- # print("Y el webhook es: ", webhook)
 
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