<?php
/**
 * Webhook para recebimento de notificações de pagamento PIX do Sicoob.
 */

// 1. Recebe os dados brutos da requisição (geralmente em formato JSON)
header('Content-Type: application/json');
$requestBody = file_get_contents('php://input');


// 2. Cria um arquivo de log para depuração. Essencial para webhooks!
$logFile = 'webhook_pix.log';
$logData = date('Y-m-d H:i:s') . " --- Requisição Recebida ---\n" . $requestBody . "\n\n";
file_put_contents($logFile, $logData, FILE_APPEND);

// 3. Inclui os arquivos de inicialização do sistema
define('_VALID_PHP', true); // Garante que o init.php seja executado
require_once('../../../../init.php');

// 4. (OPCIONAL, MAS RECOMENDADO) Validação de Segurança
// Verifique a documentação do Sicoob para o método de validação recomendado (assinatura, token, etc).
// O exemplo abaixo usa um token secreto que você pode configurar no painel do Sicoob e no seu sistema.
/*
$secretTokenFromConfig = $core->token_webhook; // Supondo que você salvou o token nas configurações
$secretTokenFromRequest = $_GET['token'] ?? ''; // Exemplo: token passado como parâmetro na URL

if (empty($secretTokenFromConfig) || $secretTokenFromRequest !== $secretTokenFromConfig) {
    http_response_code(401); // Não autorizado
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - ERRO: Tentativa de acesso não autorizada.\n", FILE_APPEND);
    echo json_encode(['status' => 'error', 'message' => 'Acesso não autorizado.']);
    exit;
}
*/

// 5. Decodifica o JSON recebido
$data = json_decode($requestBody, true);

// 6. Verifica se o JSON é válido e se contém a informação do PIX
if (json_last_error() !== JSON_ERROR_NONE || !isset($data['pix'])) {
    http_response_code(400); // Requisição inválida
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - ERRO: Payload JSON inválido.\n", FILE_APPEND);
    echo json_encode(['status' => 'error', 'message' => 'Payload inválido.']);
    exit;
}

// 7. Processa cada confirmação de PIX recebida
try {
    foreach ($data['pix'] as $pix) {
        if (isset($pix['txid'])) {
            $txid = $pix['txid'];
            file_put_contents($logFile, date('Y-m-d H:i:s') . " - Processando txid: {$txid}\n", FILE_APPEND);
            //$pagamento_pix->confirmarPagamentoPix($txid);
        }
    }
    // 8. Responde ao Sicoob com status 200 OK para confirmar o recebimento
    http_response_code(200);
    echo json_encode(['status' => 'success', 'message' => 'Webhook processado.']);
} catch (Exception $e) {
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - EXCEÇÃO: " . $e->getMessage() . "\n", FILE_APPEND);
    http_response_code(500); // Erro interno do servidor
}