/home/ejrndhmu/tokobiolink.com/invoice.php
<?php
// Halaman Invoice Pembayaran
require_once 'config/database.php';
require_once 'includes/functions.php';
// Fungsi untuk mendapatkan pesanan berdasarkan order number
function getOrderByNumber($orderNumber) {
global $pdo;
try {
$stmt = $pdo->prepare("
SELECT so.*, sp.name as package_name, sp.description as package_description,
sp.duration_days, sp.target_role, pa.bank_name, pa.account_number,
pa.account_name as account_holder
FROM subscription_orders so
LEFT JOIN subscription_packages sp ON so.package_id = sp.id
LEFT JOIN payment_accounts pa ON so.payment_account_id = pa.id
WHERE so.order_number = ?
");
$stmt->execute([$orderNumber]);
return $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
error_log("Error getting order: " . $e->getMessage());
return false;
}
}
// Ambil order number dari URL
$orderNumber = $_GET['order'] ?? '';
if (empty($orderNumber)) {
header('Location: checkout.php');
exit();
}
$order = getOrderByNumber($orderNumber);
if (!$order) {
header('Location: checkout.php?error=order_not_found');
exit();
}
// Hitung waktu expired pembayaran (24 jam dari pembuatan pesanan)
$paymentExpired = date('Y-m-d H:i:s', strtotime($order['created_at'] . ' +24 hours'));
$isExpired = strtotime($paymentExpired) < time();
// Format harga
$formattedPrice = 'Rp ' . number_format($order['total_amount'], 0, ',', '.');
// Format durasi
$durationText = $order['duration_days'] . ' hari';
if ($order['duration_days'] >= 30) {
$months = floor($order['duration_days'] / 30);
$durationText = $months . ' bulan';
}
// Format role
$roleText = $order['target_role'] === 'reseller' ? 'Reseller' : 'User';
// Get admin WhatsApp number
$adminWhatsapp = getSetting('admin_whatsapp', '');
// Create WhatsApp message
$whatsappMessage = "Halo Admin,\n\n";
$whatsappMessage .= "Saya ingin mengkonfirmasi pembayaran untuk pesanan berikut:\n\n";
$whatsappMessage .= "📋 *Detail Pesanan*\n";
$whatsappMessage .= "• Nomor Pesanan: {$order['order_number']}\n";
$whatsappMessage .= "• Nama: {$order['customer_name']}\n";
$whatsappMessage .= "• Email: {$order['customer_email']}\n";
$whatsappMessage .= "• Telepon: {$order['customer_phone']}\n";
$whatsappMessage .= "• Paket: {$order['package_name']}\n";
$whatsappMessage .= "• Total: {$formattedPrice}\n\n";
$whatsappMessage .= "💳 *Informasi Pembayaran*\n";
$whatsappMessage .= "• Bank: {$order['bank_name']}\n";
$whatsappMessage .= "• Rekening: {$order['account_number']}\n";
$whatsappMessage .= "• Atas Nama: {$order['account_holder']}\n\n";
$whatsappMessage .= "Mohon untuk segera diverifikasi. Terima kasih!";
// Encode message for URL
$encodedMessage = urlencode($whatsappMessage);
$whatsappUrl = "https://wa.me/{$adminWhatsapp}?text={$encodedMessage}";
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Invoice Pembayaran - <?php echo htmlspecialchars($order['order_number']); ?></title>
<?php echo renderMetaPixelForPage('invoice'); ?>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
'blue-primary': '#1e40af',
'blue-dark': '#1e3a8a'
}
}
}
}
</script>
</head>
<body class="bg-gray-50 min-h-screen">
<div class="container mx-auto px-4 py-8 max-w-4xl">
<!-- Header -->
<div class="text-center mb-8">
<h1 class="text-3xl font-bold text-gray-800 mb-2">Invoice Pembayaran</h1>
<p class="text-gray-600">Silakan lakukan pembayaran sesuai dengan detail di bawah ini</p>
</div>
<div class="grid md:grid-cols-2 gap-8">
<!-- Detail Pesanan -->
<div class="bg-white rounded-lg shadow-sm border border-gray-200 p-6">
<div class="flex items-center mb-6">
<div class="bg-blue-100 p-3 rounded-full mr-4">
<i class="fas fa-receipt text-blue-600 text-xl"></i>
</div>
<div>
<h2 class="text-xl font-semibold text-gray-800">Detail Pesanan</h2>
<p class="text-sm text-gray-500">Order #<?php echo htmlspecialchars($order['order_number']); ?></p>
</div>
</div>
<div class="space-y-4">
<div class="border-b pb-4">
<h3 class="font-medium text-gray-800 mb-2">Informasi Pelanggan</h3>
<div class="text-sm text-gray-600 space-y-1">
<p><span class="font-medium">Nama:</span> <?php echo htmlspecialchars($order['customer_name']); ?></p>
<p><span class="font-medium">Email:</span> <?php echo htmlspecialchars($order['customer_email']); ?></p>
<p><span class="font-medium">Telepon:</span> <?php echo htmlspecialchars($order['customer_phone']); ?></p>
</div>
</div>
<div class="border-b pb-4">
<h3 class="font-medium text-gray-800 mb-2">Paket Langganan</h3>
<div class="text-sm text-gray-600 space-y-1">
<p><span class="font-medium">Nama Paket:</span> <?php echo htmlspecialchars($order['package_name']); ?></p>
<p><span class="font-medium">Tipe:</span> <?php echo $roleText; ?></p>
<p><span class="font-medium">Durasi:</span> <?php echo $durationText; ?></p>
<?php if (!empty($order['package_description'])): ?>
<p><span class="font-medium">Deskripsi:</span> <?php echo htmlspecialchars($order['package_description']); ?></p>
<?php endif; ?>
</div>
</div>
<div class="border-b pb-4">
<h3 class="font-medium text-gray-800 mb-2">Status Pembayaran</h3>
<div class="flex items-center">
<?php if ($order['status'] === 'pending'): ?>
<?php if ($isExpired): ?>
<span class="inline-flex px-3 py-1 text-xs font-semibold rounded-full bg-red-100 text-red-800">
<i class="fas fa-times-circle mr-1"></i>Expired
</span>
<?php else: ?>
<span class="inline-flex px-3 py-1 text-xs font-semibold rounded-full bg-yellow-100 text-yellow-800">
<i class="fas fa-clock mr-1"></i>Menunggu Pembayaran
</span>
<?php endif; ?>
<?php elseif ($order['status'] === 'paid'): ?>
<span class="inline-flex px-3 py-1 text-xs font-semibold rounded-full bg-blue-100 text-blue-800">
<i class="fas fa-check-circle mr-1"></i>Dibayar
</span>
<?php elseif ($order['status'] === 'active'): ?>
<span class="inline-flex px-3 py-1 text-xs font-semibold rounded-full bg-green-100 text-green-800">
<i class="fas fa-check-circle mr-1"></i>Aktif
</span>
<?php endif; ?>
</div>
</div>
<div>
<div class="flex justify-between items-center text-lg font-semibold">
<span class="text-gray-800">Total Pembayaran:</span>
<span class="text-blue-600"><?php echo $formattedPrice; ?></span>
</div>
</div>
</div>
</div>
<!-- Informasi Pembayaran -->
<div class="bg-white rounded-lg shadow-sm border border-gray-200 p-6">
<div class="flex items-center mb-6">
<div class="bg-green-100 p-3 rounded-full mr-4">
<i class="fas fa-credit-card text-green-600 text-xl"></i>
</div>
<div>
<h2 class="text-xl font-semibold text-gray-800">Informasi Pembayaran</h2>
<p class="text-sm text-gray-500">Transfer ke rekening berikut</p>
</div>
</div>
<?php if (!$isExpired && $order['status'] === 'pending'): ?>
<div class="bg-yellow-50 border border-yellow-200 rounded-lg p-4 mb-6">
<div class="flex items-center">
<i class="fas fa-exclamation-triangle text-yellow-600 mr-2"></i>
<div>
<p class="text-sm font-medium text-yellow-800">Batas Waktu Pembayaran</p>
<p class="text-sm text-yellow-700"><?php echo date('d/m/Y H:i', strtotime($paymentExpired)); ?> WIB</p>
</div>
</div>
</div>
<?php elseif ($isExpired): ?>
<div class="bg-red-50 border border-red-200 rounded-lg p-4 mb-6">
<div class="flex items-center">
<i class="fas fa-times-circle text-red-600 mr-2"></i>
<div>
<p class="text-sm font-medium text-red-800">Pembayaran Expired</p>
<p class="text-sm text-red-700">Silakan buat pesanan baru</p>
</div>
</div>
</div>
<?php endif; ?>
<div class="space-y-4">
<div class="border border-gray-200 rounded-lg p-4">
<div class="flex justify-between items-start mb-3">
<div>
<h3 class="font-medium text-gray-800"><?php echo htmlspecialchars($order['bank_name']); ?></h3>
<p class="text-sm text-gray-600">a.n. <?php echo htmlspecialchars($order['account_holder']); ?></p>
</div>
<button onclick="copyToClipboard('<?php echo $order['account_number']; ?>')"
class="text-blue-600 hover:text-blue-800 text-sm font-medium">
<i class="fas fa-copy mr-1"></i>Salin
</button>
</div>
<div class="bg-gray-50 rounded p-3">
<p class="text-sm text-gray-600 mb-1">Nomor Rekening:</p>
<p class="text-lg font-mono font-semibold text-gray-800" id="accountNumber"><?php echo htmlspecialchars($order['account_number']); ?></p>
</div>
<div class="mt-3 bg-blue-50 rounded p-3">
<p class="text-sm text-gray-600 mb-1">Jumlah Transfer:</p>
<p class="text-lg font-semibold text-blue-600"><?php echo $formattedPrice; ?></p>
</div>
</div>
<?php if (!empty($order['qr_code'])): ?>
<div class="text-center border border-gray-200 rounded-lg p-4">
<p class="text-sm text-gray-600 mb-3">Atau scan QR Code:</p>
<img src="<?php echo htmlspecialchars($order['qr_code']); ?>"
alt="QR Code Pembayaran"
class="mx-auto w-32 h-32 border border-gray-200 rounded">
</div>
<?php endif; ?>
</div>
<?php if (!$isExpired && $order['status'] === 'pending'): ?>
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="font-medium text-gray-800 mb-3">Setelah Transfer</h3>
<div class="text-sm text-gray-600 space-y-2">
<p>• Simpan bukti transfer</p>
<p>• Akun akan diaktivasi otomatis setelah pembayaran dikonfirmasi</p>
<p>• Proses verifikasi maksimal 1x24 jam</p>
</div>
</div>
<?php endif; ?>
</div>
</div>
<!-- Action Buttons -->
<div class="mt-8 text-center space-x-4">
<a href="checkout.php" class="inline-flex items-center px-6 py-3 bg-gray-600 hover:bg-gray-700 text-white font-medium rounded-lg transition duration-200">
<i class="fas fa-arrow-left mr-2"></i>Kembali ke Checkout
</a>
<?php if (!$isExpired && $order['status'] === 'pending' && !empty($adminWhatsapp)): ?>
<a href="<?php echo htmlspecialchars($whatsappUrl); ?>" target="_blank" class="inline-flex items-center px-6 py-3 bg-green-600 hover:bg-green-700 text-white font-medium rounded-lg transition duration-200">
<i class="fab fa-whatsapp mr-2"></i>Konfirmasi Pembayaran
</a>
<?php endif; ?>
<?php if ($order['status'] === 'active'): ?>
<a href="login.php" class="inline-flex items-center px-6 py-3 bg-blue-primary hover:bg-blue-dark text-white font-medium rounded-lg transition duration-200">
<i class="fas fa-sign-in-alt mr-2"></i>Login ke Akun
</a>
<?php endif; ?>
</div>
<!-- Footer Info -->
<div class="mt-12 text-center text-sm text-gray-500">
<p>Jika ada pertanyaan, silakan hubungi customer service kami</p>
<p class="mt-1">Order dibuat pada: <?php echo date('d/m/Y H:i', strtotime($order['created_at'])); ?> WIB</p>
</div>
</div>
<script>
function copyToClipboard(text) {
navigator.clipboard.writeText(text).then(function() {
// Show success message
const button = event.target.closest('button');
const originalText = button.innerHTML;
button.innerHTML = '<i class="fas fa-check mr-1"></i>Tersalin!';
button.classList.add('text-green-600');
setTimeout(() => {
button.innerHTML = originalText;
button.classList.remove('text-green-600');
}, 2000);
}).catch(function(err) {
console.error('Could not copy text: ', err);
alert('Gagal menyalin nomor rekening');
});
}
</script>
</body>
</html>