Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php system('clear'); // URL endpoint API enkripsi dan dekripsi $encryption_url = 'h..

Decoded Output download

<?php 
system('clear'); 
 
// URL endpoint API enkripsi dan dekripsi 
$encryption_url = 'https://apigw.kmsp-store.com/xlcrot/api/v1/encdec-xdata'; 
$decryption_url = 'https://apigw.kmsp-store.com/xlcrot/api/v1/encdec-xdata'; 
$proxy = '152.42.224.63:6969'; 
// Header yang diperlukan untuk permintaan enkripsi dan dekripsi 
$encryption_headers = [ 
    'X-API-Key: 206a885d-3d1e-4d4c-ba8c-6b2fb60aa47e', 
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0', 
    'Content-Type: application/json; charset=utf-8', 
    'Host: apigw.kmsp-store.com', 
    'Connection: Keep-Alive' 
]; 
 
$decryption_headers = $encryption_headers; 
 
// Fungsi untuk memuat konfigurasi dari file JSON 
function loadConfiguration($configFile) { 
    if (file_exists($configFile)) { 
        $response = json_decode(file_get_contents($configFile), true); 
        if (!isset($response['id_token'])) { 
            echo "Token tidak ditemukan dalam file konfigurasi.
"; 
            exit; 
        } 
        return $response['id_token']; 
    } else { 
        echo "File konfigurasi tidak ditemukan.
"; 
        exit; 
    } 
} 
 
// Load token dari konfigurasi 
$token = loadConfiguration('response.json'); 
 
// Data untuk permintaan detail kuota 
$data_to_encrypt = [ 
    'action' => 'ENCRYPT', 
    'request_body' => [ 
        'lang' => 'en', 
        'is_enterprise' => false 
    ] 
]; 
 
// Inisialisasi Curl untuk permintaan enkripsi data kuota 
$ch_encrypt = curl_init(); 
curl_setopt_array($ch_encrypt, [ 
    CURLOPT_URL => $encryption_url, 
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => json_encode($data_to_encrypt), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPHEADER => $encryption_headers, 
    CURLOPT_PROXY => $proxy, 
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP, 
    CURLOPT_TIMEOUT => 30, 
]); 
 
// Eksekusi permintaan enkripsi data kuota 
$response_encrypt = curl_exec($ch_encrypt); 
if ($response_encrypt === false) { 
    echo "Error saat melakukan permintaan enkripsi: " . curl_error($ch_encrypt); 
    curl_close($ch_encrypt); 
    exit; 
} 
curl_close($ch_encrypt); 
 
// Dekode respons JSON dari permintaan enkripsi data kuota 
$response_encrypt = json_decode($response_encrypt, true); 
 
// Pastikan respons enkripsi berhasil dan ambil data terenkripsi 
if (!isset($response_encrypt['data']['xdata']) || !isset($response_encrypt['data']['xtime'])) { 
    echo "Error: Data enkripsi tidak ditemukan dalam respons atau kosong.
"; 
    exit; 
} 
$xdata = $response_encrypt['data']['xdata']; 
$xtime = $response_encrypt['data']['xtime']; 
 
// URL endpoint API untuk mendapatkan detail kuota 
$api_url = 'https://api.myxl.xlaxiata.co.id/api/v1/packages/quota-details'; 
 
// Header untuk permintaan ke API utama 
$headers = [ 
    'authorization: Bearer ' . $token, 
    'User-Agent: myXL / 6.0.0(754); StandAloneInstall; (Xiaomi; Redmi Note 8; SDK 33; Android 13)', 
    'Accept-Encoding: gzip', 
    'Content-Type: application/json', 
    'x-request-id: ' . uniqid(), 
    'x-request-at: ' . date('c'), 
    'x-version-app: 6.0.0' 
]; 
 
// Payload yang akan dikirim ke API utama 
$encrypted_data = [ 
    'xdata' => $xdata, 
    'xtime' => $xtime 
]; 
 
