<?php
// FILE: callback.php (Versi Final: Support SN/Token)
// Deskripsi: Menangani laporan dari OkeConnect, update Status DAN SN ke Firestore

require_once 'firebase_helper.php'; // Pastikan file ini ada

// 1. Ambil data JSON yang dikirim oleh server OkeConnect
$json_data = file_get_contents('php://input');
$data = json_decode($json_data, true);

if ($data) {
    // 2. Ambil parameter penting dari payload
    $refID_pusat = $data['refID'] ?? '';
    $status_pusat = $data['status'] ?? ''; // SUKSES / GAGAL
    $keterangan_pusat = $data['keterangan'] ?? 'Update via Callback';
    
    // --- MODIFIKASI: MENANGKAP SN/TOKEN ---
    // OkeConnect kadang mengirim SN di field 'sn', kadang digabung di 'keterangan'
    $sn_pusat = $data['sn'] ?? ''; 
    
    // Jika field 'sn' kosong, kita gunakan 'keterangan' sebagai backup agar user tetap bisa baca info
    if (empty($sn_pusat)) {
        $sn_pusat = $keterangan_pusat;
    }
    // --------------------------------------

    $action_status = "RefID Not Found";

    // 3. Cari data di koleksi 'riwayat_transaksi'
    $trx = firebase_query_document('riwayat_transaksi', 'refID', $refID_pusat);

    if ($trx) {
        $docId = $trx['docId'];
        
        // Konversi status pusat ke status aplikasi Anda
        $newStatus = ($status_pusat == 'SUKSES') ? 'BERHASIL' : 'GAGAL';

        // 4. Update status, keterangan, DAN SN di Firestore
        $updateData = [
            'status'     => $newStatus,
            'keterangan' => $keterangan_pusat,
            'sn'         => $sn_pusat, // <--- PENTING: Agar token muncul di aplikasi
            'updated_at' => date("Y-m-d H:i:s")
        ];

        // Opsional: Jika ada perubahan harga dari pusat, update juga harga belinya
        if (isset($data['harga'])) {
            $updateData['harga_beli_pusat'] = $data['harga'];
        }

        $updateResult = firebase_update_document('riwayat_transaksi', $docId, $updateData);
        
        if ($updateResult) {
            $action_status = "Firestore Updated ($newStatus) + SN Saved";
        } else {
            $action_status = "Firestore Update Failed (Check Key/ID)";
        }
    }

    // 5. Catat ke log file
    $waktu = date("Y-m-d H:i:s");
    $log_entry = "[$waktu] Trx: $refID_pusat | Status: $status_pusat | Action: $action_status\n";
    $log_entry .= "Payload: " . $json_data . "\n-------------------------\n";
    
    file_put_contents('laporan_transaksi.txt', $log_entry, FILE_APPEND);
    
    // 6. Respon "OK"
    echo "OK";

} else {
    echo "Callback System Ready. Endpoint: https://senpayment.my.id/callback.php";
}
?>