Update Banyak
This commit is contained in:
+233
-4
@@ -1,4 +1,10 @@
|
||||
<?php
|
||||
|
||||
// ini_set('display_errors', 1);
|
||||
// error_reporting(E_ALL);
|
||||
// header("Content-Type: application/json");
|
||||
|
||||
|
||||
if (isset($_SESSION['user']))
|
||||
{
|
||||
$id = $_SESSION['user'];
|
||||
@@ -26,6 +32,11 @@ elseif (isset($_SESSION['master']))
|
||||
$username = $data[0]['username'];
|
||||
$email = $data[0]['email'];
|
||||
$profile = $data[0]['profile'];
|
||||
$rek_nomor = $data[0]['rekening_nomor'];
|
||||
$rek_nama = $data[0]['rekening_nama'];
|
||||
$rek_bank = $data[0]['rekening_bank'];
|
||||
$rek_status = $data[0]['rekening_status'];
|
||||
$nama_server = $data[0]['nama_server'];
|
||||
}
|
||||
|
||||
//Pembayaran masal jika apk di gabungkan
|
||||
@@ -152,7 +163,7 @@ if(isset($_SESSION['user']) && $_SESSION['user'] == 1) {
|
||||
<td class="p-2">Password</td>
|
||||
<td class="p-2">:</td>
|
||||
<td class="p-2">
|
||||
<div class="input-group mb-4">
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" class="form-control" name="password" placeholder="Password">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
@@ -166,7 +177,7 @@ if(isset($_SESSION['user']) && $_SESSION['user'] == 1) {
|
||||
<td class="p-2">Confirm Password</td>
|
||||
<td class="p-2">:</td>
|
||||
<td class="p-2">
|
||||
<div class="input-group mb-4">
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" class="form-control" name="confirm_password" placeholder="Ulangi Password">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
@@ -180,6 +191,112 @@ if(isset($_SESSION['user']) && $_SESSION['user'] == 1) {
|
||||
</table>
|
||||
<input type="submit" class="btn btn-sm btn-primary m-1" name="simpanPassword" value="Simpan Password">
|
||||
</form>
|
||||
|
||||
<?php if($_SESSION['master']) {
|
||||
$readolny = ($rek_status != 'verificated' && $rek_status != 'onverification') ? '' : 'readonly disabled'; ?>
|
||||
<hr>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<table class="table table-borderless">
|
||||
<center>
|
||||
<label>Rekening Bank
|
||||
<?= ($rek_status == 'onverification')
|
||||
? '<span class="badge badge-warning p-2">On Verification</span>'
|
||||
: (($rek_status == 'verificated')
|
||||
? '<span class="badge badge-success p-2">Verificated</span>'
|
||||
: ''); ?>
|
||||
</label>
|
||||
</center>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="p-2">Bank</td>
|
||||
<td class="p-2">:</td>
|
||||
<td class="p-2">
|
||||
<div class="input-group mb-3">
|
||||
<select class="form-control" id="bank_code" name="bank_code" required <?= $readolny ?>>
|
||||
<option value="">-- PILIH BANK --</option>
|
||||
<option value="bca" <?= ($rek_bank=='bca' ? 'selected' : '') ?>>BCA</option>
|
||||
<option value="bni" <?= ($rek_bank=='bni' ? 'selected' : '') ?>>BNI</option>
|
||||
<option value="bri" <?= ($rek_bank=='bri' ? 'selected' : '') ?>>BRI</option>
|
||||
<option value="mandiri"<?= ($rek_bank=='mandiri' ? 'selected' : '') ?>>Mandiri</option>
|
||||
<option value="bjb" <?= ($rek_bank=='bjb' ? 'selected' : '') ?>>BJB</option>
|
||||
<option value="cimb" <?= ($rek_bank=='cimb' ? 'selected' : '') ?>>CIMB</option>
|
||||
<option value="danamon"<?= ($rek_bank=='danamon' ? 'selected' : '') ?>>Danamon</option>
|
||||
<option value="permata"<?= ($rek_bank=='permata' ? 'selected' : '') ?>>Permata</option>
|
||||
<option value="maybank"<?= ($rek_bank=='maybank' ? 'selected' : '') ?>>Maybank</option>
|
||||
<option value="btn" <?= ($rek_bank=='btn' ? 'selected' : '') ?>>BTN</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="p-2">Nomor Rekening</td>
|
||||
<td class="p-2">:</td>
|
||||
<td class="p-2">
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control" type="text" id="account_number" name="account_number"
|
||||
value="<?= htmlspecialchars($rek_nomor ?? '') ?>" required <?= $readolny ?>>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="p-2">Nama Penerima</td>
|
||||
<td class="p-2">:</td>
|
||||
<td class="p-2">
|
||||
<div class="input-group mb-1">
|
||||
<input class="form-control" type="text" id="account_holder" name="account_holder"
|
||||
value="<?= htmlspecialchars($rek_nama ?? '') ?>" readonly>
|
||||
</div>
|
||||
<span id="testStatusCek"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<?= ($rek_status != 'verificated' && $rek_status != 'onverification')
|
||||
? '<input type="submit" class="btn btn-sm btn-primary m-1" name="simpanrekening" value="Simpan">'
|
||||
: ''; ?>
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
if (isset($_POST['simpanrekening'])) {
|
||||
$SQLrek = "UPDATE data_server
|
||||
SET rekening_bank = :rekening_bank,
|
||||
rekening_nomor = :rekening_nomor,
|
||||
rekening_nama = :rekening_nama,
|
||||
rekening_status = 'onverification'
|
||||
WHERE id = :iddatas";
|
||||
$stmt = $pdo->prepare($SQLrek);
|
||||
|
||||
// pakai bindValue (langsung ambil dari $_POST)
|
||||
$stmt->bindValue(':rekening_bank', $_POST['bank_code']);
|
||||
$stmt->bindValue(':rekening_nomor', $_POST['account_number']);
|
||||
$stmt->bindValue(':rekening_nama', $_POST['account_holder']);
|
||||
$stmt->bindValue(':iddatas', $id, PDO::PARAM_INT);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
$Pesan = "*Permintaan Verifikasi Rekening*
|
||||
|
||||
Server : " . $nama_server . "
|
||||
BANK : " . strtoupper($_POST['bank_code']) . "
|
||||
Rekening : *" . $_POST['account_number'] . "*
|
||||
Nama Rek : " . strtoupper($_POST['account_holder']) . "
|
||||
|
||||
status : _*On Verification*_
|
||||
|
||||
|
||||
_# Manja ~ Notif_
|
||||
";
|
||||
$nomorWA = ['6281298698422', '6285655548738'];
|
||||
$APIwa = new PesanWA();
|
||||
$APIwa->Send_Pesan('1','sendMessage',$nomorWA,$Pesan);
|
||||
|
||||
sweetAlert("BERHASIL.! Rekening telah ditambahkan silahkan tunggu verifikasi", "success");
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -353,7 +470,7 @@ if(isset($_SESSION['user']) && $_SESSION['user'] == 1) {
|
||||
// $stmt->bindParam(':id', $_SESSION['master']);
|
||||
// $stmt->execute();
|
||||
// }
|
||||
$stmt = $pdo->prepare("SELECT * FROM apk_payment WHERE id_data_server = :id ORDER BY waktu_transaksi DESC");
|
||||
$stmt = $pdo->prepare("SELECT * FROM apk_payment WHERE id_data_server = :id AND jenis IS NULL ORDER BY waktu_transaksi DESC");
|
||||
$stmt->bindParam(':id', $idserver);
|
||||
$stmt->execute();
|
||||
// Ambil semua hasil dari query
|
||||
@@ -547,4 +664,116 @@ document.querySelectorAll('.toggle-password').forEach(function(toggle) {
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
let debounceTimer;
|
||||
let loadingInterval;
|
||||
|
||||
const bankAccountLength = {
|
||||
"bca": [10],
|
||||
"bni": [10],
|
||||
"bri": [10, 15],
|
||||
"mandiri": [13],
|
||||
"bjb": [13],
|
||||
"cimb": [10, 13],
|
||||
"danamon": [10],
|
||||
"permata": [10],
|
||||
"maybank": [10],
|
||||
"btn": [10]
|
||||
};
|
||||
|
||||
const CEK_URL = "controller/cekrekeningFlip.php";
|
||||
const API_TOKEN = "xyz123"; // samakan dengan PHP
|
||||
|
||||
// POST dengan header token
|
||||
async function postFormSafe(url, formObj) {
|
||||
const body = new URLSearchParams(formObj).toString();
|
||||
|
||||
const res = await fetch(url, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
"Accept": "application/json",
|
||||
"X-Api-Token": API_TOKEN
|
||||
},
|
||||
body
|
||||
});
|
||||
|
||||
const text = await res.text();
|
||||
try {
|
||||
return JSON.parse(text);
|
||||
} catch (e) {
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-danger"><i>Respon tidak valid dari server</i></p>`;
|
||||
throw new Error("Respon bukan JSON");
|
||||
}
|
||||
}
|
||||
|
||||
// Auto cek rekening
|
||||
document.getElementById("account_number").addEventListener("keyup", function () {
|
||||
const accountHolderField = document.getElementById("account_holder");
|
||||
|
||||
if (accountHolderField.value.trim() !== "") return;
|
||||
|
||||
clearTimeout(debounceTimer);
|
||||
debounceTimer = setTimeout(async () => {
|
||||
let bank_code = (document.getElementById("bank_code").value || "").trim().toLowerCase();
|
||||
let account_number = this.value.trim();
|
||||
|
||||
if (!bank_code || !account_number) return;
|
||||
|
||||
// validasi panjang nomor rekening
|
||||
if (bankAccountLength[bank_code]) {
|
||||
let allowed = bankAccountLength[bank_code];
|
||||
if (!allowed.includes(account_number.length)) {
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-danger"><i>Nomor rekening ${bank_code.toUpperCase()} harus ${allowed.join(" / ")} digit</i></p>`;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// tampilkan status loading dengan animasi titik
|
||||
let dots = 0;
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-info"><i>Sedang pengecekan</i></p>`;
|
||||
loadingInterval = setInterval(() => {
|
||||
dots = (dots + 1) % 4; // 0..3
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-info"><i>Sedang pengecekan${"..".repeat(dots)}</i></p>`;
|
||||
}, 500);
|
||||
|
||||
try {
|
||||
// delay 2 detik biar animasi keliatan
|
||||
await new Promise(resolve => setTimeout(resolve, 2000));
|
||||
|
||||
let data = await postFormSafe(CEK_URL, { bank_code, account_number });
|
||||
|
||||
clearInterval(loadingInterval);
|
||||
|
||||
if (data.status) {
|
||||
if (data.account_holder && data.account_holder.trim() !== "") {
|
||||
accountHolderField.value = data.account_holder;
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-success"><i>✅ Rekening terdaftar</i></p>`;
|
||||
} else {
|
||||
accountHolderField.value = "";
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-danger"><i>❌ Rekening salah atau tidak terdaftar</i></p>`;
|
||||
}
|
||||
} else {
|
||||
accountHolderField.value = "";
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-danger"><i>❌ ${data.message || "Gagal cek rekening"}</i></p>`;
|
||||
}
|
||||
} catch (err) {
|
||||
clearInterval(loadingInterval);
|
||||
document.getElementById("testStatusCek").innerHTML =
|
||||
`<p class="text-danger"><i>🚨 Error: ${err.message}</i></p>`;
|
||||
}
|
||||
}, 800);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user