// Inisialisasi cURL untuk permintaan ke API utama 
$ch = curl_init(); 
curl_setopt_array($ch, [ 
    CURLOPT_URL => $api_url, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => '', // Enable compression 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => 'POST', 
    CURLOPT_POSTFIELDS => json_encode($encrypted_data), // Menggunakan data terenkripsi sebagai payload 
    CURLOPT_HTTPHEADER => $headers, 
]); 
 
// Eksekusi permintaan ke API utama 
$response = curl_exec($ch); 
if (curl_errno($ch)) { 
    echo 'Error:' . curl_error($ch) . "
"; 
    curl_close($ch); 
    exit; 
} 
curl_close($ch); 
 
// Dekode respons dari API utama 
$response_data = json_decode($response, true); 
 
// Pastikan respons API berhasil dan ambil data terenkripsi 
if (!isset($response_data['xdata']) || !isset($response_data['xtime'])) { 
    echo "Error: 'xdata' atau 'xtime' tidak ditemukan dalam respons.
"; 
    exit; 
} 
$xdata = $response_data['xdata']; 
$xtime = $response_data['xtime']; 
 
// Mempersiapkan payload untuk permintaan dekripsi hasil kuota 
$payload_decrypt = [ 
    'action' => 'DECRYPT', 
    'xdata' => $xdata, 
    'xtime' => $xtime 
]; 
 
// Inisialisasi Curl untuk permintaan dekripsi hasil kuota 
$ch_decrypt = curl_init(); 
curl_setopt_array($ch_decrypt, [ 
    CURLOPT_URL => $decryption_url, 
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => json_encode($payload_decrypt), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPHEADER => $decryption_headers, 
    CURLOPT_PROXY => $proxy, 
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP, 
    CURLOPT_TIMEOUT => 30, 
]); 
 
// Eksekusi permintaan dekripsi hasil kuota 
$response_decrypt = curl_exec($ch_decrypt); 
if ($response_decrypt === false) { 
    echo "Error saat melakukan permintaan dekripsi: " . curl_error($ch_decrypt); 
    curl_close($ch_decrypt); 
    exit; 
} 
curl_close($ch_decrypt); 
 
// Dekode respons JSON dari permintaan dekripsi hasil kuota 
$response_decrypt = json_decode($response_decrypt, true); 
 
