<?php
// Oculta erros para não bugar a resposta do Asaas
error_reporting(0);
ini_set('display_errors', 0);

require_once 'config.php';

// Lê o pacote de dados (JSON) que o Asaas enviou
$json = file_get_contents('php://input');
$data = json_decode($json, true);

// Se não tiver dados (ex: você abriu pelo navegador), ele só diz "ok" e fecha a porta
if (!$data || !isset($data['event'])) {
    echo '{"status":"ok"}';
    exit;
}

// O Asaas manda vários avisos, só queremos o aviso de PAGAMENTO RECEBIDO ou CONFIRMADO
if ($data['event'] === 'PAYMENT_RECEIVED' || $data['event'] === 'PAYMENT_CONFIRMED') {
    
    // Pega o ID da transação que o Asaas enviou
    $transacao_id = $data['payment']['id'];

    try {
        $pdo = getConexaoAtiva();
        $pdo->exec("SET NAMES utf8mb4");

        // Procura no nosso painel se existe uma fatura PENDENTE com esse ID
        $stmt = $pdo->prepare("SELECT * FROM faturas_loja WHERE transacao_id = ? AND status = 'pendente' LIMIT 1");
        $stmt->execute([$transacao_id]);
        $fatura = $stmt->fetch(PDO::FETCH_ASSOC);

        if ($fatura) {
            $fatura_id = $fatura['id'];
            $user_id = (int)$fatura['user_id'];
            $plano_id = (int)$fatura['plano_id'];

            // 1. Atualiza a fatura para 'pago' para não receber créditos duplicados
            $pdo->prepare("UPDATE faturas_loja SET status = 'pago' WHERE id = ?")->execute([$fatura_id]);

            // 2. Descobre quantos créditos o revendedor comprou
            $stmtPlano = $pdo->prepare("SELECT qtd_creditos FROM planos_creditos WHERE id = ?");
            $stmtPlano->execute([$plano_id]);
            $plano = $stmtPlano->fetch(PDO::FETCH_ASSOC);

            if ($plano) {
                $creditos_comprados = (int)$plano['qtd_creditos'];

                // 3. INJETA OS CRÉDITOS NA CONTA DO REVENDEDOR (A MÁGICA ACONTECE AQUI)
                $pdo->prepare("UPDATE reg_users SET credits = credits + ? WHERE id = ?")->execute([$creditos_comprados, $user_id]);
                
                // (Opcional) Salva no log de consumo que ele comprou créditos
                try {
                    $agora = date('Y-m-d H:i:s');
                    $acao = "Compra de " . $creditos_comprados . " Creditos (Automático)";
                    // Desconta 0, pois é uma entrada, só para ficar registrado
                    $pdo->prepare("INSERT INTO logs_creditos (revendedor_id, cliente_user, acao, qtd_descontada, data_hora) VALUES (?, 'Sistema', ?, 0, ?)")->execute([$user_id, $acao, $agora]);
                } catch(Exception $e) {}
            }
        }
    } catch (Exception $e) {
        // Se der erro no banco, morre em silêncio
    }
}

// Responde com status 200 (Sucesso) para o Asaas saber que recebemos a mensagem
http_response_code(200);
echo '{"status":"sucesso"}';
?>
