Utilize o Watch-IP com PHP
digitload/watch-ip-sdk (Packagist, v0.1.1) envolve GET /v1/geo num pacote Composer construído sobre cURL — sem Guzzle nem qualquer outra dependência de cliente HTTP.
Instalação
Requer PHP 8.1+ com as extensões curl e json, ambas incluídas em praticamente todas as instalações de PHP.
Composer
composer require digitload/watch-ip-sdkInício rápido
Tal como com os outros SDKs do lado do servidor, chamar GET /v1/geo a partir de PHP significa chamá-lo a partir do seu próprio servidor e não do navegador de um visitante, por isso passe uma origin explícita para satisfazer a verificação de origens permitidas da chave.
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'];Tratamento de erros e tempos limite
Toda a falha lança um WatchIPError que estende \RuntimeException. O Exception::getCode() do PHP é do tipo int, mas os códigos de erro da API são strings, por isso leia-os com getErrorCode() em vez de getCode(). Passe timeout (segundos) juntamente com include no array de opções.
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();
}O que este SDK não cobre
Este pacote apenas chama GET /v1/geo. A pesquisa de IP, a validação de e-mail e as verificações de risco são endpoints servidor-a-servidor separados, ainda sem cliente PHP — chame-os diretamente com cURL, autenticados da mesma forma descrita no guia de autenticação.