// Tampilkan kuota yang tersedia dan pilih kuota untuk berhenti berlangganan 
if (isset($response_decrypt['data']['decrypted_content']['data']['quotas'])) { 
    $quotas = $response_decrypt['data']['decrypted_content']['data']['quotas']; 
    $counter = 1; 
 
    // Define color codes 
    $green = "\e[32m"; 
    $white = "\e[97m"; 
    $reset = "\e[0m"; 
 
    foreach ($quotas as $quota) { 
        // Convert UNIX timestamp to date format 
        $activeDate = date('Y-m-d', $quota['active_date']); 
        $endDate = date('Y-m-d', $quota['end_date']); 
 
        echo "{$white}$counter. Name: {$green}" . $quota['name'] . "{$reset}
"; 
        echo "   Product Domain: {$green}" . $quota['product_domain'] . "{$reset}
"; 
        echo "   Subscription Type: {$green}" . $quota['product_subscription_type'] . "{$reset}
"; 
        echo "   Group Name: {$green}" . $quota['group_name'] . "{$reset}
"; 
        echo "   Promo Code: {$green}" . $quota['promo_code'] . "{$reset}
"; 
        echo "   Active Date: {$green}" . $activeDate . "{$reset}
"; 
        echo "   End Date: {$green}" . $endDate . "{$reset}
"; 
        echo "   Quota Code: {$green}" . $quota['quota_code'] . "{$reset}
"; 
        echo "================================
"; 
        $counter++; 
    } 
 
    // Prompt to select quota 
    echo "{$white}Masukkan No Kuota: {$reset}"; 
    $index = trim(fgets(STDIN)); 
 
    // Validate input 
    if (is_numeric($index) && $index > 0 && $index <= count($quotas)) { 
        $selectedQuota = $quotas[$index - 1]; 
        echo "{$white}Nama: {$green}" . $selectedQuota['name'] . "{$reset}
"; 
        echo "{$white}Apakah Anda yakin ingin memberhentikan paket?{$reset} (y/n): "; 
        $confirm = strtolower(trim(fgets(STDIN))); 
        if ($confirm == "y") { 
            // Data untuk berhenti langganan 
            $unsubscribe_data = [ 
                'action' => 'ENCRYPT', 
                'request_body' => [ 
                    "lang" => "en", 
                    "is_enterprise" => false, 
                    "product_domain" => "VOLUME", 
                    "product_subscription_type" => "REC", 
                    "quota_code" => $selectedQuota['quota_code'], 
                    "unsubscribe_reason_code" => "" 
                ] 
            ]; 
 
            // Inisialisasi Curl untuk permintaan enkripsi data berhenti langganan 
            $ch_encrypt_unsubscribe = curl_init(); 
            curl_setopt_array($ch_encrypt_unsubscribe, [ 
                CURLOPT_URL => $encryption_url, 
                CURLOPT_POST => true, 
                CURLOPT_POSTFIELDS => json_encode($unsubscribe_data), 
                CURLOPT_RETURNTRANSFER => true, 
                CURLOPT_HTTPHEADER => $encryption_headers, 
                CURLOPT_PROXY => $proxy, 
                CURLOPT_PROXYTYPE => CURLPROXY_HTTP, 
                CURLOPT_TIMEOUT => 30, 
     
     
                 
            ]); 
 
            // Eksekusi permintaan 
// Eksekusi permintaan enkripsi data berhenti langganan 
            $response_encrypt_unsubscribe = curl_exec($ch_encrypt_unsubscribe); 
            if ($response_encrypt_unsubscribe === false) { 
                echo "Error saat melakukan permintaan enkripsi: " . curl_error($ch_encrypt_unsubscribe); 
                curl_close($ch_encrypt_unsubscribe); 
                exit; 
            } 
            curl_close($ch_encrypt_unsubscribe); 
 
            // Dekode respons JSON dari permintaan enkripsi data berhenti langganan 
            $response_encrypt_unsubscribe = json_decode($response_encrypt_unsubscribe, true); 
 
            // Pastikan respons enkripsi berhasil dan ambil data terenkripsi 
            if (!isset($response_encrypt_unsubscribe['data']['xdata']) || !isset($response_encrypt_unsubscribe['data']['xtime'])) { 
                echo "Error: Data enkripsi tidak ditemukan dalam respons atau kosong.
"; 
                exit; 
            } 
            $unsubscribe_xdata = $response_encrypt_unsubscribe['data']['xdata']; 
            $unsubscribe_xtime = $response_encrypt_unsubscribe['data']['xtime']; 
 
            // URL endpoint API untuk berhenti langganan 
            $unsubscribe_url = 'https://api.myxl.xlaxiata.co.id/api/v1/packages/unsubscribe'; 
 
            // Payload yang akan dikirim untuk berhenti langganan 
            $unsubscribe_encrypted_data = [ 
                'xdata' => $unsubscribe_xdata, 
                'xtime' => $unsubscribe_xtime 
            ]; 
 
            // Inisialisasi Curl untuk permintaan berhenti langganan 
            $ch_unsubscribe = curl_init(); 
            curl_setopt_array($ch_unsubscribe, [ 
                CURLOPT_URL => $unsubscribe_url, 
                CURLOPT_RETURNTRANSFER => true, 
                CURLOPT_ENCODING => '', // Enable compression 
                CURLOPT_MAXREDIRS => 10, 
                CURLOPT_TIMEOUT => 30, 
                CURLOPT_FOLLOWLOCATION => true, 
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
                CURLOPT_CUSTOMREQUEST => 'POST', 
                CURLOPT_POSTFIELDS => json_encode($unsubscribe_encrypted_data), // Menggunakan data terenkripsi sebagai payload 
                CURLOPT_HTTPHEADER => $headers, 
            ]); 
 
            // Eksekusi permintaan berhenti langganan 
            $unsubscribe_response = curl_exec($ch_unsubscribe); 
            if (curl_errno($ch_unsubscribe)) { 
                echo 'Error:' . curl_error($ch_unsubscribe) . "
"; 
                curl_close($ch_unsubscribe); 
                exit; 
            } 
            curl_close($ch_unsubscribe); 
 
            // Dekode respons dari API berhenti langganan 
            $unsubscribe_response_data = json_decode($unsubscribe_response, true); 
 
            // Mempersiapkan payload untuk permintaan dekripsi hasil berhenti langganan 
            $payload_decrypt_unsubscribe = [ 
                'action' => 'DECRYPT', 
                'xdata' => $unsubscribe_response_data['xdata'], 
                'xtime' => $unsubscribe_response_data['xtime'] 
            ]; 
 
            // Inisialisasi Curl untuk permintaan dekripsi hasil berhenti langganan 
            $ch_decrypt_unsubscribe = curl_init(); 
            curl_setopt_array($ch_decrypt_unsubscribe, [ 
                CURLOPT_URL => $decryption_url, 
                CURLOPT_POST => true, 
                CURLOPT_POSTFIELDS => json_encode($payload_decrypt_unsubscribe), 
                CURLOPT_RETURNTRANSFER => true, 
                CURLOPT_HTTPHEADER => $decryption_headers, 
                CURLOPT_PROXY => $proxy, 
                CURLOPT_PROXYTYPE => CURLPROXY_HTTP, 
                CURLOPT_TIMEOUT => 30, 
            ]); 
 
            // Eksekusi permintaan dekripsi hasil berhenti langganan 
            $response_decrypt_unsubscribe = curl_exec($ch_decrypt_unsubscribe); 
            if ($response_decrypt_unsubscribe === false) { 
                echo "Error saat melakukan permintaan dekripsi: " . curl_error($ch_decrypt_unsubscribe); 
                curl_close($ch_decrypt_unsubscribe); 
                exit; 
            } 
            curl_close($ch_decrypt_unsubscribe); 
 
            // Dekode respons JSON dari permintaan dekripsi hasil berhenti langganan 
            $response_decrypt_unsubscribe = json_decode($response_decrypt_unsubscribe, true); 
 
            // Tampilkan hasil dekripsi dari respons berhenti langganan 
            if (isset($response_decrypt_unsubscribe['data']['decrypted_content'])) { 
                echo "Berhenti langganan berhasil:
"; 
                print_r($response_decrypt_unsubscribe['data']['decrypted_content']); 
            } else { 
                echo "Error: Dekripsi respons berhenti langganan gagal.
"; 
            } 
 
        } else { 
            echo "{$white}Proses dibatalkan.{$reset}
"; 
        } 
    } else { 
        echo "{$white}Tolong Masukkan Nomor Sesuai Output.{$reset}
"; 
    } 
} else { 
    echo "Tidak Ada Data Untuk Ditampilkan. Silahkan Login Dahulu.
"; 
} 
 
 
// Fungsi untuk menulis saldo ke file JSON 
function tulisSaldo($saldo) { 
    $file = '/var/www/html/saldo.json'; 
    $saldo_data = array('saldo' => $saldo); 
 
    // Gunakan JSON_PRETTY_PRINT agar data lebih mudah dibaca (opsional) 
    $json_string = json_encode($saldo_data, JSON_PRETTY_PRINT); 
 
    // Simpan saldo ke file 
    if (file_put_contents($file, $json_string) !== false) { 
        echo "Saldo berhasil disimpan.
"; 
    } else { 
        echo "Gagal menyimpan saldo ke file.
"; 
    } 
} 
 
