/home/ejrndhmu/tokobiolink.com/package_invoice.php
<?php
session_start();
require_once 'config/database.php';
require_once 'includes/functions.php';
// Ambil nomor order dari URL
$orderNumber = $_GET['order'] ?? '';
if (empty($orderNumber)) {
die('Nomor order tidak valid');
}
// Ambil data pesanan
$order = getResellerOrderByNumber($orderNumber);
if (!$order) {
die('Pesanan tidak ditemukan');
}
// Hitung waktu expired pembayaran (24 jam dari pembuatan order)
$expiredTime = strtotime($order['created_at']) + (24 * 60 * 60);
$isExpired = time() > $expiredTime;
$timeLeft = $expiredTime - time();
// Format waktu tersisa
function formatTimeLeft($seconds) {
if ($seconds <= 0) return 'Expired';
$hours = floor($seconds / 3600);
$minutes = floor(($seconds % 3600) / 60);
$seconds = $seconds % 60;
return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
}
// Decode product access untuk menampilkan produk
$productAccess = json_decode($order['product_access'], true) ?: [];
$productNames = [];
if (!empty($productAccess)) {
try {
$db = new Database();
$placeholders = str_repeat('?,', count($productAccess) - 1) . '?';
$db->query("SELECT name FROM products WHERE id IN ($placeholders) AND status = 'active'");
foreach ($productAccess as $index => $productId) {
$db->bind($index + 1, $productId);
}
$products = $db->resultset();
$productNames = array_column($products, 'name');
} catch (Exception $e) {
error_log("Error getting product names: " . $e->getMessage());
}
}
// Ambil nomor WhatsApp admin/reseller untuk konfirmasi
$whatsappNumber = '';
try {
$db = new Database();
// Cek apakah ada nomor konfirmasi khusus di pengaturan Telegram
$db->query('SELECT confirmation_phone FROM reseller_telegram_settings WHERE reseller_id = :reseller_id');
$db->bind(':reseller_id', $order['reseller_id']);
$telegramSettings = $db->single();
if ($telegramSettings && !empty($telegramSettings['confirmation_phone'])) {
// Gunakan nomor konfirmasi dari pengaturan Telegram
$whatsappNumber = $telegramSettings['confirmation_phone'];
} else {
// Fallback ke nomor WhatsApp reseller default
$db->query('SELECT whatsapp_number FROM users WHERE id = :reseller_id');
$db->bind(':reseller_id', $order['reseller_id']);
$reseller = $db->single();
if ($reseller && !empty($reseller['whatsapp_number'])) {
$whatsappNumber = $reseller['whatsapp_number'];
}
}
} catch (Exception $e) {
error_log("Error getting reseller WhatsApp: " . $e->getMessage());
}
// Buat pesan WhatsApp
$whatsappMessage = "Halo, saya sudah melakukan pembayaran untuk:\n\n";
$whatsappMessage .= "📋 *Detail Pesanan*\n";
$whatsappMessage .= "• Nomor Order: {$order['order_number']}\n";
$whatsappMessage .= "• Paket: {$order['package_name']}\n";
$whatsappMessage .= "• Nama: {$order['customer_name']}\n";
$whatsappMessage .= "• Email: {$order['customer_email']}\n";
$whatsappMessage .= "• Total: Rp " . number_format($order['total_amount'], 0, ',', '.') . "\n\n";
$whatsappMessage .= "💳 *Pembayaran ke:*\n";
$whatsappMessage .= "• Bank: {$order['bank_name']}\n";
$whatsappMessage .= "• No. Rekening: {$order['account_number']}\n";
$whatsappMessage .= "• Atas Nama: {$order['account_holder']}\n\n";
$whatsappMessage .= "Mohon untuk segera diaktifkan. Terima kasih! 🙏";
$whatsappUrl = 'https://wa.me/' . preg_replace('/[^0-9]/', '', $whatsappNumber) . '?text=' . urlencode($whatsappMessage);
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Invoice - <?= htmlspecialchars($order['order_number']) ?></title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<?php
// Add Meta Pixel for purchase tracking (only if order is active/paid)
if ($order && $order['reseller_id'] && $order['status'] === 'active') {
echo getMetaPixelCode($order['reseller_id'], 'purchase');
}
?>
</head>
<body class="bg-gray-50">
<div class="min-h-screen py-8">
<div class="max-w-4xl mx-auto px-4">
<!-- 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">Nomor Order: <strong><?= htmlspecialchars($order['order_number']) ?></strong></p>
</div>
<!-- Status Alert -->
<?php if ($order['status'] === 'active'): ?>
<div class="bg-green-50 border border-green-200 text-green-700 px-6 py-4 rounded-lg mb-6">
<div class="flex items-center">
<i class="fas fa-check-circle text-2xl mr-3"></i>
<div>
<h3 class="font-semibold">Pesanan Sudah Aktif!</h3>
<p class="text-sm">Akun Anda telah diaktifkan dan dapat digunakan hingga <?= date('d/m/Y', strtotime($order['expires_at'])) ?></p>
</div>
</div>
</div>
<?php elseif ($isExpired): ?>
<div class="bg-red-50 border border-red-200 text-red-700 px-6 py-4 rounded-lg mb-6">
<div class="flex items-center">
<i class="fas fa-exclamation-triangle text-2xl mr-3"></i>
<div>
<h3 class="font-semibold">Invoice Expired</h3>
<p class="text-sm">Batas waktu pembayaran telah habis. Silakan hubungi reseller untuk membuat pesanan baru.</p>
</div>
</div>
</div>
<?php else: ?>
<div class="bg-yellow-50 border border-yellow-200 text-yellow-700 px-6 py-4 rounded-lg mb-6">
<div class="flex items-center justify-between">
<div class="flex items-center">
<i class="fas fa-clock text-2xl mr-3"></i>
<div>
<h3 class="font-semibold">Menunggu Pembayaran</h3>
<p class="text-sm">Silakan lakukan pembayaran sebelum batas waktu berakhir</p>
</div>
</div>
<div class="text-right">
<div class="text-lg font-bold" id="countdown"><?= formatTimeLeft($timeLeft) ?></div>
<div class="text-xs">Sisa Waktu</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<!-- Order Details -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-xl font-semibold text-gray-800 mb-4">
<i class="fas fa-file-invoice text-blue-500 mr-2"></i>
Detail Pesanan
</h2>
<div class="space-y-4">
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Nomor Order:</span>
<span class="font-medium"><?= htmlspecialchars($order['order_number']) ?></span>
</div>
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Paket:</span>
<span class="font-medium"><?= htmlspecialchars($order['package_name']) ?></span>
</div>
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Durasi:</span>
<span class="font-medium"><?= $order['duration_days'] ?> hari</span>
</div>
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Reseller:</span>
<span class="font-medium"><?= htmlspecialchars($order['reseller_name']) ?></span>
</div>
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Tanggal Order:</span>
<span class="font-medium"><?= date('d/m/Y H:i', strtotime($order['created_at'])) ?></span>
</div>
<div class="flex justify-between py-2 text-lg font-semibold">
<span>Total Pembayaran:</span>
<span class="text-blue-600">Rp <?= number_format($order['total_amount'], 0, ',', '.') ?></span>
</div>
<?php if (!empty($productNames)): ?>
<div class="pt-4">
<h4 class="font-medium text-gray-800 mb-2">Akses Produk:</h4>
<ul class="space-y-1">
<?php foreach ($productNames as $productName): ?>
<li class="flex items-center text-sm text-gray-600">
<i class="fas fa-download text-blue-500 mr-2"></i>
<?= htmlspecialchars($productName) ?>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
</div>
</div>
<!-- Payment Info -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-xl font-semibold text-gray-800 mb-4">
<i class="fas fa-credit-card text-green-500 mr-2"></i>
Informasi Pembayaran
</h2>
<div class="space-y-4">
<div class="bg-gray-50 p-4 rounded-lg">
<h3 class="font-medium text-gray-800 mb-2">Transfer ke:</h3>
<div class="space-y-2">
<div class="flex justify-between">
<span class="text-gray-600">Bank:</span>
<span class="font-medium"><?= htmlspecialchars($order['bank_name']) ?></span>
</div>
<div class="flex justify-between">
<span class="text-gray-600">No. Rekening:</span>
<span class="font-medium font-mono"><?= htmlspecialchars($order['account_number']) ?></span>
</div>
<div class="flex justify-between">
<span class="text-gray-600">Atas Nama:</span>
<span class="font-medium"><?= htmlspecialchars($order['account_holder']) ?></span>
</div>
</div>
</div>
<div class="bg-blue-50 p-4 rounded-lg">
<h3 class="font-medium text-blue-800 mb-2">Jumlah Transfer:</h3>
<div class="text-2xl font-bold text-blue-600">Rp <?= number_format($order['total_amount'], 0, ',', '.') ?></div>
<p class="text-xs text-blue-600 mt-1">Transfer sesuai nominal di atas</p>
</div>
<div class="space-y-3">
<h3 class="font-medium text-gray-800">Langkah Pembayaran:</h3>
<ol class="list-decimal list-inside space-y-2 text-sm text-gray-600">
<li>Transfer sesuai nominal ke rekening di atas</li>
<li>Simpan bukti transfer</li>
<li>Klik tombol "Konfirmasi Pembayaran" di bawah</li>
<li>Kirim bukti transfer via WhatsApp</li>
<li>Tunggu aktivasi dari reseller</li>
</ol>
</div>
<?php if ($order['status'] === 'pending' && !$isExpired && !empty($whatsappNumber)): ?>
<div class="pt-4">
<a href="<?= htmlspecialchars($whatsappUrl) ?>" target="_blank"
class="w-full bg-green-600 hover:bg-green-700 text-white font-medium py-3 px-4 rounded-lg transition duration-200 flex items-center justify-center">
<i class="fab fa-whatsapp mr-2 text-lg"></i>
Konfirmasi Pembayaran via WhatsApp
</a>
</div>
<?php endif; ?>
</div>
</div>
</div>
<!-- Customer Info -->
<div class="bg-white rounded-lg shadow-md p-6 mt-8">
<h2 class="text-xl font-semibold text-gray-800 mb-4">
<i class="fas fa-user text-purple-500 mr-2"></i>
Informasi Pelanggan
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<div class="space-y-3">
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Nama:</span>
<span class="font-medium"><?= htmlspecialchars($order['customer_name']) ?></span>
</div>
<div class="flex justify-between py-2 border-b">
<span class="text-gray-600">Email:</span>
<span class="font-medium"><?= htmlspecialchars($order['customer_email']) ?></span>
</div>
<div class="flex justify-between py-2">
<span class="text-gray-600">WhatsApp:</span>
<span class="font-medium"><?= htmlspecialchars($order['customer_phone']) ?></span>
</div>
</div>
</div>
<div class="bg-yellow-50 p-4 rounded-lg">
<h3 class="font-medium text-yellow-800 mb-2">
<i class="fas fa-info-circle mr-1"></i>
Informasi Penting
</h3>
<ul class="text-sm text-yellow-700 space-y-1">
<li>• Akun akan diaktifkan setelah pembayaran dikonfirmasi</li>
<li>• Simpan nomor order untuk referensi</li>
<li>• Hubungi reseller jika ada kendala</li>
<?php if ($order['status'] === 'pending'): ?>
<li>• Batas waktu pembayaran: 24 jam</li>
<?php endif; ?>
</ul>
</div>
</div>
</div>
</div>
</div>
<?php if ($order['status'] === 'pending' && !$isExpired): ?>
<script>
// Countdown timer
let timeLeft = <?= $timeLeft ?>;
function updateCountdown() {
if (timeLeft <= 0) {
document.getElementById('countdown').textContent = 'Expired';
location.reload(); // Refresh halaman ketika expired
return;
}
const hours = Math.floor(timeLeft / 3600);
const minutes = Math.floor((timeLeft % 3600) / 60);
const seconds = timeLeft % 60;
document.getElementById('countdown').textContent =
String(hours).padStart(2, '0') + ':' +
String(minutes).padStart(2, '0') + ':' +
String(seconds).padStart(2, '0');
timeLeft--;
}
// Update setiap detik
setInterval(updateCountdown, 1000);
</script>
<?php endif; ?>
</body>
</html>