Moibe commited on
Commit
bc6528e
·
1 Parent(s): f7740a4

Manejo correcto de ambientes

Browse files
Files changed (6) hide show
  1. app.py +2 -1
  2. autenticacion.py +5 -2
  3. funciones.py +1 -0
  4. ga4Analiticas.py +72 -0
  5. globales.py +1 -1
  6. paga_oxxo.py +2 -2
app.py CHANGED
@@ -12,7 +12,8 @@ origins = [
12
  "http://localhost",
13
  "http://localhost:8000", # Si usas algún puerto específico para tu frontend
14
  "http://127.0.0.1:5500", # Puerto común de Live Server
15
- "https://splashmix.com", # Si despliegas tu frontend, añade su dominio aquí
 
16
  #"*" # ¡CUIDADO! '*' permite CUALQUIER origen. Úsalo solo para desarrollo o si sabes lo que haces.
17
  # Es más seguro especificar orígenes concretos en producción.
18
  ]
 
12
  "http://localhost",
13
  "http://localhost:8000", # Si usas algún puerto específico para tu frontend
14
  "http://127.0.0.1:5500", # Puerto común de Live Server
15
+ "https://targetvox.com"
16
+ "https://splashmix.ink", # Si despliegas tu frontend, añade su dominio aquí
17
  #"*" # ¡CUIDADO! '*' permite CUALQUIER origen. Úsalo solo para desarrollo o si sabes lo que haces.
18
  # Es más seguro especificar orígenes concretos en producción.
19
  ]
autenticacion.py CHANGED
@@ -7,17 +7,20 @@ def defineAmbiente(env):
7
  import bridges
8
  if env == 'prod':
9
  llave = bridges.llave_prod
10
- else:
11
  llave = bridges.llave_sandbox
 
12
 
13
  else:
14
  print("Entorno remoto listo...")
15
  if os.getenv("ambiente_stripe") == 'prod':
16
  llave = os.getenv("llave_prod")
 
17
  else:
18
  llave = os.getenv("llave_sandbox")
 
19
 
20
- return llave
21
 
22
  def local_check():
23
  hostname = socket.gethostname()
 
7
  import bridges
8
  if env == 'prod':
9
  llave = bridges.llave_prod
10
+ else: #if dev
11
  llave = bridges.llave_sandbox
12
+ ga4Key = bridges.GA4_API_SECRET_TARGET
13
 
14
  else:
15
  print("Entorno remoto listo...")
16
  if os.getenv("ambiente_stripe") == 'prod':
17
  llave = os.getenv("llave_prod")
18
+ ga4Key = os.getenv("GA4_SECRET_PROD")
19
  else:
20
  llave = os.getenv("llave_sandbox")
21
+ ga4Key = os.getenv("GA4_SECRET_DEV")
22
 
23
+ return llave, ga4Key
24
 
25
  def local_check():
26
  hostname = socket.gethostname()
funciones.py CHANGED
@@ -1,5 +1,6 @@
1
  import stripe
2
  import globales
 
3
 
4
  stripe.api_key = globales.llave
5
 
 
1
  import stripe
2
  import globales
3
+ import ga4Analiticas
4
 
5
  stripe.api_key = globales.llave
6
 