// Memuat fungsi bacaSaldo dari file saldo.php 
require_once 'saldo.php'; 
 
// Baca saldo awal menggunakan fungsi bacaSaldo 
$saldo_awal = bacaSaldo(); 
if ($saldo_awal === false) { 
    echo "Gagal membaca saldo awal.
"; 
    exit; 
} 
 
echo "Saldo awal: $saldo_awal
"; 
 
// Tentukan angka pengurangan saldo secara dinamis 
$angka_pengurangan = 7000; // Misalnya, angka pengurangan saldo sebesar 7000 
 
// Contoh respons dari operasi sebelumnya (disesuaikan dengan logika aplikasi Anda) 
$res_dor = [ 
    'code' => '000', 
    'status' => 'SUCCESS' 
]; 
 
// Kurangi saldo hanya jika respons sukses dan pengguna telah memilih 
if ($res_dor['code'] === "000" && $res_dor['status'] === "SUCCESS") { 
    // Tampilkan informasi pengurangan saldo 
    echo "Anda akan mengurangi saldo sebesar $angka_pengurangan. Lanjutkan? (y/n): "; 
    $input = trim(fgets(STDIN)); // Mendapatkan masukan dari pengguna 
 
    if (strtolower($input) === 'y') { 
        // Kurangi saldo berdasarkan angka pengurangan 
        $saldo_baru = $saldo_awal - $angka_pengurangan; 
 
        // Simpan saldo baru ke file JSON menggunakan fungsi tulisSaldo 
        tulisSaldo($saldo_baru); 
        echo "Saldo baru setelah pengurangan: $saldo_baru
"; 
    } else { 
        echo "Pengurangan saldo dibatalkan.
"; 
    } 
} else { 
    echo "Pengurangan saldo tidak dilakukan karena respons tidak sukses.
"; 
} 
 ?>

