58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
include '../../config/connect.php';
|
|
include 'intruksi_pay.php';
|
|
require_once 'jwtoken/url_paymnet_encrypt.php';
|
|
|
|
// Fungsi helper untuk redirect ke error.php
|
|
function redirect_error() {
|
|
include "error.php";
|
|
exit;
|
|
}
|
|
|
|
// Ambil URL segments
|
|
$segments = explode("/", trim($_SERVER['REQUEST_URI'], "/"));
|
|
|
|
// Cek segments cukup panjang
|
|
if (count($segments) < 3) {
|
|
redirect_error();
|
|
}
|
|
|
|
// Ambil order_id dari JWT
|
|
$order_id = jwt_decrypt($segments[2]);
|
|
if (!$order_id) {
|
|
redirect_error();
|
|
}
|
|
|
|
// Query aman pakai prepared statement
|
|
$sql = "
|
|
SELECT a.id, a.id_data_server, a.keterangan, a.nominal_tagihan, a.konpensasi,
|
|
a.jumlah_konpensasi, a.jumlah_tagihan, a.ppn, a.kode_unik, a.verifikasi_tagihan,
|
|
a.limit_pembayaran, a.nama, a.alamat, a.nama_paket, a.nama_server,
|
|
b.id AS id_payment, b.order_id, b.data_get, b.status, b.input_time, b.update_time
|
|
FROM v_tagihan a
|
|
LEFT JOIN client_payment b ON a.id = b.id_tagihan
|
|
WHERE a.id = :order_id
|
|
ORDER BY b.id DESC
|
|
LIMIT 1
|
|
";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->bindParam(':order_id', $order_id, PDO::PARAM_STR);
|
|
$stmt->execute();
|
|
$pelanggan = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$pelanggan) {
|
|
redirect_error();
|
|
}
|
|
|
|
// Buat slug aman untuk URL
|
|
$server = mb_strtolower(preg_replace('/[^a-zA-Z0-9]+/', '', $pelanggan['nama_server']));
|
|
$nama = mb_strtolower(preg_replace('/[^a-zA-Z0-9]+/', '', $pelanggan['nama']));
|
|
|
|
// Validasi segments sesuai server & nama pelanggan
|
|
if ($segments[0] !== $server || $segments[1] !== $nama) {
|
|
redirect_error();
|
|
}
|
|
|
|
// Jika semua valid, include payment
|
|
include "payment.php";
|