Path : /home/vishqocm/pcib.in/backup_20250414/
File Upload :
Current File : /home/vishqocm/pcib.in/backup_20250414/payments.php

<?php
// Include header
include_once 'includes/header.php';

// Get student ID from session
$student_id = $_SESSION['user_id'];
$success_message = '';
$error_message = '';

// Handle flash messages
if (isset($_SESSION['success_message'])) {
    $success_message = $_SESSION['success_message'];
    unset($_SESSION['success_message']);
}

if (isset($_SESSION['error_message'])) {
    $error_message = $_SESSION['error_message'];
    unset($_SESSION['error_message']);
}

// Handle the payment form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit_payment'])) {
    // Get form data
    $student_id = $_SESSION['user_id'];
    $course_id = $_POST['course_id'] ?? 0;
    $amount = $_POST['amount'] ?? 0;
    $payment_method = $_POST['payment_method'] ?? '';
    $transaction_id = $_POST['transaction_id'] ?? '';
    $payment_details = $_POST['payment_for'] ?? '';
    
    // Validation
    if (empty($course_id) || empty($amount) || empty($payment_method)) {
        $error_message = "Please fill in all required fields.";
    } else {
        // Redirect to the payment process page
        header("Location: payment_process.php?course_id=$course_id&amount=$amount&payment_for=$payment_details");
        exit();
    }
}

// Get all enrollments for the student
$enrollments_query = "
    SELECT e.id, e.course_id, e.enrollment_date, e.status, e.payment_plan,
           c.title as course_title, c.price, c.discount_price,
           (
               SELECT SUM(amount) 
               FROM payments 
               WHERE user_id = ? AND course_id = e.course_id AND status IN ('completed', 'verified')
           ) as course_paid
    FROM enrollments e
    INNER JOIN courses c ON e.course_id = c.id
    WHERE e.user_id = ?
    ORDER BY e.enrollment_date DESC
";

$stmt = $conn->prepare($enrollments_query);
$stmt->bind_param("ii", $student_id, $student_id);
$stmt->execute();
$enrollments_result = $stmt->get_result();
$enrollments = [];
$total_paid = 0;
$total_amount = 0;

while ($row = $enrollments_result->fetch_assoc()) {
    // Calculate total fee based on payment plan
    $course_fee = $row['discount_price'] > 0 ? $row['discount_price'] : $row['price'];
    
    if ($row['payment_plan'] === 'monthly') {
        $row['fee_amount'] = round($course_fee / 12, 2);
        $row['total_fee'] = $course_fee;
        $row['payments_count'] = 12;
        $row['payment_type'] = 'Monthly';
    } else if ($row['payment_plan'] === 'six_month') {
        $row['fee_amount'] = round($course_fee / 6, 2);
        $row['total_fee'] = $course_fee;
        $row['payments_count'] = 6;
        $row['payment_type'] = 'Six-Month';
    } else {
        $row['fee_amount'] = $course_fee;
        $row['total_fee'] = $course_fee;
        $row['payments_count'] = 1;
        $row['payment_type'] = 'Full Payment';
    }
    
    // Calculate remaining amount
    $row['course_paid'] = $row['course_paid'] ?? 0;
    $row['remaining_amount'] = max(0, $row['total_fee'] - $row['course_paid']);
    $row['payment_progress'] = $row['total_fee'] > 0 ? min(100, round(($row['course_paid'] / $row['total_fee']) * 100)) : 0;
    
    $enrollments[] = $row;
    $total_paid += $row['course_paid'];
    $total_amount += $row['total_fee'];
}

// Get payment history
$payments_query = "
    SELECT p.id, p.amount, p.payment_method, p.status as payment_status, 
           p.transaction_id, p.payment_date, p.payment_details,
           c.title as course_title
    FROM payments p
    INNER JOIN courses c ON p.course_id = c.id
    WHERE p.user_id = ?
    ORDER BY p.payment_date DESC
";

$stmt = $conn->prepare($payments_query);
$stmt->bind_param("i", $student_id);
$stmt->execute();
$payments_result = $stmt->get_result();
$payments = [];

while ($row = $payments_result->fetch_assoc()) {
    $payments[] = $row;
}

