<?php
// Pastikan path connect.php bener
require_once 'connect.php'; 

// 1. Ambil data mentah dari SiTransfer
$rawInput = file_get_contents('php://input');
$payload = json_decode($rawInput, true);

// 2. Log data buat debug
file_put_contents('log_callback.txt', $rawInput . PHP_EOL, FILE_APPEND);

// 3. Validasi Data Utama dari SiTransfer
if (isset($payload['success']) && $payload['success'] === true && isset($payload['data'])) {
    
    $data = $payload['data'];
    $status = $data['status']; // success / pending

    // SiTransfer mengirimkan status 'success' saat pembayaran selesai
    if ($status === 'success') {
        
        $amount  = (int)$data['amount'];
        $reff_id = mysqli_real_escape_string($koneksi, $data['transaction_id'] ?? '');

        // 4. CEK DATABASE: Ambil data transaksi yang COCOK dengan reff_id dan statusnya masih 'Pending'
        // Kita ambil langsung isi kolom `id_user` dari record transaksi itu sendiri biar VALID!
        $check_query = mysqli_query($koneksi, "SELECT id_user FROM tb_transaksi WHERE reff_id = '$reff_id' AND (status = 'Pending' OR status = 'pending') LIMIT 1");
        
        if (mysqli_num_rows($check_query) > 0) {
            $trx_data = mysqli_fetch_assoc($check_query);
            $user_identifier = mysqli_real_escape_string($koneksi, $trx_data['id_user']); // Ini username/id si player asli saat transaksi dibuat

            // Mulai Database Transaction biar aman & sinkron
            mysqli_begin_transaction($koneksi);

            try {
                // 5. UPDATE SALDO UTAMA PLAYER
                // Kita gunakan $user_identifier bawaan dari record database transaksi tadi
                $update_saldo = mysqli_query($koneksi, "UPDATE tb_saldo SET active = active + $amount WHERE id_user = '$user_identifier'");
                
                // 6. UPDATE STATUS TRANSAKSI DI HISTORY MENJADI SUCCESS (Gunakan 'Success' sesuai struktur awal)
                $update_trx = mysqli_query($koneksi, "UPDATE tb_transaksi SET status = 'Success', keterangan = 'Pembayaran Otomatis QRIS Sukses' WHERE reff_id = '$reff_id'");
                
                // Jika kedua query sukses tanpa error
                if ($update_saldo && $update_trx) {
                    mysqli_commit($koneksi); // Simpan permanen ke database
                    file_put_contents('log_callback.txt', "[SUCCESS] Saldo berhasil auto masuk untuk user: " . $user_identifier . PHP_EOL, FILE_APPEND);
                } else {
                    mysqli_rollback($koneksi); // Batalkan jika salah satu gagal
                    file_put_contents('log_callback.txt', "[FAILED] Query gagal dijalankan." . PHP_EOL, FILE_APPEND);
                }

            } catch (Exception $e) {
                mysqli_rollback($koneksi);
                file_put_contents('log_callback.txt', "[ERROR] Exception: " . $e->getMessage() . PHP_EOL, FILE_APPEND);
            }
        } else {
            file_put_contents('log_callback.txt', "[INFO] Transaksi tidak ditemukan atau sudah berstatus Success. Reff ID: " . $reff_id . PHP_EOL, FILE_APPEND);
        }
    }
}

// 7. Beri respon balik ke SiTransfer (WAJIB HTTP 200 OK)
http_response_code(200);
header('Content-Type: application/json');
echo json_encode(['status' => 'OK']);
?>
