<?php
<?php
require_once('session.php');
include('../classes/class.nexusggr.php');

// 2. Ambil RAW data dari Provider
$rawData = file_get_contents("php://input");
$data = json_decode($rawData, true);

// 3. Keamanan: Validasi Signature (Sangat Penting!)
// Ganti 'YOUR_SECRET_KEY' dengan secret key asli dari dashboard NexusGGR
$secretKey = 'MASUKKAN_SECRET_KEY_ANDA_DISINI';
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? ''; // Biasanya provider kirim via header

if (hash_hmac('sha256', $rawData, $secretKey) !== $signature) {
    http_response_code(403);
    echo json_encode(['status' => 'error', 'message' => 'Invalid Signature']);
    exit();
}

// 4. Validasi Data yang diterima
if (!$data || !isset($data['userID'], $data['bet'], $data['win'], $data['gameID'])) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'Invalid Data Payload']);
    exit();
}

$userID   = (int)$data['userID'];
$bet      = (float)$data['bet'];
$win      = (float)$data['win'];
$gameID   = mysqli_real_escape_string($conn, $data['gameID']);
$provider = mysqli_real_escape_string($conn, $data['provider']);

// 5. Proses Transaksi Database (Atomic Transaction)
mysqli_begin_transaction($conn);

try {
    // A. Update Saldo User
    // Logika: Saldo = Saldo - Bet + Win
    $netBalance = $win - $bet;
    $updateSaldo = mysqli_query($conn, "UPDATE tb_users SET balance = balance + ($netBalance) WHERE id = '$userID'");
    
    if (!$updateSaldo) throw new Exception("Gagal update saldo");

    // B. Simpan ke History Game
    $result = ($win > 0) ? 'Win' : 'Lose';
    $note = "Game: " . $gameID;
    
    $stmt = mysqli_prepare($conn, "INSERT INTO tb_history_game (userID, datetime, note, bet, win, result, provider) VALUES (?, NOW(), ?, ?, ?, ?, ?)");
    mysqli_stmt_bind_param($stmt, "isddss", $userID, $note, $bet, $win, $result, $provider);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_close($stmt);

    // C. Commit transaksi jika semua berhasil
    mysqli_commit($conn);
    
    echo json_encode(['status' => 'success', 'message' => 'Transaksi diproses']);

} catch (Exception $e) {
    // Rollback jika ada error agar saldo tidak kacau
    mysqli_rollback($conn);
    http_response_code(500);
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
?>