// Calculate total pending amount
$total_pending = max(0, $total_amount - $total_paid);
$payment_progress = $total_amount > 0 ? min(100, round(($total_paid / $total_amount) * 100)) : 0;

// Razorpay API Key (would normally come from a secure configuration)
$razorpay_key_id = "rzp_test_YourRazorpayKeyId";

// Get next payment amount for each course
foreach ($enrollments as &$enrollment) {
    // For simplicity, we'll use the fee amount as the next payment
    $enrollment['next_payment'] = min($enrollment['remaining_amount'], $enrollment['fee_amount']);
}
?>

<div class="container-fluid">
    <div class="row mb-4">
        <div class="col-12">
            <div class="card">
                <div class="card-body">
                    <h5 class="card-title">Payment Management</h5>
                    <p class="text-muted">Manage your course fees and payments</p>
                </div>
            </div>
        </div>
    </div>
    
    <?php if ($success_message): ?>
    <div class="alert alert-success alert-dismissible fade show" role="alert">
        <i class="fas fa-check-circle me-2"></i> <?php echo $success_message; ?>
        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
    </div>
    <?php endif; ?>
    
    <?php if ($error_message): ?>
    <div class="alert alert-danger alert-dismissible fade show" role="alert">
        <i class="fas fa-exclamation-circle me-2"></i> <?php echo $error_message; ?>
        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
    </div>
    <?php endif; ?>
    
    <!-- Payment Overview -->
    <div class="row">
        <div class="col-md-4 mb-4">
            <div class="card bg-primary text-white">
                <div class="card-body">
                    <div class="d-flex justify-content-between">
                        <div>
                            <h6 class="text-uppercase">Total Fees</h6>
                            <h3 class="mb-0">₹<?php echo number_format($total_amount, 2); ?></h3>
                        </div>
                        <div class="text-white">
                            <i class="fas fa-money-bill-wave fa-3x opacity-50"></i>
                        </div>
                    </div>
                </div>
                <div class="card-footer bg-transparent border-0 text-white">
                    <small>For all enrolled courses</small>
                </div>
            </div>
        </div>
        
        <div class="col-md-4 mb-4">
            <div class="card bg-success text-white">
                <div class="card-body">
                    <div class="d-flex justify-content-between">
                        <div>
                            <h6 class="text-uppercase">Total Paid</h6>
                            <h3 class="mb-0">₹<?php echo number_format($total_paid, 2); ?></h3>
                        </div>
                        <div class="text-white">
                            <i class="fas fa-check-circle fa-3x opacity-50"></i>
                        </div>
                    </div>
                </div>
                <div class="card-footer bg-transparent border-0 text-white">
                    <div class="d-flex align-items-center">
                        <div class="progress flex-grow-1" style="height: 6px;">
                            <div class="progress-bar bg-light" role="progressbar" style="width: <?php echo $payment_progress; ?>%" aria-valuenow="<?php echo $payment_progress; ?>" aria-valuemin="0" aria-valuemax="100"></div>
                        </div>
                        <span class="ms-2"><?php echo $payment_progress; ?>%</span>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="col-md-4 mb-4">
            <div class="card bg-danger text-white">
                <div class="card-body">
                    <div class="d-flex justify-content-between">
                        <div>
                            <h6 class="text-uppercase">Due Amount</h6>
                            <h3 class="mb-0">₹<?php echo number_format($total_pending, 2); ?></h3>
                        </div>
                        <div class="text-white">
                            <i class="fas fa-exclamation-circle fa-3x opacity-50"></i>
                        </div>
                    </div>
                </div>
                <div class="card-footer bg-transparent border-0 text-white">
                    <small>Pending payments for all courses</small>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Courses & Payments -->
    <div class="row">
        <div class="col-lg-7 mb-4">
            <div class="card">
                <div class="card-header bg-primary text-white">
                    <h5 class="mb-0">Enrolled Courses</h5>
                </div>
                <div class="card-body">
                    <?php if (empty($enrollments)): ?>
                    <div class="alert alert-info mb-0">
                        <i class="fas fa-info-circle me-2"></i> You are not enrolled in any courses yet.
                    </div>
                    <?php else: ?>
                    <?php foreach ($enrollments as $enrollment): ?>
                    <div class="card mb-3 enrollment-card">
                        <div class="card-body">
                            <div class="row align-items-center">
                                <div class="col-lg-8">
                                    <h5 class="card-title mb-1"><?php echo htmlspecialchars($enrollment['course_title']); ?></h5>
                                    <p class="text-muted small mb-2">
                                        <i class="fas fa-calendar-alt me-1"></i> Enrolled: <?php echo date('d M Y', strtotime($enrollment['enrollment_date'])); ?>
                                        <span class="mx-2">|</span>
                                        <i class="fas fa-money-bill-alt me-1"></i> <?php echo $enrollment['payment_type']; ?> Plan
                                    </p>
                                    
                                    <div class="d-flex justify-content-between align-items-center mb-1">
                                        <span class="small">Payment Progress</span>
                                        <span class="small"><?php echo $enrollment['payment_progress']; ?>%</span>
                                    </div>
                                    <div class="progress mb-3" style="height: 8px;">
                                        <div class="progress-bar bg-success" role="progressbar" style="width: <?php echo $enrollment['payment_progress']; ?>%" 
                                            aria-valuenow="<?php echo $enrollment['payment_progress']; ?>" aria-valuemin="0" aria-valuemax="100"></div>
                                    </div>
                                    
                                    <div class="row">
                                        <div class="col-md-4 mb-2 mb-md-0">
                                            <div class="d-flex flex-column">
                                                <span class="text-muted small">Total Fee</span>
                                                <span class="fw-bold">₹<?php echo number_format($enrollment['total_fee'], 2); ?></span>
                                            </div>
                                        </div>
                                        <div class="col-md-4 mb-2 mb-md-0">
                                            <div class="d-flex flex-column">
                                                <span class="text-muted small">Paid</span>
                                                <span class="fw-bold text-success">₹<?php echo number_format($enrollment['course_paid'], 2); ?></span>
                                            </div>
                                        </div>
                                        <div class="col-md-4">
                                            <div class="d-flex flex-column">
                                                <span class="text-muted small">Remaining</span>
                                                <span class="fw-bold text-danger">₹<?php echo number_format($enrollment['remaining_amount'], 2); ?></span>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <div class="col-lg-4 mt-3 mt-lg-0 text-center text-lg-end">
                                    <?php if ($enrollment['remaining_amount'] > 0): ?>
                                    <div class="d-grid gap-2">
                                        <!-- Razorpay integration button -->
                                        <button class="btn btn-primary pay-now-btn" 
                                                data-course-id="<?php echo $enrollment['course_id']; ?>"
                                                data-amount="<?php echo $enrollment['next_payment']; ?>"
                                                data-course-title="<?php echo htmlspecialchars($enrollment['course_title']); ?>">
                                            <i class="fas fa-credit-card me-2"></i> Pay Online
                                        </button>
                                        
                                        <!-- Manual payment button -->
                                        <a href="payment_process.php?course_id=<?php echo $enrollment['course_id']; ?>&amount=<?php echo $enrollment['next_payment']; ?>&payment_for=Installment" 
                                           class="btn btn-outline-primary">
                                            <i class="fas fa-university me-2"></i> Manual Payment
                                        </a>
                                    </div>
                                    <?php else: ?>
                                    <div class="alert alert-success mb-0">
                                        <i class="fas fa-check-circle me-1"></i> Payment Completed
                                    </div>
                                    <?php endif; ?>
                                </div>
                            </div>
                        </div>
                    </div>
                    <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        
        <div class="col-lg-5 mb-4">
            <div class="card h-100">
                <div class="card-header bg-primary text-white d-flex justify-content-between align-items-center">
                    <h5 class="mb-0">Recent Payments</h5>
                    <a href="payment_history.php" class="btn btn-sm btn-light">
                        <i class="fas fa-history me-1"></i> View All
                    </a>
                </div>
                <div class="card-body">
                    <?php if (empty($payments)): ?>
                    <div class="alert alert-info mb-0">
                        <i class="fas fa-info-circle me-2"></i> No payment records found.
                    </div>
                    <?php else: ?>
                    <div class="table-responsive">
                        <table class="table table-hover table-striped">
                            <thead>
                                <tr>
                                    <th>Date</th>
                                    <th>Course</th>
                                    <th>Amount</th>
                                    <th>Status</th>
                                    <th>Receipt</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php 
                                $count = 0;
                                foreach ($payments as $payment): 
                                    if ($count++ >= 5) break; // Show only 5 most recent payments
                                ?>
                                <tr>
                                    <td><?php echo date('d/m/Y', strtotime($payment['payment_date'])); ?></td>
                                    <td class="text-truncate" style="max-width: 150px;" title="<?php echo htmlspecialchars($payment['course_title']); ?>">
                                        <?php echo htmlspecialchars($payment['course_title']); ?>
                                    </td>
                                    <td>₹<?php echo number_format($payment['amount'], 2); ?></td>
                                    <td>
                                        <span class="badge bg-<?php 
                                            echo $payment['payment_status'] === 'completed' || $payment['payment_status'] === 'verified' ? 'success' : 
                                                ($payment['payment_status'] === 'pending' ? 'warning' : 'danger'); 
                                        ?>">
                                            <?php echo ucfirst($payment['payment_status']); ?>
                                        </span>
                                    </td>
                                    <td>
                                        <?php if ($payment['payment_status'] === 'completed' || $payment['payment_status'] === 'verified'): ?>
                                        <a href="payment_receipt.php?id=<?php echo $payment['id']; ?>" class="btn btn-sm btn-outline-primary" target="_blank">
                                            <i class="fas fa-file-invoice"></i>
                                        </a>
                                        <?php else: ?>
                                        <span class="text-muted"><i class="fas fa-clock"></i></span>
                                        <?php endif; ?>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Payment Due Notification -->
    <?php if ($total_pending > 0): ?>
    <div class="row">
        <div class="col-12">
            <div class="alert alert-warning">
                <div class="d-flex">
                    <div class="me-3">
                        <i class="fas fa-bell fa-2x"></i>
                    </div>
                    <div>
                        <h5 class="alert-heading">Payment Reminder</h5>
                        <p class="mb-0">You have pending payments totaling ₹<?php echo number_format($total_pending, 2); ?>. Please make your payments on time to maintain access to all course materials.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <?php endif; ?>
