Uecko_ERP_FactuGES_sync/app/utils/send_rest_api.py
2025-10-03 20:22:15 +02:00

56 lines
1.6 KiB
Python

import requests
import logging
from typing import Optional, Dict, Any, Tuple
def validar_nif(
nif: str,
nombre: str,
*,
timeout: int = 10,
api_key: Optional[str] = None,
bearer_token: Optional[str] = None,
) -> Tuple[bool, Optional[Dict[str, Any]], Optional[str]]:
"""
Llama al endpoint de Verifacti para validar un NIF.
Retorna:
(ok, data, error)
- ok: True si la llamada fue exitosa y resultado == 'IDENTIFICADO'
- data: dict con la respuesta JSON completa
- error: mensaje de error si algo falló
"""
url = "https://api.verifacti.com/nifs/validar"
headers = {"Content-Type": "application/json",
"Accept": "application/json"}
if api_key:
headers["X-API-KEY"] = api_key
if bearer_token:
headers["Authorization"] = f"Bearer {bearer_token}"
payload = {
"nif": nif,
"nombre": nombre,
}
try:
resp = requests.post(
url, json=payload, headers=headers, timeout=timeout)
if resp.status_code != 200:
return False, None, f"HTTP {resp.status_code}: {resp.text}"
data = resp.json()
resultado = data.get("resultado")
# La lógica de validación: 'IDENTIFICADO' = válido
ok = resultado == "IDENTIFICADO"
return ok, data, None
except requests.RequestException as e:
logging.error("Error de conexión con la API Verifacti: %s", e)
return False, None, str(e)
except ValueError as e:
logging.error("Respuesta no es JSON válido: %s", e)
return False, None, "Respuesta no es JSON válido"