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 |
Stats
MD5 | d93c5cc2e1a1bf9b12ba8526f6c5eba4 |
Eval Count | 0 |
Decode Time | 66 ms |