{"id":625,"date":"2025-07-31T11:23:29","date_gmt":"2025-07-31T11:23:29","guid":{"rendered":"https:\/\/promotionexams.com\/checkout-2\/"},"modified":"2026-01-30T14:29:12","modified_gmt":"2026-01-30T14:29:12","slug":"checkout-2","status":"publish","type":"page","link":"https:\/\/promotionexams.com\/?page_id=625","title":{"rendered":"Checkout"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"625\" class=\"elementor elementor-625\">\n\t\t\t\t<div class=\"elementor-element elementor-element-68ee886 e-flex e-con-boxed e-con e-parent\" data-id=\"68ee886\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d19520 elementor-widget elementor-widget-html\" data-id=\"4d19520\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Checkout - CSS Adda<\/title>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n    \n    <!-- RAZORPAY SCRIPT -->\n    <script src=\"https:\/\/checkout.razorpay.com\/v1\/checkout.js\"><\/script>\n    \n    <style>\n        :root {\n            --primary-blue: #1e3a8a;\n            --primary-blue-light: #3b82f6;\n            --primary-blue-dark: #1e40af;\n            --accent-orange: #ff6b35;\n            --accent-orange-dark: #e55a2b;\n            --success-green: #10b981;\n            --text-dark: #1f2937;\n            --text-gray: #6b7280;\n            --text-light: #9ca3af;\n            --bg-light: #f8fafc;\n            --border-color: #e5e7eb;\n            --shadow-sm: 0 2px 8px rgba(0,0,0,0.08);\n            --shadow-md: 0 4px 20px rgba(0,0,0,0.12);\n            --border-radius: 12px;\n        }\n        \n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n        \n        body {\n            font-family: 'Poppins', sans-serif;\n            background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%);\n            min-height: 100vh;\n            padding: 20px;\n        }\n        \n        \/* Header *\/\n        .checkout-header {\n            max-width: 1200px;\n            margin: 0 auto 30px;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            flex-wrap: wrap;\n            gap: 15px;\n        }\n        \n        .header-left {\n            display: flex;\n            align-items: center;\n            gap: 15px;\n        }\n        \n        .checkout-header img {\n            height: 50px;\n        }\n        \n        .checkout-header h1 {\n            color: var(--primary-blue);\n            font-size: 24px;\n            font-weight: 700;\n        }\n        \n        .header-right {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n        }\n        \n        .secure-badge {\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            background: #dcfce7;\n            color: #166534;\n            padding: 8px 16px;\n            border-radius: 20px;\n            font-size: 13px;\n            font-weight: 500;\n        }\n        \n        .secure-badge i {\n            color: var(--success-green);\n        }\n        \n        \/* Main Container *\/\n        .checkout-container {\n            max-width: 1200px;\n            margin: 0 auto;\n            display: grid;\n            grid-template-columns: 1fr 420px;\n            gap: 30px;\n        }\n        \n        \/* Form Section *\/\n        .checkout-form {\n            background: white;\n            padding: 35px;\n            border-radius: var(--border-radius);\n            box-shadow: var(--shadow-md);\n        }\n        \n        .form-section-title {\n            color: var(--primary-blue);\n            font-size: 20px;\n            font-weight: 700;\n            margin-bottom: 25px;\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            padding-bottom: 15px;\n            border-bottom: 2px solid var(--bg-light);\n        }\n        \n        .form-section-title i {\n            color: var(--accent-orange);\n        }\n        \n        .form-row {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 20px;\n        }\n        \n        .form-group {\n            margin-bottom: 20px;\n        }\n        \n        .form-group.full-width {\n            grid-column: 1 \/ -1;\n        }\n        \n        .form-group label {\n            display: block;\n            margin-bottom: 8px;\n            font-weight: 600;\n            color: var(--text-dark);\n            font-size: 14px;\n        }\n        \n        .form-group label .required {\n            color: #ef4444;\n            margin-left: 2px;\n        }\n        \n        .form-group input,\n        .form-group select {\n            width: 100%;\n            padding: 14px 16px;\n            border: 2px solid var(--border-color);\n            border-radius: 10px;\n            font-size: 15px;\n            font-family: 'Poppins', sans-serif;\n            transition: all 0.3s ease;\n            background: white;\n        }\n        \n        .form-group input:focus,\n        .form-group select:focus {\n            outline: none;\n            border-color: var(--primary-blue);\n            box-shadow: 0 0 0 4px rgba(30, 58, 138, 0.1);\n        }\n        \n        .form-group input.error {\n            border-color: #ef4444;\n            background: #fef2f2;\n        }\n        \n        .form-group input::placeholder {\n            color: var(--text-light);\n        }\n        \n        .input-hint {\n            font-size: 12px;\n            color: var(--text-gray);\n            margin-top: 5px;\n        }\n        \n        \/* Order Summary *\/\n        .order-summary {\n            background: white;\n            padding: 30px;\n            border-radius: var(--border-radius);\n            box-shadow: var(--shadow-md);\n            height: fit-content;\n            position: sticky;\n            top: 20px;\n        }\n        \n        .order-summary h2 {\n            font-size: 20px;\n            margin-bottom: 20px;\n            color: var(--primary-blue);\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            padding-bottom: 15px;\n            border-bottom: 2px solid var(--bg-light);\n        }\n        \n        .order-summary h2 i {\n            color: var(--accent-orange);\n        }\n        \n        .order-items {\n            max-height: 300px;\n            overflow-y: auto;\n        }\n        \n        .order-item {\n            display: flex;\n            align-items: center;\n            gap: 15px;\n            padding: 15px;\n            background: var(--bg-light);\n            border-radius: 10px;\n            margin-bottom: 12px;\n            border-left: 4px solid var(--primary-blue);\n            transition: all 0.2s ease;\n        }\n        \n        .order-item:hover {\n            background: #eef2ff;\n        }\n        \n        .item-icon {\n            width: 45px;\n            height: 45px;\n            background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-light) 100%);\n            border-radius: 10px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: white;\n            font-size: 18px;\n        }\n        \n        .item-details {\n            flex: 1;\n        }\n        \n        .item-name {\n            font-weight: 600;\n            color: var(--text-dark);\n            font-size: 14px;\n            margin-bottom: 3px;\n        }\n        \n        .item-meta {\n            font-size: 12px;\n            color: var(--text-gray);\n        }\n        \n        .item-price {\n            color: var(--accent-orange);\n            font-weight: 700;\n            font-size: 16px;\n        }\n        \n        .item-remove {\n            background: none;\n            border: none;\n            color: #ef4444;\n            cursor: pointer;\n            padding: 8px;\n            font-size: 14px;\n            opacity: 0.6;\n            transition: all 0.2s;\n            border-radius: 6px;\n        }\n        \n        .item-remove:hover {\n            opacity: 1;\n            background: #fef2f2;\n        }\n        \n        .empty-cart {\n            text-align: center;\n            padding: 40px 20px;\n            color: var(--text-gray);\n        }\n        \n        .empty-cart i {\n            font-size: 60px;\n            color: #d1d5db;\n            margin-bottom: 15px;\n        }\n        \n        .empty-cart p {\n            margin-bottom: 20px;\n            font-size: 15px;\n        }\n        \n        .btn-back {\n            display: inline-flex;\n            align-items: center;\n            gap: 8px;\n            padding: 12px 24px;\n            background: var(--primary-blue);\n            color: white;\n            text-decoration: none;\n            border-radius: 8px;\n            font-weight: 600;\n            font-size: 14px;\n            transition: all 0.3s;\n        }\n        \n        .btn-back:hover {\n            background: var(--primary-blue-dark);\n            transform: translateY(-2px);\n        }\n        \n        \/* Order Total *\/\n        .order-total-section {\n            margin-top: 20px;\n            padding-top: 20px;\n            border-top: 2px dashed var(--border-color);\n        }\n        \n        .total-row {\n            display: flex;\n            justify-content: space-between;\n            margin-bottom: 10px;\n            font-size: 14px;\n            color: var(--text-gray);\n        }\n        \n        .total-row.final {\n            font-size: 22px;\n            font-weight: 700;\n            color: var(--text-dark);\n            margin-top: 15px;\n            padding-top: 15px;\n            border-top: 2px solid var(--primary-blue);\n        }\n        \n        .total-row.final .amount {\n            color: var(--accent-orange);\n        }\n        \n        \/* Security Section *\/\n        .security-section {\n            margin-top: 25px;\n            padding: 20px;\n            background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);\n            border-radius: 12px;\n            border: 1px solid #bbf7d0;\n        }\n        \n        .security-section h4 {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            color: #166534;\n            font-size: 14px;\n            margin-bottom: 10px;\n        }\n        \n        .security-section h4 i {\n            color: var(--success-green);\n            font-size: 20px;\n        }\n        \n        .security-features {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 15px;\n        }\n        \n        .security-feature {\n            display: flex;\n            align-items: center;\n            gap: 6px;\n            font-size: 12px;\n            color: #166534;\n        }\n        \n        .security-feature i {\n            color: var(--success-green);\n        }\n        \n        \/* Pay Button *\/\n        .btn-place-order {\n            width: 100%;\n            padding: 18px 24px;\n            background: linear-gradient(135deg, var(--success-green) 0%, #059669 100%);\n            color: white;\n            border: none;\n            border-radius: 12px;\n            font-size: 17px;\n            font-weight: 700;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            gap: 12px;\n            transition: all 0.3s ease;\n            box-shadow: 0 4px 15px rgba(16, 185, 129, 0.3);\n            margin-top: 20px;\n        }\n        \n        .btn-place-order:hover:not(:disabled) {\n            transform: translateY(-3px);\n            box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4);\n        }\n        \n        .btn-place-order:disabled {\n            background: linear-gradient(135deg, #9ca3af 0%, #6b7280 100%);\n            cursor: not-allowed;\n            transform: none;\n            box-shadow: none;\n        }\n        \n        .btn-place-order .spinner {\n            animation: spin 1s linear infinite;\n        }\n        \n        @keyframes spin {\n            from { transform: rotate(0deg); }\n            to { transform: rotate(360deg); }\n        }\n        \n        \/* Payment Methods *\/\n        .payment-methods {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            gap: 20px;\n            margin-top: 20px;\n            padding-top: 20px;\n            border-top: 1px solid var(--border-color);\n            flex-wrap: wrap;\n        }\n        \n        .payment-methods span {\n            font-size: 12px;\n            color: var(--text-gray);\n        }\n        \n        .payment-icons {\n            display: flex;\n            gap: 12px;\n            align-items: center;\n        }\n        \n        .payment-icons img {\n            height: 24px;\n            opacity: 0.7;\n            transition: opacity 0.2s;\n        }\n        \n        .payment-icons img:hover {\n            opacity: 1;\n        }\n        \n        \/* Status Messages *\/\n        .status-message {\n            padding: 15px 20px;\n            border-radius: 10px;\n            margin-bottom: 20px;\n            display: none;\n            align-items: center;\n            gap: 12px;\n            font-size: 14px;\n        }\n        \n        .status-message.error {\n            background: #fef2f2;\n            border: 1px solid #fecaca;\n            color: #dc2626;\n            display: flex;\n        }\n        \n        .status-message.success {\n            background: #f0fdf4;\n            border: 1px solid #bbf7d0;\n            color: #166534;\n            display: flex;\n        }\n        \n        .status-message.info {\n            background: #eff6ff;\n            border: 1px solid #bfdbfe;\n            color: #1e40af;\n            display: flex;\n        }\n        \n        .status-message i {\n            font-size: 18px;\n        }\n        \n        \/* Responsive *\/\n        @media (max-width: 900px) {\n            .checkout-container {\n                grid-template-columns: 1fr;\n            }\n            \n            .order-summary {\n                position: static;\n                order: -1;\n            }\n            \n            .form-row {\n                grid-template-columns: 1fr;\n            }\n        }\n        \n        @media (max-width: 480px) {\n            body {\n                padding: 10px;\n            }\n            \n            .checkout-form,\n            .order-summary {\n                padding: 20px;\n            }\n            \n            .checkout-header h1 {\n                font-size: 20px;\n            }\n            \n            .form-section-title {\n                font-size: 18px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <!-- Header -->\n    <div class=\"checkout-header\">\n        <div class=\"header-left\">\n            <a href=\"\/\">\n                <img decoding=\"async\" src=\"https:\/\/promotionexams.com\/wp-content\/uploads\/2025\/07\/CSS-ADDA.png\" alt=\"CSS Adda\">\n            <\/a>\n            <h1>Secure Checkout<\/h1>\n        <\/div>\n        <div class=\"header-right\">\n            <div class=\"secure-badge\">\n                <i class=\"fas fa-lock\"><\/i>\n                <span>256-bit SSL Secured<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"checkout-container\">\n        <!-- Left: Checkout Form -->\n        <div class=\"checkout-form\">\n            <h2 class=\"form-section-title\">\n                <i class=\"fas fa-user\"><\/i> Billing Details\n            <\/h2>\n            \n            <div id=\"statusMessage\" class=\"status-message\"><\/div>\n            \n            <form id=\"checkoutForm\">\n                <div class=\"form-row\">\n                    <div class=\"form-group\">\n                        <label>First Name <span class=\"required\">*<\/span><\/label>\n                        <input type=\"text\" name=\"first_name\" id=\"firstName\" required placeholder=\"Enter first name\">\n                    <\/div>\n                    <div class=\"form-group\">\n                        <label>Last Name <span class=\"required\">*<\/span><\/label>\n                        <input type=\"text\" name=\"last_name\" id=\"lastName\" required placeholder=\"Enter last name\">\n                    <\/div>\n                <\/div>\n                \n                <div class=\"form-group\">\n                    <label>Email Address <span class=\"required\">*<\/span><\/label>\n                    <input type=\"email\" name=\"email\" id=\"customerEmail\" required placeholder=\"your.email@example.com\">\n                    <div class=\"input-hint\">Order confirmation will be sent to this email<\/div>\n                <\/div>\n                \n                <div class=\"form-group\">\n                    <label>Phone Number <span class=\"required\">*<\/span><\/label>\n                    <input type=\"tel\" name=\"phone\" id=\"customerPhone\" required pattern=\"[0-9]{10}\" placeholder=\"10 digit mobile number\">\n                    <div class=\"input-hint\">For order updates via SMS<\/div>\n                <\/div>\n                \n                <div class=\"form-group\">\n                    <label>Address <span style=\"color: var(--text-gray); font-weight: normal;\">(Optional)<\/span><\/label>\n                    <input type=\"text\" name=\"address\" id=\"customerAddress\" placeholder=\"Street address, apartment, etc.\">\n                <\/div>\n                \n                <div class=\"form-row\">\n                    <div class=\"form-group\">\n                        <label>City<\/label>\n                        <input type=\"text\" name=\"city\" id=\"customerCity\" placeholder=\"City name\">\n                    <\/div>\n                    <div class=\"form-group\">\n                        <label>State<\/label>\n                        <select name=\"state\" id=\"customerState\">\n                            <option value=\"\">Select State<\/option>\n                            <option value=\"AN\">Andaman and Nicobar Islands<\/option>\n                            <option value=\"AP\">Andhra Pradesh<\/option>\n                            <option value=\"AR\">Arunachal Pradesh<\/option>\n                            <option value=\"AS\">Assam<\/option>\n                            <option value=\"BR\">Bihar<\/option>\n                            <option value=\"CH\">Chandigarh<\/option>\n                            <option value=\"CT\">Chhattisgarh<\/option>\n                            <option value=\"DL\">Delhi<\/option>\n                            <option value=\"GA\">Goa<\/option>\n                            <option value=\"GJ\">Gujarat<\/option>\n                            <option value=\"HR\">Haryana<\/option>\n                            <option value=\"HP\">Himachal Pradesh<\/option>\n                            <option value=\"JK\">Jammu and Kashmir<\/option>\n                            <option value=\"JH\">Jharkhand<\/option>\n                            <option value=\"KA\">Karnataka<\/option>\n                            <option value=\"KL\">Kerala<\/option>\n                            <option value=\"LA\">Ladakh<\/option>\n                            <option value=\"MP\">Madhya Pradesh<\/option>\n                            <option value=\"MH\">Maharashtra<\/option>\n                            <option value=\"MN\">Manipur<\/option>\n                            <option value=\"ML\">Meghalaya<\/option>\n                            <option value=\"MZ\">Mizoram<\/option>\n                            <option value=\"NL\">Nagaland<\/option>\n                            <option value=\"OR\">Odisha<\/option>\n                            <option value=\"PY\">Puducherry<\/option>\n                            <option value=\"PB\">Punjab<\/option>\n                            <option value=\"RJ\">Rajasthan<\/option>\n                            <option value=\"SK\">Sikkim<\/option>\n                            <option value=\"TN\">Tamil Nadu<\/option>\n                            <option value=\"TG\">Telangana<\/option>\n                            <option value=\"TR\">Tripura<\/option>\n                            <option value=\"UP\">Uttar Pradesh<\/option>\n                            <option value=\"UT\">Uttarakhand<\/option>\n                            <option value=\"WB\">West Bengal<\/option>\n                        <\/select>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"form-group\" style=\"max-width: 200px;\">\n                    <label>PIN Code<\/label>\n                    <input type=\"text\" name=\"postcode\" id=\"customerPincode\" pattern=\"[0-9]{6}\" placeholder=\"6 digits\" maxlength=\"6\">\n                <\/div>\n            <\/form>\n        <\/div>\n        \n        <!-- Right: Order Summary -->\n        <div class=\"order-summary\">\n            <h2><i class=\"fas fa-shopping-cart\"><\/i> Order Summary<\/h2>\n            \n            <div class=\"order-items\" id=\"orderItems\">\n                <!-- Cart items loaded here -->\n            <\/div>\n            \n            <div class=\"order-total-section\" id=\"orderTotalSection\" style=\"display: none;\">\n                <div class=\"total-row\">\n                    <span>Subtotal<\/span>\n                    <span id=\"subtotal\">\u20b90<\/span>\n                <\/div>\n                <div class=\"total-row\">\n                    <span>Discount<\/span>\n                    <span style=\"color: var(--success-green);\">-\u20b90<\/span>\n                <\/div>\n                <div class=\"total-row final\">\n                    <span>Total<\/span>\n                    <span class=\"amount\" id=\"orderTotal\">\u20b90<\/span>\n                <\/div>\n            <\/div>\n            \n            <div class=\"security-section\">\n                <h4><i class=\"fas fa-shield-alt\"><\/i> Secure Checkout<\/h4>\n                <div class=\"security-features\">\n                    <div class=\"security-feature\">\n                        <i class=\"fas fa-check-circle\"><\/i>\n                        <span>SSL Encrypted<\/span>\n                    <\/div>\n                    <div class=\"security-feature\">\n                        <i class=\"fas fa-check-circle\"><\/i>\n                        <span>Safe Payment<\/span>\n                    <\/div>\n                    <div class=\"security-feature\">\n                        <i class=\"fas fa-check-circle\"><\/i>\n                        <span>Instant Access<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <button class=\"btn-place-order\" id=\"btnPlaceOrder\" type=\"button\">\n                <i class=\"fas fa-lock\"><\/i>\n                <span>Pay Securely<\/span>\n            <\/button>\n            \n            <div class=\"payment-methods\">\n                <span>Powered by<\/span>\n                <div class=\"payment-icons\">\n                    <img decoding=\"async\" src=\"https:\/\/razorpay.com\/assets\/razorpay-logo.svg\" alt=\"Razorpay\" style=\"height: 20px;\">\n                    <img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/5\/5e\/Visa_Inc._logo.svg\/200px-Visa_Inc._logo.svg.png\" alt=\"Visa\">\n                    <img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/2\/2a\/Mastercard-logo.svg\/200px-Mastercard-logo.svg.png\" alt=\"Mastercard\">\n                    <img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/e\/e1\/UPI-Logo-vector.svg\/200px-UPI-Logo-vector.svg.png\" alt=\"UPI\">\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        \/\/ =====================================================\n        \/\/ \u2b50 CONFIGURATION - UPDATE THESE VALUES!\n        \/\/ =====================================================\n        const CONFIG = {\n            \/\/ Your Razorpay Key ID (from Razorpay Dashboard)\n            razorpayKey: \"rzp_live_VjubWPpt76z9Jb\",\n            \n            \/\/ Your WordPress Site URL\n            siteUrl: \"https:\/\/promotionexams.com\",\n            \n            \/\/ WooCommerce REST API Credentials\n            \/\/ Create at: WooCommerce \u2192 Settings \u2192 Advanced \u2192 REST API\n            \/\/ Permissions: Read\/Write\n            wcConsumerKey: \"ck_YOUR_CONSUMER_KEY_HERE\",      \/\/ \u2b05\ufe0f REPLACE THIS\n            wcConsumerSecret: \"cs_YOUR_CONSUMER_SECRET_HERE\", \/\/ \u2b05\ufe0f REPLACE THIS\n            \n            \/\/ Success page URL\n            successPage: \"\/order-success\",\n            \n            \/\/ Test series page URL (fallback for Browse More)\n            testSeriesPage: \"\/test-series\"\n        };\n        \n        \/\/ =====================================================\n        \/\/ CART STATE\n        \/\/ =====================================================\n        let cart = JSON.parse(localStorage.getItem('cssAddaCart')) || [];\n        let createdOrderId = null;\n        \n        \/\/ =====================================================\n        \/\/ INITIALIZE\n        \/\/ =====================================================\n        document.addEventListener('DOMContentLoaded', function() {\n            console.log('\ud83d\uded2 Cart loaded:', cart);\n            displayOrderSummary();\n            \n            \/\/ Attach event listener to pay button\n            document.getElementById('btnPlaceOrder').addEventListener('click', handleCheckout);\n        });\n        \n        \/\/ =====================================================\n        \/\/ DISPLAY ORDER SUMMARY\n        \/\/ =====================================================\n        function displayOrderSummary() {\n            const orderItems = document.getElementById('orderItems');\n            const orderTotalSection = document.getElementById('orderTotalSection');\n            const btnPlaceOrder = document.getElementById('btnPlaceOrder');\n            \n            \/\/ Check if cart is empty\n            if (!cart || cart.length === 0) {\n                orderItems.innerHTML = `\n                    <div class=\"empty-cart\">\n                        <i class=\"fas fa-shopping-cart\"><\/i>\n                        <p>Your cart is empty<\/p>\n                        <a href=\"${CONFIG.siteUrl}${CONFIG.testSeriesPage}\" class=\"btn-back\">\n                            <i class=\"fas fa-arrow-left\"><\/i> Browse Test Series\n                        <\/a>\n                    <\/div>\n                `;\n                orderTotalSection.style.display = 'none';\n                btnPlaceOrder.disabled = true;\n                btnPlaceOrder.innerHTML = '<i class=\"fas fa-shopping-cart\"><\/i> Cart is Empty';\n                return;\n            }\n            \n            \/\/ Display cart items\n            let itemsHTML = '';\n            cart.forEach((item, index) => {\n                itemsHTML += `\n                    <div class=\"order-item\">\n                        <div class=\"item-icon\">\n                            <i class=\"fas fa-file-alt\"><\/i>\n                        <\/div>\n                        <div class=\"item-details\">\n                            <div class=\"item-name\">${item.name}<\/div>\n                            <div class=\"item-meta\">Test Series \u2022 1 Year Access<\/div>\n                        <\/div>\n                        <div class=\"item-price\">\u20b9${item.price}<\/div>\n                        <button class=\"item-remove\" onclick=\"removeFromCart(${index})\" title=\"Remove item\">\n                            <i class=\"fas fa-times\"><\/i>\n                        <\/button>\n                    <\/div>\n                `;\n            });\n            \n            orderItems.innerHTML = itemsHTML;\n            \n            \/\/ Calculate totals\n            const subtotal = cart.reduce((sum, item) => sum + parseFloat(item.price), 0);\n            \n            document.getElementById('subtotal').textContent = `\u20b9${subtotal.toFixed(2)}`;\n            document.getElementById('orderTotal').textContent = `\u20b9${subtotal.toFixed(2)}`;\n            \n            orderTotalSection.style.display = 'block';\n            btnPlaceOrder.disabled = false;\n        }\n        \n        \/\/ =====================================================\n        \/\/ REMOVE ITEM FROM CART\n        \/\/ =====================================================\n        function removeFromCart(index) {\n            cart.splice(index, 1);\n            localStorage.setItem('cssAddaCart', JSON.stringify(cart));\n            displayOrderSummary();\n            showStatus('Item removed from cart', 'info');\n        }\n        \n        \/\/ =====================================================\n        \/\/ SHOW STATUS MESSAGE\n        \/\/ =====================================================\n        function showStatus(message, type = 'info') {\n            const statusDiv = document.getElementById('statusMessage');\n            const icons = {\n                'error': 'fas fa-exclamation-circle',\n                'success': 'fas fa-check-circle',\n                'info': 'fas fa-info-circle'\n            };\n            statusDiv.innerHTML = `<i class=\"${icons[type]}\"><\/i> ${message}`;\n            statusDiv.className = `status-message ${type}`;\n            \n            \/\/ Scroll to status message\n            statusDiv.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        }\n        \n        function hideStatus() {\n            document.getElementById('statusMessage').className = 'status-message';\n        }\n        \n        \/\/ =====================================================\n        \/\/ MAIN CHECKOUT HANDLER\n        \/\/ =====================================================\n        async function handleCheckout() {\n            const form = document.getElementById('checkoutForm');\n            const btn = document.getElementById('btnPlaceOrder');\n            \n            \/\/ Validate form\n            if (!form.checkValidity()) {\n                form.reportValidity();\n                showStatus('Please fill all required fields correctly', 'error');\n                return;\n            }\n            \n            \/\/ Check cart\n            if (!cart || cart.length === 0) {\n                showStatus('Your cart is empty!', 'error');\n                return;\n            }\n            \n            \/\/ Disable button\n            btn.disabled = true;\n            btn.innerHTML = '<i class=\"fas fa-spinner spinner\"><\/i> Creating Order...';\n            hideStatus();\n            \n            try {\n                \/\/ Step 1: Create WooCommerce Order\n                showStatus('Creating your order...', 'info');\n                const order = await createWooCommerceOrder();\n                \n                if (!order || !order.id) {\n                    throw new Error('Failed to create order. Please try again.');\n                }\n                \n                createdOrderId = order.id;\n                console.log('\u2705 Order created:', order.id);\n                \n                \/\/ Step 2: Initiate Razorpay Payment\n                showStatus('Redirecting to payment gateway...', 'info');\n                await initiateRazorpayPayment(order);\n                \n            } catch (error) {\n                console.error('\u274c Checkout Error:', error);\n                showStatus(error.message || 'Something went wrong. Please try again.', 'error');\n                btn.disabled = false;\n                btn.innerHTML = '<i class=\"fas fa-lock\"><\/i> <span>Pay Securely<\/span>';\n            }\n        }\n        \n        \/\/ =====================================================\n        \/\/ CREATE WOOCOMMERCE ORDER\n        \/\/ =====================================================\n        async function createWooCommerceOrder() {\n            \/\/ Get customer data\n            const customerData = {\n                first_name: document.getElementById('firstName').value.trim(),\n                last_name: document.getElementById('lastName').value.trim(),\n                email: document.getElementById('customerEmail').value.trim(),\n                phone: document.getElementById('customerPhone').value.trim(),\n                address_1: document.getElementById('customerAddress').value.trim() || '',\n                city: document.getElementById('customerCity').value.trim() || '',\n                state: document.getElementById('customerState').value || '',\n                postcode: document.getElementById('customerPincode').value.trim() || '',\n                country: 'IN'\n            };\n            \n            \/\/ Prepare line items\n            const lineItems = cart.map(item => ({\n                product_id: parseInt(item.wcId) || parseInt(item.id) || 0,\n                quantity: 1\n            })).filter(item => item.product_id > 0);\n            \n            \/\/ If no valid WooCommerce product IDs, create as custom items\n            const orderData = {\n                payment_method: 'razorpay',\n                payment_method_title: 'Razorpay',\n                set_paid: false,\n                status: 'pending',\n                billing: customerData,\n                shipping: customerData,\n                line_items: lineItems.length > 0 ? lineItems : undefined,\n                fee_lines: lineItems.length === 0 ? cart.map(item => ({\n                    name: item.name,\n                    total: item.price.toString()\n                })) : undefined,\n                meta_data: [\n                    { key: '_custom_checkout', value: 'yes' },\n                    { key: '_checkout_source', value: 'cssadda_custom' }\n                ]\n            };\n            \n            console.log('\ud83d\udce6 Creating order with data:', orderData);\n            \n            const response = await fetch(`${CONFIG.siteUrl}\/wp-json\/wc\/v3\/orders`, {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/json',\n                    'Authorization': 'Basic ' + btoa(CONFIG.wcConsumerKey + ':' + CONFIG.wcConsumerSecret)\n                },\n                body: JSON.stringify(orderData)\n            });\n            \n            if (!response.ok) {\n                const errorData = await response.json();\n                console.error('WooCommerce API Error:', errorData);\n                throw new Error(errorData.message || 'Failed to create order');\n            }\n            \n            return await response.json();\n        }\n        \n        \/\/ =====================================================\n        \/\/ RAZORPAY PAYMENT\n        \/\/ =====================================================\n        function initiateRazorpayPayment(order) {\n            return new Promise((resolve, reject) => {\n                const btn = document.getElementById('btnPlaceOrder');\n                const totalAmount = parseFloat(order.total);\n                \n                const options = {\n                    key: CONFIG.razorpayKey,\n                    amount: Math.round(totalAmount * 100), \/\/ Amount in paise\n                    currency: \"INR\",\n                    name: \"CSS Adda\",\n                    description: `Order #${order.id} - Test Series`,\n                    image: \"https:\/\/promotionexams.com\/wp-content\/uploads\/2025\/07\/CSS-ADDA.png\",\n                    \n                    prefill: {\n                        name: `${order.billing.first_name} ${order.billing.last_name}`,\n                        email: order.billing.email,\n                        contact: order.billing.phone\n                    },\n                    \n                    notes: {\n                        wc_order_id: order.id.toString(),\n                        order_key: order.order_key,\n                        customer_email: order.billing.email\n                    },\n                    \n                    theme: {\n                        color: \"#1e3a8a\"\n                    },\n                    \n                    \/\/ \u2b50 PAYMENT SUCCESS HANDLER\n                    handler: async function(response) {\n                        console.log('\u2705 Payment Success:', response);\n                        \n                        btn.innerHTML = '<i class=\"fas fa-spinner spinner\"><\/i> Confirming Payment...';\n                        showStatus('Payment successful! Confirming your order...', 'success');\n                        \n                        try {\n                            \/\/ Update order status\n                            await updateOrderStatus(order.id, response.razorpay_payment_id);\n                            \n                            \/\/ Clear cart\n                            localStorage.removeItem('cssAddaCart');\n                            \n                            \/\/ Save order details for success page\n                            localStorage.setItem('lastOrder', JSON.stringify({\n                                orderId: order.id,\n                                paymentId: response.razorpay_payment_id,\n                                total: order.total,\n                                items: cart,\n                                orderDate: new Date().toISOString(),\n                                customerName: `${order.billing.first_name} ${order.billing.last_name}`,\n                                customerEmail: order.billing.email\n                            }));\n                            \n                            \/\/ Redirect to success page\n                            const successUrl = `${CONFIG.siteUrl}${CONFIG.successPage}?order_id=${order.id}&payment_id=${response.razorpay_payment_id}`;\n                            console.log('\ud83c\udfaf Redirecting to:', successUrl);\n                            window.location.href = successUrl;\n                            \n                            resolve(response);\n                        } catch (error) {\n                            console.error('Error updating order:', error);\n                            \/\/ Still redirect even if update fails (webhook will handle it)\n                            window.location.href = `${CONFIG.siteUrl}${CONFIG.successPage}?order_id=${order.id}&payment_id=${response.razorpay_payment_id}`;\n                        }\n                    },\n                    \n                    \/\/ Payment window closed\n                    modal: {\n                        ondismiss: function() {\n                            console.log('Payment cancelled by user');\n                            btn.disabled = false;\n                            btn.innerHTML = '<i class=\"fas fa-lock\"><\/i> <span>Pay Securely<\/span>';\n                            showStatus('Payment cancelled. Your order has been saved - you can try again.', 'error');\n                            reject(new Error('Payment cancelled'));\n                        }\n                    }\n                };\n                \n                \/\/ Create Razorpay instance\n                const rzp = new Razorpay(options);\n                \n                \/\/ Handle payment failure\n                rzp.on('payment.failed', function(response) {\n                    console.error('\u274c Payment Failed:', response.error);\n                    btn.disabled = false;\n                    btn.innerHTML = '<i class=\"fas fa-lock\"><\/i> <span>Pay Securely<\/span>';\n                    showStatus(`Payment failed: ${response.error.description}. Please try again.`, 'error');\n                    reject(new Error(response.error.description));\n                });\n                \n                \/\/ Open Razorpay checkout\n                rzp.open();\n                btn.innerHTML = '<i class=\"fas fa-spinner spinner\"><\/i> Processing Payment...';\n            });\n        }\n        \n        \/\/ =====================================================\n        \/\/ UPDATE ORDER STATUS AFTER PAYMENT\n        \/\/ =====================================================\n        async function updateOrderStatus(orderId, paymentId) {\n            const updateData = {\n                status: 'processing',\n                transaction_id: paymentId,\n                set_paid: true,\n                meta_data: [\n                    { key: '_razorpay_payment_id', value: paymentId },\n                    { key: '_payment_completed_at', value: new Date().toISOString() }\n                ]\n            };\n            \n            const response = await fetch(`${CONFIG.siteUrl}\/wp-json\/wc\/v3\/orders\/${orderId}`, {\n                method: 'PUT',\n                headers: {\n                    'Content-Type': 'application\/json',\n                    'Authorization': 'Basic ' + btoa(CONFIG.wcConsumerKey + ':' + CONFIG.wcConsumerSecret)\n                },\n                body: JSON.stringify(updateData)\n            });\n            \n            if (!response.ok) {\n                const errorData = await response.json();\n                console.error('Failed to update order:', errorData);\n                throw new Error('Failed to confirm order');\n            }\n            \n            console.log('\u2705 Order updated to processing');\n            return await response.json();\n        }\n    <\/script>\n\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Checkout &#8211; CSS Adda Secure Checkout 256-bit SSL Secured Billing Details First Name * Last Name * Email Address * [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[49],"tags":[],"class_list":["post-625","page","type-page","status-publish","hentry","category-website-specific"],"_links":{"self":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=625"}],"version-history":[{"count":18,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/625\/revisions"}],"predecessor-version":[{"id":5570,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/625\/revisions\/5570"}],"wp:attachment":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}