ga4Analiticas.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import requests
4
+ import globales
5
+
6
+ GA4_MEASUREMENT_ID = os.getenv("GA4_MEASUREMENT_ID")
7
+
8
+ def send_ga4_purchase_event(session):
9
+ """
10
+ Función para enviar un evento de compra a GA4 usando Measurement Protocol.
11
+
12
+ Args:
13
+ event_data: Un diccionario con los datos del evento de compra de Stripe.
14
+ """
15
+ url = f"https://www.google-analytics.com/mp/collect?measurement_id={GA4_MEASUREMENT_ID}&api_secret={globales.ga4Key}"
16
+
17
+ moneda = session['currency'].upper()
18
+ imagenes = session['metadata']['imagenes']
19
+ print(f"Imágenes es: {imagenes} y es del tipo {type(imagenes)}...")
20
+ valor = session['amount_total'] / 100.0
21
+ print(f"Valor es {valor} y es del tipo {type(valor)}...")
22
+ cxm = int(valor) / int(imagenes) #costo por imagen
23
+ print(f"cxm es {cxm} y su tipo es {type(cxm)}...")
24
+
25
+ id_imagenes = str(imagenes) + 'i'
26
+ id_valor = str(int(valor)) + moneda
27
+ id_cxm = str(cxm) + moneda
28
+ #print(f"id_cxm es : {id_cxm} y su tipo es {type(id_cxm)}...")
29
+
30
+ item_id = id_imagenes + id_valor
31
+ item_name = id_cxm
32
+
33
+ # Prepara los items (productos) para GA4
34
+ items = []
35
+ # Nota: Tendrías que obtener los detalles de los productos
36
+ # de Stripe de manera más robusta, por ejemplo, de tu base de datos
37
+ # o de los metadatos de la sesión si los guardaste allí.
38
+ # Por simplicidad, aquí se usa un ejemplo estático.
39
+
40
+ # Simulación de obtención de items
41
+ # En un caso real, esto sería más complejo.
42
+ items.append({
43
+ "item_id": item_id, #1000i-1900mxn
44
+ "item_name": item_name, #1.8mxn
45
+ "price": int(valor),
46
+ "quantity": 1
47
+ })
48
+
49
+ payload = {
50
+ "client_id": session['metadata']['gaCliente'], # Aquí deberías usar el Client ID o User ID del usuario
51
+ "events": [
52
+ {
53
+ "name": "purchase",
54
+ "params": {
55
+ "debug_mode": True,
56
+ "transaction_id": session['id'],
57
+ "value": valor, # Convierte de céntimos a la unidad de moneda
58
+ "currency": moneda,
59
+ "items": items
60
+ }
61
+ }
62
+ ]
63
+ }
64
+
65
+ try:
66
+ response = requests.post(url, data=json.dumps(payload), headers={"Content-Type": "application/json"})
67
+ response.raise_for_status() # Lanza una excepción si la respuesta no es 2xx
68
+ print("Evento de compra enviado a GA4 con éxito.")
69
+ return True
70
+ except requests.exceptions.RequestException as e:
71
+ print(f"Error al enviar el evento a GA4: {e}")
72
+ return False
globales.py CHANGED
@@ -2,4 +2,4 @@ import autenticacion
2
 
3
  env = "dev" #o dev (Define si es sandbox o producción en Stripe.)
4
  #Importante: Solo sirve en local, si estás en el server de HF, ahí tiene su propia variable.
5
- llave = autenticacion.defineAmbiente(env)
 
2
 
3
  env = "dev" #o dev (Define si es sandbox o producción en Stripe.)
4
  #Importante: Solo sirve en local, si estás en el server de HF, ahí tiene su propia variable.
5
+ llave, ga4Key = autenticacion.defineAmbiente(env)
paga_oxxo.py CHANGED
@@ -1,7 +1,7 @@
1
  import stripe
2
  import globales
3
 
4
- print("Haciendo pago en Oxxo...")
5
 
6
  stripe.api_key = globales.llave
7
 
@@ -10,7 +10,7 @@ stripe.api_key = globales.llave
10
 
11
  # Si necesitas recuperar el PaymentIntent asociado a la sesión
12
  payment_intent = stripe.PaymentIntent.retrieve('pi_3RupzSROVpWRmEfB1wEZghFL')
13
- print("payment_intent obtenido...")
14
 
15
  # Comprobar si hay alguna acción necesaria
16
  if hasattr(payment_intent, 'next_action') and payment_intent.next_action:
 
1
  import stripe
2
  import globales
3
 
4
+ #print("Haciendo pago en Oxxo...")
5
 
6
  stripe.api_key = globales.llave
7
 
 
10
 
11
  # Si necesitas recuperar el PaymentIntent asociado a la sesión
12
  payment_intent = stripe.PaymentIntent.retrieve('pi_3RupzSROVpWRmEfB1wEZghFL')
13
+ #print("payment_intent obtenido...")
14
 
15
  # Comprobar si hay alguna acción necesaria
16
  if hasattr(payment_intent, 'next_action') and payment_intent.next_action: