<?php
header('Content-Type: application/json');
ini_set('display_errors', 0);

$input = json_decode(file_get_contents('php://input'), true);

if (!$input) {
    echo json_encode(['sucesso' => false, 'erro' => 'Dados não recebidos']);
    exit;
}

$baseUrl = $input['ambiente'] == 'producao' 
    ? 'https://api.focusnfe.com.br/v2' 
    : 'https://homologacao.focusnfe.com.br/v2';

$url = $baseUrl . '/nfsen?ref=' . urlencode($input['ref']);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($input['payload']));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Accept: application/json',
    'Authorization: Basic ' . base64_encode($input['token'] . ':')
]);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$resposta = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$respostaJson = json_decode($resposta, true);

if ($httpCode == 200 || $httpCode == 201 || $httpCode == 202) {
    $numeroNfse = $respostaJson['numero'] ?? $respostaJson['nfse']['numero'] ?? null;
    echo json_encode(['sucesso' => true, 'numero_nfse' => $numeroNfse, 'resposta' => $respostaJson]);
} else {
    $mensagem = '';
    if (isset($respostaJson['erros']) && is_array($respostaJson['erros'])) {
        foreach ($respostaJson['erros'] as $erro) {
            $mensagem .= ($erro['Descricao'] ?? $erro['mensagem'] ?? '') . "\n";
        }
    } else {
        $mensagem = $respostaJson['mensagem'] ?? $respostaJson['error'] ?? "Erro HTTP $httpCode";
    }
    echo json_encode(['sucesso' => false, 'erro' => trim($mensagem), 'detalhes' => $respostaJson]);
}
?>