</div>

<!-- Include Razorpay JavaScript SDK -->
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Handle online payment buttons
    const payButtons = document.querySelectorAll('.pay-now-btn');
    
    payButtons.forEach(function(button) {
        button.addEventListener('click', function() {
            const courseId = this.getAttribute('data-course-id');
            const amount = parseFloat(this.getAttribute('data-amount'));
            const courseTitle = this.getAttribute('data-course-title');
            
            // Razorpay accepts amount in paise (multiply by 100)
            const amountInPaise = Math.round(amount * 100);
            
            const options = {
                key: '<?php echo $razorpay_key_id; ?>', // Enter the Key ID generated from the Dashboard
                amount: amountInPaise,
                currency: 'INR',
                name: '<?php echo htmlspecialchars($institution_name ?? "Institute of Technology"); ?>',
                description: 'Payment for ' + courseTitle,
                image: '../assets/img/logo.png',
                handler: function(response) {
                    // After successful payment, create a form and submit to your server
                    const form = document.createElement('form');
                    form.method = 'POST';
                    form.action = 'process_razorpay_payment.php';
                    
                    const fields = {
                        razorpay_payment_id: response.razorpay_payment_id,
                        course_id: courseId,
                        amount: amount,
                        payment_method: 'razorpay',
                        transaction_id: response.razorpay_payment_id,
                        payment_for: 'Installment'
                    };
                    
                    for (const key in fields) {
                        const hiddenField = document.createElement('input');
                        hiddenField.type = 'hidden';
                        hiddenField.name = key;
                        hiddenField.value = fields[key];
                        form.appendChild(hiddenField);
                    }
                    
                    document.body.appendChild(form);
                    form.submit();
                },
                prefill: {
                    name: '<?php echo htmlspecialchars($_SESSION['first_name'] . ' ' . $_SESSION['last_name'] ?? ''); ?>',
                    email: '<?php echo htmlspecialchars($_SESSION['email'] ?? ''); ?>',
                    contact: '<?php echo htmlspecialchars($_SESSION['phone'] ?? ''); ?>'
                },
                theme: {
                    color: '#3399cc'
                }
            };
            
            const rzp = new Razorpay(options);
            rzp.open();
        });
    });
});
</script>

<?php include_once 'includes/footer.php'; ?>