Did this file decode correctly?

Original Code

<?php
system('clear');

// URL endpoint API enkripsi dan dekripsi
$encryption_url = 'https://apigw.kmsp-store.com/xlcrot/api/v1/encdec-xdata';
$decryption_url = 'https://apigw.kmsp-store.com/xlcrot/api/v1/encdec-xdata';
$proxy = '152.42.224.63:6969';
// Header yang diperlukan untuk permintaan enkripsi dan dekripsi
$encryption_headers = [
    'X-API-Key: 206a885d-3d1e-4d4c-ba8c-6b2fb60aa47e',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0',
    'Content-Type: application/json; charset=utf-8',
    'Host: apigw.kmsp-store.com',
    'Connection: Keep-Alive'
];

$decryption_headers = $encryption_headers;

// Fungsi untuk memuat konfigurasi dari file JSON
function loadConfiguration($configFile) {
    if (file_exists($configFile)) {
        $response = json_decode(file_get_contents($configFile), true);
        if (!isset($response['id_token'])) {
            echo "Token tidak ditemukan dalam file konfigurasi.\n";
            exit;
        }
        return $response['id_token'];
    } else {
        echo "File konfigurasi tidak ditemukan.\n";
        exit;
    }
}

// Load token dari konfigurasi
$token = loadConfiguration('response.json');

// Data untuk permintaan detail kuota
$data_to_encrypt = [
    'action' => 'ENCRYPT',
    'request_body' => [
        'lang' => 'en',
        'is_enterprise' => false
    ]
];

// Inisialisasi Curl untuk permintaan enkripsi data kuota
$ch_encrypt = curl_init();
curl_setopt_array($ch_encrypt, [
    CURLOPT_URL => $encryption_url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($data_to_encrypt),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $encryption_headers,
    CURLOPT_PROXY => $proxy,
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_TIMEOUT => 30,
]);

// Eksekusi permintaan enkripsi data kuota
$response_encrypt = curl_exec($ch_encrypt);
if ($response_encrypt === false) {
    echo "Error saat melakukan permintaan enkripsi: " . curl_error($ch_encrypt);
    curl_close($ch_encrypt);
    exit;
}
curl_close($ch_encrypt);

// Dekode respons JSON dari permintaan enkripsi data kuota
$response_encrypt = json_decode($response_encrypt, true);

// Pastikan respons enkripsi berhasil dan ambil data terenkripsi
if (!isset($response_encrypt['data']['xdata']) || !isset($response_encrypt['data']['xtime'])) {
    echo "Error: Data enkripsi tidak ditemukan dalam respons atau kosong.\n";
    exit;
}
$xdata = $response_encrypt['data']['xdata'];
$xtime = $response_encrypt['data']['xtime'];

// URL endpoint API untuk mendapatkan detail kuota
$api_url = 'https://api.myxl.xlaxiata.co.id/api/v1/packages/quota-details';

