import urllib.request import json import ssl import sys import io if sys.platform == 'win32': sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE print("=================================================================") print("🧪 VERIFICACIÓN FINAL DEL SISTEMA - DRIPZONE & WHATSAPP CATALOG") print("=================================================================") # 1. Feed XML de Catálogo WhatsApp print("\n[1] Verificando Feed XML de Catálogo WhatsApp (Meta Commerce)...") try: req = urllib.request.Request( "https://drip-zone.online/api/catalog/feed.xml", headers={"User-Agent": "facebookexternalhit/1.1"} ) with urllib.request.urlopen(req, context=ctx, timeout=15) as res: content = res.read().decode('utf-8', errors='replace') print(f" -> HTTP Status: {res.status}") print(f" -> Content-Type: {res.headers.get('Content-Type')}") item_count = content.count("") print(f" -> Total productos en XML: {item_count}") if "" in content: print(" -> Estructura XML: VÁLIDA (RSS 2.0 / Google & Meta Merchant Feed)") first_item = content.split("")[1].split("")[0] if item_count > 0 else "" if first_item: lines = [l.strip() for l in first_item.split("\n") if l.strip()][:6] print(" -> Muestra primer producto:\n " + "\n ".join(lines)) except Exception as e: print(f" [ERROR] {e}") # 2. Feed CSV de Catálogo WhatsApp print("\n[2] Verificando Feed CSV de Catálogo WhatsApp...") try: req = urllib.request.Request("https://drip-zone.online/api/catalog/feed.csv") with urllib.request.urlopen(req, context=ctx, timeout=15) as res: content = res.read().decode('utf-8', errors='replace') print(f" -> HTTP Status: {res.status}") csv_lines = [l for l in content.split("\n") if l.strip()] print(f" -> Total filas en CSV (incluyendo header): {len(csv_lines)}") print(f" -> Header CSV: {csv_lines[0] if csv_lines else 'Vacío'}") except Exception as e: print(f" [ERROR] {e}") # 3. Webhook de WhatsApp en DripZone print("\n[3] Verificando Webhook en DripZone...") try: req = urllib.request.Request( "https://drip-zone.online/api/webhook/whatsapp", data=json.dumps({"test": True, "source": "final_verification"}).encode('utf-8'), headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req, context=ctx, timeout=15) as res: print(f" -> POST /api/webhook/whatsapp: HTTP {res.status}") print(f" -> Respuesta: {res.read().decode('utf-8')}") except Exception as e: print(f" [ERROR] {e}") # 4. APK Público print("\n[4] Verificando disponibilidad del APK...") try: req = urllib.request.Request("https://drip-zone.online/DripZone.apk", method="HEAD") with urllib.request.urlopen(req, context=ctx, timeout=15) as res: size_mb = int(res.headers.get('Content-Length', 0)) / (1024 * 1024) print(f" -> URL: https://drip-zone.online/DripZone.apk") print(f" -> HTTP Status: {res.status} (Tamaño: {size_mb:.2f} MB)") except Exception as e: print(f" [ERROR] {e}") # 5. Webhooks en Evolution API print("\n[5] Verificando configuración de Webhooks en Evolution API...") for inst, key in [("AutomataAlmeira", "EE49029EEB85-4568-8F81-C9FDFC6E2943"), ("DripZone", "83B5BD230796-4324-AE73-3508F69E279D")]: try: req = urllib.request.Request( f"https://evolution.almeira.com.co/webhook/find/{inst}", headers={"apikey": key} ) with urllib.request.urlopen(req, context=ctx, timeout=15) as res: data = json.loads(res.read().decode('utf-8')) print(f" -> Instancia {inst}:") print(f" Enabled: {data.get('enabled')}") print(f" Webhook URL: {data.get('url')}") print(f" Eventos: {data.get('events')}") except Exception as e: print(f" [ERROR en {inst}]: {e}") print("\n=================================================================") print("✅ TODAS LAS PRUEBAS COMPLETADAS") print("=================================================================")