<?php
// FILE: apigateway.php
// FUNGSI: Khusus untuk mengeksekusi transaksi dari API H2H ke Server Pusat (Support Bebas Nominal)

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");
error_reporting(0);

// --- 1. KONFIGURASI AKUN ---
$memberID = "OK2829570";      
$password = "wasalamL050";      
$pin      = "0502";          

// --- 2. TERIMA DATA JSON DARI GATEWAY.HTML ---
$input = json_decode(file_get_contents("php://input"), true);
$tujuan = isset($input['tujuan']) ? $input['tujuan'] : '';
$kode_produk = isset($input['kode_produk']) ? $input['kode_produk'] : '';
$refID = isset($input['refID']) ? $input['refID'] : '';
// TAMBAHAN: Tangkap nominal custom (qty) dari gateway.html
$qty = isset($input['qty']) ? $input['qty'] : ''; 

// Validasi Kelengkapan Data
if(empty($tujuan) || empty($kode_produk) || empty($refID)) {
    echo json_encode(['status' => 'GAGAL', 'message' => 'Data dari H2H tidak lengkap (Tujuan, Kode, atau RefID kosong)']);
    exit;
}

// --- 3. SUSUN URL TEMBAK KE SERVER PUSAT ---
// Di sini kita MEMAKAI $refID bawaan dari partner H2H, BUKAN merandom sendiri
$url = "https://h2h.okeconnect.com/trx?product=" . urlencode($kode_produk) . 
       "&dest=" . urlencode($tujuan) . 
       "&refID=" . $refID . 
       "&memberID=" . $memberID . 
       "&pin=" . $pin . 
       "&password=" . $password;

// TAMBAHAN: Jika transaksi Bebas Nominal (ada qty), masukkan ke URL
if (!empty($qty)) {
    $url .= "&qty=" . urlencode($qty);
}

// --- 4. EKSEKUSI CURL KE SERVER PUSAT ---
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$response_text = curl_exec($ch);
curl_close($ch);

// PERBAIKAN WHITE-LABEL: Sembunyikan nama OkeConnect
if (empty($response_text)) {
    $response_text = "Gagal: Tidak ada respon dari Server Pusat.";
}

// --- 5. LOGGING (Biar gampang pantau error H2H) ---
$waktu = date("Y-m-d H:i:s");
$log_msg = "[$waktu] H2H Req: $kode_produk|$tujuan|$refID|Qty:$qty -> Respon: $response_text\n";
@file_put_contents('debug_apigateway.txt', $log_msg, FILE_APPEND);

// --- 6. LOGIKA STATUS AWAL ---
$status = "PENDING"; 
$pesan = $response_text; 

if (stripos($response_text, 'GAGAL') !== false || stripos($response_text, 'Salah') !== false) {
    $status = "GAGAL";
} 
elseif (stripos($response_text, 'SUKSES') !== false || stripos($response_text, 'SN:') !== false || stripos($response_text, 'SN :') !== false) {
    $status = "BERHASIL"; 
}

// --- 7. KEMBALIKAN OUTPUT KE GATEWAY.HTML ---
echo json_encode([
    'status' => $status,
    'message' => $pesan,
    'refID' => $refID,
    'raw_response' => $response_text
]);
?>