// Header untuk permintaan ke API utama
$headers = [
    'authorization: Bearer ' . $token,
    'User-Agent: myXL / 6.0.0(754); StandAloneInstall; (Xiaomi; Redmi Note 8; SDK 33; Android 13)',
    'Accept-Encoding: gzip',
    'Content-Type: application/json',
    'x-request-id: ' . uniqid(),
    'x-request-at: ' . date('c'),
    'x-version-app: 6.0.0'
];

// Payload yang akan dikirim ke API utama
$encrypted_data = [
    'xdata' => $xdata,
    'xtime' => $xtime
];

// Inisialisasi cURL untuk permintaan ke API utama
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $api_url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '', // Enable compression
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => json_encode($encrypted_data), // Menggunakan data terenkripsi sebagai payload
    CURLOPT_HTTPHEADER => $headers,
]);

// Eksekusi permintaan ke API utama
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch) . "\n";
    curl_close($ch);
    exit;
}
curl_close($ch);

// Dekode respons dari API utama
$response_data = json_decode($response, true);

// Pastikan respons API berhasil dan ambil data terenkripsi
if (!isset($response_data['xdata']) || !isset($response_data['xtime'])) {
    echo "Error: 'xdata' atau 'xtime' tidak ditemukan dalam respons.\n";
    exit;
}
$xdata = $response_data['xdata'];
$xtime = $response_data['xtime'];

// Mempersiapkan payload untuk permintaan dekripsi hasil kuota
$payload_decrypt = [
    'action' => 'DECRYPT',
    'xdata' => $xdata,
    'xtime' => $xtime
];

// Inisialisasi Curl untuk permintaan dekripsi hasil kuota
$ch_decrypt = curl_init();
curl_setopt_array($ch_decrypt, [
    CURLOPT_URL => $decryption_url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload_decrypt),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $decryption_headers,
    CURLOPT_PROXY => $proxy,
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_TIMEOUT => 30,
]);

// Eksekusi permintaan dekripsi hasil kuota
$response_decrypt = curl_exec($ch_decrypt);
if ($response_decrypt === false) {
    echo "Error saat melakukan permintaan dekripsi: " . curl_error($ch_decrypt);
    curl_close($ch_decrypt);
    exit;
}
curl_close($ch_decrypt);

// Dekode respons JSON dari permintaan dekripsi hasil kuota
$response_decrypt = json_decode($response_decrypt, true);

