Usa Watch-IP con PHP
digitload/watch-ip-sdk (Packagist, v0.1.1) envuelve GET /v1/geo en un paquete de Composer construido sobre cURL, sin depender de Guzzle ni de ningún otro cliente HTTP.
Instalación
Requiere PHP 8.1+ con las extensiones curl y json, ambas incluidas prácticamente en cualquier instalación de PHP.
Composer
composer require digitload/watch-ip-sdkInicio rápido
Como con los demás SDK del lado del servidor, llamar a GET /v1/geo desde PHP significa llamarlo desde tu propio servidor en lugar del navegador de un visitante, así que pasa un origin explícito para satisfacer la verificación de orígenes permitidos de la clave.
PHP
use Digitload\WatchIP\WatchIP;
$client = new WatchIP('wip_pub_xxxxxxxx', origin: 'https://example.com');
$geo = $client->getGeo();
echo $geo['country'], ' ', $geo['city'], ' ', $geo['timezone'];Manejo de errores y tiempos de espera
Cada falla lanza un WatchIPError que extiende \RuntimeException. Exception::getCode() de PHP es de tipo int, pero los códigos de error de la API son cadenas de texto, así que léelos con getErrorCode() en lugar de getCode(). Pasa timeout (en segundos) junto con include en el array de opciones.
PHP
use Digitload\WatchIP\WatchIP;
use Digitload\WatchIP\WatchIPError;
$client = new WatchIP('wip_pub_xxxxxxxx', origin: 'https://example.com');
try {
$geo = $client->getGeo(['timeout' => 5.0]);
} catch (WatchIPError $err) {
echo $err->getErrorCode(), ' ', $err->getStatus(), ' ', $err->getMessage();
}Lo que este SDK no cubre
Este paquete solo llama a GET /v1/geo. IP lookup, validación de correo y comprobaciones de riesgo son endpoints de servidor a servidor independientes que todavía no tienen cliente en PHP: llámalos directamente con cURL, autenticados de la misma forma que describe la guía de autenticación.