<?php
// Define que a resposta deste script será em formato JSON
header('Content-Type: application/json');

// 1. LER O CÓDIGO ENVIADO PELO FRONTEND
// O frontend envia um JSON, então precisamos ler o corpo da requisição
$request_body = file_get_contents('php://input');
$data = json_decode($request_body);

// Pega o código de autorização do objeto JSON
$authorizationCode = $data->authorizationCode;

if (!$authorizationCode) {
    http_response_code(400); // Bad Request
    echo json_encode(['error' => 'Authorization code is missing']);
    exit();
}

// 2. PREPARAR AS CREDENCIAIS E DADOS PARA A API DO GOTO
$clientId = '350bec1c-6a0b-45ee-a79e-d563455e0a09'; // Seu Client ID
$clientSecret = 'EUX4uFIYNh6RhaducDae9l1B'; // <<< COLOQUE SEU CLIENT SECRET AQUI
$redirectUri = 'https://clientehostix.com.br/apiteste/index.html'; // Exatamente a mesma URI de antes

// 3. MONTAR A REQUISIÇÃO cURL (A forma padrão do PHP para fazer chamadas de API)

// A URL para onde enviaremos a requisição POST
$tokenUrl = 'https://api.getgo.com/oauth/v2/token';

// Codifica as credenciais em Base64, como a API do GoTo espera
$credentials = base64_encode($clientId . ':' . $clientSecret);

// O corpo da requisição (payload)
$postData = http_build_query([
    'grant_type' => 'authorization_code',
    'code' => $authorizationCode,
    'redirect_uri' => $redirectUri
]);

// Os cabeçalhos (headers) da requisição
$headers = [
    'Authorization: Basic ' . $credentials,
    'Content-Type: application/x-www-form-urlencoded'
];

// 4. EXECUTAR A REQUISIÇÃO cURL
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $tokenUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// Verificar por erros na chamada cURL
if (curl_errno($ch)) {
    http_response_code(500); // Internal Server Error
    echo json_encode(['error' => 'cURL Error: ' . curl_error($ch)]);
    exit();
}

curl_close($ch);

// 5. DEVOLVER A RESPOSTA DO GOTO PARA O FRONTEND
// O $response já vem como uma string JSON do GoTo.
// Nós simplesmente a ecoamos de volta para o JavaScript que a chamou.
http_response_code($httpcode);
echo $response;

?>