Taxi Rates

Flexible Taxi Rates

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua erat libero condimentum metus.

Standard

Lorem ipsum dolor sit amet consectetur adipiscing elit utelit tellus.

Initial Charge $3.50

Dist. Allowance 700 m
Time Allowance 120 sec
Up to 15 kms $1.45/km
Extra Passangers $1.40/km
Booking Fee $0.62/min

Initial Charge $3.50

Premium

Lorem ipsum dolor sit amet consectetur adipiscing elit utelit tellus.

Initial Charge $3.50

Dist. Allowance 700 m
Time Allowance 120 sec
Up to 15 kms $1.45/km
Extra Passangers $1.40/km
Booking Fee $0.62/min

Initial Charge $3.50

Additional
Lorem ipsum dolor sit amet consectetur adipiscing elit utelit tellus.

Initial Charge $3.50

Dist. Allowance 700 m
Time Allowance 120 sec
Up to 15 kms $1.45/km
Extra Passangers $1.40/km
Booking Fee $0.62/min

Initial Charge $3.50

Taxi Rates

Hire a Driver

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua erat libero condimentum metus.

Halsey Meyer

Taxi Leader

Rusty Walton

Taxi Technician

Jerome Howard

Taxi Driver
// 1. Initialisation corrigée window.initAutocomplete = function() { var iDep = document.getElementById('input-depart'); var iArr = document.getElementById('input-arrivee'); if (!iDep || !iArr) return; // On garde l'ancien système mais on s'assure qu'il ne crash pas var opts = { componentRestrictions: {country: 'fr'}, fields: ['formatted_address', 'geometry', 'name'], types: ['geocode', 'establishment'] }; try { autocompleteDepart = new google.maps.places.Autocomplete(iDep, opts); autocompleteArrivee = new google.maps.places.Autocomplete(iArr, opts); autocompleteDepart.addListener('place_changed', function() { placeDepart = autocompleteDepart.getPlace(); console.log("Départ sélectionné :", placeDepart.formatted_address); }); autocompleteArrivee.addListener('place_changed', function() { placeArrivee = autocompleteArrivee.getPlace(); console.log("Arrivée sélectionnée :", placeArrivee.formatted_address); }); } catch (e) { console.warn("Note: Google Maps utilise l'ancienne version, mais ça fonctionne."); } // Liaison des boutons document.getElementById('btn-calculer').onclick = handleCalculer; document.getElementById('btn-maintenant').onclick = function() { setMode('maintenant'); }; document.getElementById('btn-planifier').onclick = function() { setMode('planifier'); }; }; // 2. Fonction de paiement BLINDÉE async function lancerPaiementStripe() { if (!dernierResultat) { alert("Erreur : Aucun calcul n'a été effectué."); return; } var btn = document.getElementById('btn-payer-ligne'); btn.textContent = 'Vérification...'; btn.disabled = true; console.log("Tentative d'envoi à Make.com..."); try { const response = await fetch(MAKE_WEBHOOK_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(dernierResultat) }); console.log("Réponse reçue de Make, statut :", response.status); if (!response.ok) { throw new Error("Le serveur Make a répondu avec une erreur " + response.status); } const data = await response.json(); console.log("Données JSON reçues :", data); if (data.url) { console.log("Redirection vers Stripe..."); window.location.href = data.url; } else { console.error("Contenu de data reçu :", data); throw new Error("Make n'a pas renvoyé de lien Stripe. Vérifie ton module 3 (Webhook Response)."); } } catch (error) { console.error("ERREUR FINALE :", error); alert("Détail de l'erreur : " + error.message); btn.textContent = 'Payer en ligne'; btn.disabled = false; } }