// Tampilkan kuota yang tersedia dan pilih kuota untuk berhenti berlangganan
if (isset($response_decrypt['data']['decrypted_content']['data']['quotas'])) {
    $quotas = $response_decrypt['data']['decrypted_content']['data']['quotas'];
    $counter = 1;

    // Define color codes
    $green = "\e[32m";
    $white = "\e[97m";
    $reset = "\e[0m";

    foreach ($quotas as $quota) {
        // Convert UNIX timestamp to date format
        $activeDate = date('Y-m-d', $quota['active_date']);
        $endDate = date('Y-m-d', $quota['end_date']);

        echo "{$white}$counter. Name: {$green}" . $quota['name'] . "{$reset}\n";
        echo "   Product Domain: {$green}" . $quota['product_domain'] . "{$reset}\n";
        echo "   Subscription Type: {$green}" . $quota['product_subscription_type'] . "{$reset}\n";
        echo "   Group Name: {$green}" . $quota['group_name'] . "{$reset}\n";
        echo "   Promo Code: {$green}" . $quota['promo_code'] . "{$reset}\n";
        echo "   Active Date: {$green}" . $activeDate . "{$reset}\n";
        echo "   End Date: {$green}" . $endDate . "{$reset}\n";
        echo "   Quota Code: {$green}" . $quota['quota_code'] . "{$reset}\n";
        echo "================================\n";
        $counter++;
    }

    // Prompt to select quota
    echo "{$white}Masukkan No Kuota: {$reset}";
    $index = trim(fgets(STDIN));

    // Validate input
    if (is_numeric($index) && $index > 0 && $index <= count($quotas)) {
        $selectedQuota = $quotas[$index - 1];
        echo "{$white}Nama: {$green}" . $selectedQuota['name'] . "{$reset}\n";
        echo "{$white}Apakah Anda yakin ingin memberhentikan paket?{$reset} (y/n): ";
        $confirm = strtolower(trim(fgets(STDIN)));
        if ($confirm == "y") {
            // Data untuk berhenti langganan
            $unsubscribe_data = [
                'action' => 'ENCRYPT',
                'request_body' => [
                    "lang" => "en",
                    "is_enterprise" => false,
                    "product_domain" => "VOLUME",
                    "product_subscription_type" => "REC",
                    "quota_code" => $selectedQuota['quota_code'],
                    "unsubscribe_reason_code" => ""
                ]
            ];

            // Inisialisasi Curl untuk permintaan enkripsi data berhenti langganan
            $ch_encrypt_unsubscribe = curl_init();
            curl_setopt_array($ch_encrypt_unsubscribe, [
                CURLOPT_URL => $encryption_url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($unsubscribe_data),
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_HTTPHEADER => $encryption_headers,
                CURLOPT_PROXY => $proxy,
                CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
                CURLOPT_TIMEOUT => 30,
    
    
                
            ]);

            // Eksekusi permintaan
// Eksekusi permintaan enkripsi data berhenti langganan
            $response_encrypt_unsubscribe = curl_exec($ch_encrypt_unsubscribe);
            if ($response_encrypt_unsubscribe === false) {
                echo "Error saat melakukan permintaan enkripsi: " . curl_error($ch_encrypt_unsubscribe);
                curl_close($ch_encrypt_unsubscribe);
                exit;
            }
            curl_close($ch_encrypt_unsubscribe);

            // Dekode respons JSON dari permintaan enkripsi data berhenti langganan
            $response_encrypt_unsubscribe = json_decode($response_encrypt_unsubscribe, true);

            // Pastikan respons enkripsi berhasil dan ambil data terenkripsi
            if (!isset($response_encrypt_unsubscribe['data']['xdata']) || !isset($response_encrypt_unsubscribe['data']['xtime'])) {
                echo "Error: Data enkripsi tidak ditemukan dalam respons atau kosong.\n";
                exit;
            }
            $unsubscribe_xdata = $response_encrypt_unsubscribe['data']['xdata'];
            $unsubscribe_xtime = $response_encrypt_unsubscribe['data']['xtime'];

            // URL endpoint API untuk berhenti langganan
            $unsubscribe_url = 'https://api.myxl.xlaxiata.co.id/api/v1/packages/unsubscribe';

            // Payload yang akan dikirim untuk berhenti langganan
            $unsubscribe_encrypted_data = [
                'xdata' => $unsubscribe_xdata,
                'xtime' => $unsubscribe_xtime
            ];

            // Inisialisasi Curl untuk permintaan berhenti langganan
            $ch_unsubscribe = curl_init();
            curl_setopt_array($ch_unsubscribe, [
                CURLOPT_URL => $unsubscribe_url,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '', // Enable compression
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => json_encode($unsubscribe_encrypted_data), // Menggunakan data terenkripsi sebagai payload
                CURLOPT_HTTPHEADER => $headers,
            ]);

            // Eksekusi permintaan berhenti langganan
            $unsubscribe_response = curl_exec($ch_unsubscribe);
            if (curl_errno($ch_unsubscribe)) {
                echo 'Error:' . curl_error($ch_unsubscribe) . "\n";
                curl_close($ch_unsubscribe);
                exit;
            }
            curl_close($ch_unsubscribe);

            // Dekode respons dari API berhenti langganan
            $unsubscribe_response_data = json_decode($unsubscribe_response, true);

            // Mempersiapkan payload untuk permintaan dekripsi hasil berhenti langganan
            $payload_decrypt_unsubscribe = [
                'action' => 'DECRYPT',
                'xdata' => $unsubscribe_response_data['xdata'],
                'xtime' => $unsubscribe_response_data['xtime']
            ];

            // Inisialisasi Curl untuk permintaan dekripsi hasil berhenti langganan
            $ch_decrypt_unsubscribe = curl_init();
            curl_setopt_array($ch_decrypt_unsubscribe, [
                CURLOPT_URL => $decryption_url,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => json_encode($payload_decrypt_unsubscribe),
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_HTTPHEADER => $decryption_headers,
                CURLOPT_PROXY => $proxy,
                CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
                CURLOPT_TIMEOUT => 30,
            ]);

            // Eksekusi permintaan dekripsi hasil berhenti langganan
            $response_decrypt_unsubscribe = curl_exec($ch_decrypt_unsubscribe);
            if ($response_decrypt_unsubscribe === false) {
                echo "Error saat melakukan permintaan dekripsi: " . curl_error($ch_decrypt_unsubscribe);
                curl_close($ch_decrypt_unsubscribe);
                exit;
            }
            curl_close($ch_decrypt_unsubscribe);

            // Dekode respons JSON dari permintaan dekripsi hasil berhenti langganan
            $response_decrypt_unsubscribe = json_decode($response_decrypt_unsubscribe, true);

            // Tampilkan hasil dekripsi dari respons berhenti langganan
            if (isset($response_decrypt_unsubscribe['data']['decrypted_content'])) {
                echo "Berhenti langganan berhasil:\n";
                print_r($response_decrypt_unsubscribe['data']['decrypted_content']);
            } else {
                echo "Error: Dekripsi respons berhenti langganan gagal.\n";
            }

        } else {
            echo "{$white}Proses dibatalkan.{$reset}\n";
        }
    } else {
        echo "{$white}Tolong Masukkan Nomor Sesuai Output.{$reset}\n";
    }
} else {
    echo "Tidak Ada Data Untuk Ditampilkan. Silahkan Login Dahulu.\n";
}


