Files
2025-09-21 21:40:17 +07:00

356 lines
18 KiB
PHP

<?php
$data = ['unique_code' => $order_id];
$response = statusTransaction($data);
$dataRespon = json_decode($response);
$waktu_tentukan = $dataRespon->data->expired;
$waktu_sekarang = date('Y-m-d H:i:s');
if (strtotime($waktu_tentukan) < strtotime($waktu_sekarang)) {
$data = ['unique_code' => $order_id];
deleteTransaction($data);
}
// Query untuk mengambil data dari tabel apk_payment dan data_server
$stmt = $pdo->prepare("SELECT apk_payment.id,apk_payment.status,apk_payment.update_time,apk_payment.waktu_transaksi,apk_payment.expaired_time,apk_payment.nominal,apk_payment.data_get,apk_payment.keterangan, data_server.nama_pemilik, data_server.nama_server, data_server.username, data_server.nomor_whatsapp
FROM apk_payment
LEFT JOIN data_server ON apk_payment.id_data_server = data_server.id
WHERE apk_payment.order_id = :order_id");
$stmt->bindParam(':order_id', $order_id);
$stmt->execute();
// Ambil satu baris data hasil query
$result = $stmt->fetch();
// Ambil data dari hasil query
$amount = $result['nominal'];
$name = $result['keterangan'];
$first_name = $result['nama_pemilik'];
$last_name = '('.$result['nama_server'].')';
$email = $result['username'].'@mail.com'; // Mengganti $mail.com dengan @mail.com
$phone = $result['nomor_whatsapp'];
session_start();
function generateOrderId($pdo) {
do {
$order_id = sprintf('%013d', mt_rand(0, 9999999999999)); // Generate 13 digit number
$stmt = $pdo->prepare("SELECT COUNT(*) FROM apk_payment WHERE order_id = :order_id");
$stmt->bindParam(':order_id', $order_id);
$stmt->execute();
$exists = $stmt->fetchColumn();
} while ($exists > 0);
return $order_id;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>BilsPro</title>
<link rel="icon" href="../../dist/img/logo-sm.png" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
<style>
input[type="radio"]:checked + label img {
border: 2px solid rgba(200, 200, 200);
border-radius: 5px;
padding: 5px;
}
body {
background-image: url('../../dist/img/bg-payment.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<br>
<br>
<div class="container" style="max-width: 900px;">
<center>
<img src="../../dist/img/logo_clr.png" width="230px" class="mb-4">
</center>
<div class="card">
<div class="card-header bg-warning">
<h5>Detail Pembayaran</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table class="table table-borderless">
<tbody>
<tr>
<td>Nama Usaha</td>
<td><b><?php echo $result['nama_server']; ?></b></td>
</tr>
<tr>
<td>Nama Pemilik</td>
<td><b><?php echo $result['nama_pemilik']; ?></b></td>
</tr>
<tr>
<td>Telepon</td>
<td><b><?php echo $result['nomor_whatsapp']; ?></b></td>
</tr>
<tr>
<td>Waktu</td>
<td><?php echo $result['waktu_transaksi']; ?></td>
</tr>
<tr>
<td>Keterangan</td>
<td><b><?php echo $result['keterangan']; ?></b></td>
</tr>
<tr>
<td>Expaired Date</td>
<td><h5 style="color: orange;"><?php echo $result['expaired_time']; ?></h5></td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<center>
<p class="m-0">Status Pembayaran</p>
<h3 class="mt-2" style="color: orange;"><b><?php echo $dataRespon->data->status; ?></b></h3>
</center>
<hr>
<table class="table table-borderless">
<tbody>
<tr>
<td>Total</td>
<td style="text-align: right;"><h2><?php echo number_format($result['nominal']); ?></h2></td>
</tr>
</tbody>
</table>
<hr>
<center>
<small><p id="countdown"></p></small>
</center>
<?php
// print_r($dataRespon);
$dataGet = json_decode($result['data_get']);
if ($dataRespon->data->status == 'Pending') {
if ($dataGet->data->service == '11') {
echo '<center><h5>QRIS</h5><img src="'.$dataGet->data->qrcode_url.'" width="85%">';
echo '<p>*SCAN QR Untuk melakukan pembayaran</p>';
echo '<a href="?order_id='.$_GET['order_id'].'" class="btn btn-primary btn-sm">Cek Status Pebayaran</a><br><br>';
} else {
echo '<center><p>'.$dataGet->data->service_name.'</p>';
echo '<h4>'.$dataGet->data->virtual_account.'</h4>';
echo '<p>*Copy VA Untuk melakukan pembayaran</p>';
echo '<a href="?order_id='.$_GET['order_id'].'">Cek Status Pebayaran</a><br><br>';
}
echo '<a data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
Lihat Cara pembayaran
</a>
<div class="collapse" id="collapseExample">
<div class="card card-body">';
foreach ($dataGet->payment_guide as $step) {
// Menampilkan judul
echo "<h6>{$step->title}</h6>";
echo "<ul>";
foreach ($step->content as $item) {
echo "<li>{$item}</li>";
}
echo "</ul>";
}
echo '</div></div></center>';
}
elseif ($dataRespon->data->status == 'Canceled') {
$stmt = $pdo->prepare("UPDATE apk_payment SET status = 'CANCELED' WHERE order_id = :order_id");
$stmt->execute([
':order_id' => $order_id
]);
if (strtotime(substr($result['waktu_transaksi'], 0, 10)) == strtotime(date('Y-m-d'))) {
echo '<center>'.$dataRespon->service->type.' anda telah Expaired, silahkan buat metode pembayaran baru<br><br>';
echo '<button id="pay-button" class="btn btn-primary">PILIH METODE PEMBAYARAN</button></center>';
} else {
echo '<center>'.$dataRespon->service->type.' anda telah Expaired, silahkan buat pembayaran baru di Dashboard';
}
}
elseif ($dataRespon->data->status == 'Success') {
echo '<center><img src="../../dist/img/tick.gif" width="40%">';
echo "<p>Pembayaran Berhasil</p>";
echo "<p>".$result['update_time']."</p>";
}
?>
<!-- Modal -->
<div class="modal fade" id="paymentModal" tabindex="-1" aria-labelledby="paymentModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-sm">
<div class="modal-content">
<div class="modal-header bg-warning">
<img src="../../dist/img/logo_wht.png" width="100px">
</div>
<small><small>
<div class="modal-body" style="background-color: rgb(240, 240, 240); text-align: left;">
Total Pembayaran
<h5>Rp. <?php echo number_format($result['nominal']); ?></h5>
<span>Order ID : <?php echo $order_id; ?></span>
</div>
<form method="post">
<div class="modal-body" style="text-align: left; min-height: 250px;">
<div class="mb-3">
<label class="form-label">Virtual Account</label><br>
<!-- Virtual Account -->
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="paymentMethod" id="bri" value="bri" style="display: none;">
<label class="form-check-label" for="bri">
<img src="../../dist/img/bri.png" width="50px" class="mb-1" alt="BRI">
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="paymentMethod" id="bni" value="bni" style="display: none;">
<label class="form-check-label" for="bni">
<img src="../../dist/img/bni.png" width="50px" class="mb-1" alt="BNI">
</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="paymentMethod" id="mandiri" value="mandiri" style="display: none;">
<label class="form-check-label" for="mandiri">
<img src="../../dist/img/mandiri.png" width="50px" class="mb-1" alt="Mandiri">
</label>
</div><br>
<!-- Qris -->
<label class="form-label">Qris</label><br>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="paymentMethod" id="qris" value="qris" style="display: none;">
<label class="form-check-label" for="qris">
<img src="../../dist/img/qris.png" width="50px" class="mb-1" alt="QRIS">
</label>
</div>
</div>
</div>
<div class="modal-body" style="border-bottom-left-radius: 20px; border-bottom-right-radius: 20px;">
<div class="d-grid gap-2">
<input type="submit" name="bayar" class="btn btn-primary btn-sm btn-block" style="border-radius: 20px;" value="Bayar Sekarang">
</div>
</div>
</form>
</small></small>
</div>
</div>
</div>
<!-- END Modal -->
<?php
if (isset($_POST['bayar'])) { // Tambahkan tanda kurung penutup
// Pastikan paymentMethod ada di POST
if (isset($_POST['paymentMethod'])) {
// Tentukan valid_time berdasarkan paymentMethod
$valid_time = ($_POST['paymentMethod'] === 'qris') ? '300' : '3600';
$new_order_id = generateOrderId($pdo);
// Membuat data transaksi
$data = [
'unique_code' => $new_order_id,
'service' => $_POST['paymentMethod'],
'amount' => $result['nominal'],
'note' => $result['keterangan'],
'valid_time' => $valid_time
];
// Panggil fungsi untuk membuat transaksi
$response = CreateTransaction($data);
$dataCreate = json_decode($response);
if ($dataCreate->success === true) {
$id = $result['id'];
// Persiapkan dan eksekusi query untuk memperbarui data
$stmt = $pdo->prepare("UPDATE apk_payment SET data_get = :data_get, status = 'PENDING', order_id = :order_id WHERE id = :id");
$stmt->execute([
':data_get' => $response,
':order_id' => $new_order_id,
':id' => $id
]);
sweetAlert("Pembayaran Baru telah dibuat", "success", "?order_id=".$new_order_id);
} else {
sweetAlert("Error: Gagal buat pembayaran", "error");
}
} else {
sweetAlert("Error: Payment method not provided.", "error");
}
}
?>
</div>
</div>
</div>
</div>
</div>
<center style="margin-bottom: 10px;">
<span><small>Support By </small><img src="https://web.paydisini.co.id/assets/logo.png" width="70px"></span>
</center>
</div>
<center>
<div class="mt-3 mb-4">
<a href="<?= "https://" . $_SERVER['HTTP_HOST'] . "/?" . encrypt_url('setting_profile'); ?>">Kembali ke Dashboard</a>
</div>
</center>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
<script>
document.getElementById('pay-button').addEventListener('click', function() {
var myModal = new bootstrap.Modal(document.getElementById('paymentModal'));
myModal.show();
});
</script>
<script>
// Set waktu target (dalam format YYYY-MM-DD HH:MM:SS)
var targetDate = new Date("<?php echo $dataRespon->data->expired; ?>");
var status = "<?php echo $dataRespon->data->status; ?>";
// Update setiap detik
if (status === "Pending") {
var countdownFunction = setInterval(function() {
// Dapatkan waktu sekarang
var now = new Date().getTime();
// Hitung selisih waktu
var distance = targetDate - now;
// Hitung jam, menit, detik
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Inisialisasi string countdown
var countdownText = "";
// Hanya tampilkan jam jika lebih dari 0
if (hours > 0) {
countdownText += hours + " jam ";
}
// Hanya tampilkan menit jika lebih dari 0
if (minutes > 0 || hours > 0) { // Menit tetap tampil jika jam > 0
countdownText += minutes + " menit ";
}
// Tampilkan detik, selalu tampilkan
countdownText += seconds + " detik";
// Update elemen dengan ID 'countdown'
document.getElementById("countdown").innerHTML = countdownText;
// Jika waktu habis
if (distance < 0) {
clearInterval(countdownFunction);
document.getElementById("countdown").innerHTML = "Waktu habis";
location.reload();
}
}, 1000);
}
</script>
</body>
</html>