// Fungsi untuk menulis saldo ke file JSON
function tulisSaldo($saldo) {
    $file = '/var/www/html/saldo.json';
    $saldo_data = array('saldo' => $saldo);

    // Gunakan JSON_PRETTY_PRINT agar data lebih mudah dibaca (opsional)
    $json_string = json_encode($saldo_data, JSON_PRETTY_PRINT);

    // Simpan saldo ke file
    if (file_put_contents($file, $json_string) !== false) {
        echo "Saldo berhasil disimpan.\n";
    } else {
        echo "Gagal menyimpan saldo ke file.\n";
    }
}

// Memuat fungsi bacaSaldo dari file saldo.php
require_once 'saldo.php';

// Baca saldo awal menggunakan fungsi bacaSaldo
$saldo_awal = bacaSaldo();
if ($saldo_awal === false) {
    echo "Gagal membaca saldo awal.\n";
    exit;
}

echo "Saldo awal: $saldo_awal\n";

// Tentukan angka pengurangan saldo secara dinamis
$angka_pengurangan = 7000; // Misalnya, angka pengurangan saldo sebesar 7000

// Contoh respons dari operasi sebelumnya (disesuaikan dengan logika aplikasi Anda)
$res_dor = [
    'code' => '000',
    'status' => 'SUCCESS'
];

// Kurangi saldo hanya jika respons sukses dan pengguna telah memilih
if ($res_dor['code'] === "000" && $res_dor['status'] === "SUCCESS") {
    // Tampilkan informasi pengurangan saldo
    echo "Anda akan mengurangi saldo sebesar $angka_pengurangan. Lanjutkan? (y/n): ";
    $input = trim(fgets(STDIN)); // Mendapatkan masukan dari pengguna

    if (strtolower($input) === 'y') {
        // Kurangi saldo berdasarkan angka pengurangan
        $saldo_baru = $saldo_awal - $angka_pengurangan;

        // Simpan saldo baru ke file JSON menggunakan fungsi tulisSaldo
        tulisSaldo($saldo_baru);
        echo "Saldo baru setelah pengurangan: $saldo_baru\n";
    } else {
        echo "Pengurangan saldo dibatalkan.\n";
    }
} else {
    echo "Pengurangan saldo tidak dilakukan karena respons tidak sukses.\n";
}

Function Calls

None

Variables

None

Stats

MD5 d93c5cc2e1a1bf9b12ba8526f6c5eba4
Eval Count 0
Decode Time 66 ms