{"id":3672,"date":"2026-05-15T12:24:08","date_gmt":"2026-05-15T11:24:08","guid":{"rendered":"https:\/\/new2.flyovertheworld.com\/buchung-erfolgreich\/"},"modified":"2026-06-10T08:06:56","modified_gmt":"2026-06-10T07:06:56","slug":"buchung-erfolgreich","status":"publish","type":"page","link":"https:\/\/flyovertheworld.com\/de\/buchung-erfolgreich\/","title":{"rendered":"Buchung erfolgreich"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3672\" class=\"elementor elementor-3672 elementor-2842\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72a4c13d e-flex e-con-boxed e-con e-parent\" data-id=\"72a4c13d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fd18303 elementor-widget elementor-widget-html\" data-id=\"fd18303\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>#success-content, #error-content {\n  display:none;\n}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fe75efd e-flex e-con-boxed e-con e-parent\" data-id=\"fe75efd\" data-element_type=\"container\" data-e-type=\"container\" id=\"success-content\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-97c3c29 elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"97c3c29\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-check-circle\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tIhre Buchung ist best\u00e4tigt\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tBuchungsnummer: <strong id=\"booking-ref\">...<\/strong>\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4720d81 elementor-widget elementor-widget-html\" data-id=\"4720d81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t    <div id=\"passenger-result\" style=\"margin-top:15px; font-weight:500;\"><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-625a669 e-con-full e-flex e-con e-child\" data-id=\"625a669\" data-element_type=\"container\" data-e-type=\"container\" id=\"options-passengers\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41b7848 elementor-widget elementor-widget-text-editor\" data-id=\"41b7848\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Die Namen und das Gewicht der Passagiere m\u00fcssen 48 Stunden vor dem Abflug best\u00e4tigt werden. <br>Sie k\u00f6nnen diesen Schritt entweder jetzt abschlie\u00dfen oder zu einem sp\u00e4teren Zeitpunkt durchf\u00fchren.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64a0ea7 elementor-widget elementor-widget-html\" data-id=\"64a0ea7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n             <button onclick=\"showPassengerForm()\">\n Jetzt abschlie\u00dfen\n            <\/button>\n            <br\/>            <button onclick=\"skipPassengerDetails()\" style=\"background: #ddd; color:#191919; margin-top:10px\">\n Sp\u00e4ter erledigen\n            <\/button> \n\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-be7c687 e-flex e-con-boxed e-con e-parent\" data-id=\"be7c687\" data-element_type=\"container\" data-e-type=\"container\" id=\"error-content\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-241600d elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"241600d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-exclamation-circle\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tHoppla, etwas ist schiefgelaufen\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tBitte kontaktieren Sie uns unter hello@flyovertheworld.com, <br \/>und geben Sie diese Buchungsnummer an: <strong id=\"booking-ref-error\">...<\/strong>\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ff57b80 elementor-widget elementor-widget-html\" data-id=\"ff57b80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"error-message\" style=\"color:red; margin-top:20px; font-size:16px;\">Fehlermeldung<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c7bbab9 e-flex e-con-boxed e-con e-parent\" data-id=\"c7bbab9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d8b0e38 elementor-widget elementor-widget-html\" data-id=\"d8b0e38\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t    <!-- Passenger Form -->\n    <div id=\"passenger-form\" style=\"display:none; margin-top:30px; text-align:left; max-width:600px; margin-left:auto; margin-right:auto;\">\n        <h3>Passagierdaten<\/h3>\n        <div id=\"passenger-fields\"><\/div>\n        <button onclick=\"submitPostPaymentPassengers()\">\n  Passagierdaten speichern\n        <\/button>\n    <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-856982e e-flex e-con-boxed e-con e-parent\" data-id=\"856982e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-51a5fe9 elementor-widget elementor-widget-html\" data-id=\"51a5fe9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>const urlParams = new URLSearchParams(window.location.search);\nconst reference = urlParams.get('reference');\nconst accessKey = urlParams.get('key');\n\nif (reference && accessKey) {\n    fetch('\/wp-json\/bookings\/v1\/verify-booking', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({ \n            reference: reference, \n            access_key: accessKey \n        })\n    })\n    .then(res => res.json())\n    .then(data => {\n        console.log('Verification response:', data);   \/\/ for debugging\n\n        if (data.status === 'confirmed') {\n            document.getElementById('booking-ref').textContent = data.booking_reference || reference;\n            document.getElementById('success-content').style.display = 'block';\n            passengerCount = parseInt(data.passenger_count);\n        } else {\n            document.getElementById('booking-ref-error').textContent =  reference;\n            document.getElementById('error-message').innerHTML = 'Invalid or expired link.';\n            document.getElementById('error-content').style.display = 'block';\n        }\n    })\n} else {\n    document.getElementById('booking-ref-error').textContent =  reference;\n    document.getElementById('error-message').innerHTML = 'Missing booking reference.';\n    document.getElementById('error-content').style.display = 'block';\n}\n\n\/\/ Passenger form functions\nfunction showPassengerForm() {\n    document.getElementById('options-passengers').style.display = 'none';\n    document.getElementById('passenger-form').style.display = 'block';\n    renderDynamicPassengerForm();\n}\n\nfunction renderDynamicPassengerForm() {\n    const count = passengerCount;\n    let html = '';\n    for (let i = 1; i <= count; i++) {\n        html += `\n            <div style=\"margin-bottom:15px;\"><strong>Passenger ${i}<\/strong><br\/><input type=\"text\" id=\"p${i}-first\" placeholder=\"First name\"><input type=\"text\" id=\"p${i}-last\" placeholder=\"Last name\"><input type=\"number\" id=\"p${i}-weight\" placeholder=\"Weight in kg\" style=\"margin-top: 5px; width: 150px;\"><\/div>`;\n    }\n    document.getElementById('passenger-fields').innerHTML = html;\n}\n\nfunction validatePassengerForm() {\n    let isValid = true;\n    const resultDiv = document.getElementById('passenger-result');\n    \n    \/\/ Clear previous errors\n    document.querySelectorAll('.fotw-passenger-error').forEach(el => el.remove());\n    \n    const count = passengerCount;\n    for (let i = 1; i <= count; i++) {\n        const first = document.getElementById(`p${i}-first`);\n        const last = document.getElementById(`p${i}-last`);\n        const weight = document.getElementById(`p${i}-weight`);\n        \n        if (!first.value.trim()) {\n            isValid = false;\n            showPassengerError(first, 'First name is required');\n        }\n        if (!last.value.trim()) {\n            isValid = false;\n            showPassengerError(last, 'Last name is required');\n        }\n        if (!weight.value || parseFloat(weight.value) <= 0) {\n            isValid = false;\n            showPassengerError(weight, 'Valid weight is required');\n        }\n    }\n    \n    if (!isValid) {\n        resultDiv.innerHTML = '<p style=\"color:#e11d48;\">Please fill in all required passenger details.<\/p>';\n    } else {\n        resultDiv.innerHTML = '';\n    }\n    \n    return isValid;\n}\n\nfunction showPassengerError(field, message) {\n    field.style.borderColor = '#e11d48';\n    field.style.borderWidth = '2px';\n    \n    const error = document.createElement('div');\n    error.className = 'fotw-passenger-error';\n    error.style.color = '#e11d48';\n    error.style.fontSize = '0.85rem';\n    error.style.marginTop = '4px';\n    error.textContent = message;\n    field.parentNode.appendChild(error);\n}\n\nasync function submitPostPaymentPassengers() {\n    if (!validatePassengerForm()) {\n        return;\n    }\n    \n    const passengers = [];\n    const count = passengerCount;\n    for (let i = 1; i <= count; i++) {\n        passengers.push({\n            first_name: document.getElementById(`p${i}-first`).value.trim(),\n            last_name: document.getElementById(`p${i}-last`).value.trim(),\n            weight_kg: parseFloat(document.getElementById(`p${i}-weight`).value) || null\n        });\n    }\n    \n    const resultDiv = document.getElementById('passenger-result');\n    resultDiv.innerHTML = '<p style=\"color:#191919;\">Saving passenger details...<\/p>';\n    \n    try {\n        const res = await fetch('\/wp-json\/bookings\/v1\/update-passengers', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify({\n                reference: reference,\n                access_key: accessKey,\n                passengers: passengers\n            })\n        });\n        const data = await res.json();\n        if (data.status === 'success') {\n            resultDiv.innerHTML = `<p\"><span style=\"color:#7FCD1F;\">\u2705 <\/span>Passenger details confirmed and saved.<\/p><p>You will receive a confirmation by e-mail shortly.<\/p>`;\n            document.getElementById('passenger-form').style.display = 'none';\n        } else {\n            resultDiv.innerHTML = `<p style=\"color:red;\">Oops, something went wrong: ${data.error || 'Unknown error'}<\/p>`;\n        }\n    } catch (e) {\n        resultDiv.innerHTML = '<p style=\"color:red;\">Oops, something went wrong. Please try again.<\/p>';\n    }\n}\n\nasync function xxsubmitPostPaymentPassengers() {\n    const passengers = [];\n    const count = passengerCount;\n    for (let i = 1; i <= count; i++) {\n        passengers.push({\n            first_name: document.getElementById(`p${i}-first`).value.trim(),\n            last_name: document.getElementById(`p${i}-last`).value.trim(),\n            weight_kg: parseFloat(document.getElementById(`p${i}-weight`).value) || null\n        });\n    }\n\n    const resultDiv = document.getElementById('passenger-result');\n    resultDiv.innerHTML = '<p style=\"color:#191919;\">Saving passenger details...<\/p>';\n\n    try {\n        const res = await fetch('\/wp-json\/bookings\/v1\/update-passengers', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify({ \n                reference: reference, \n                access_key: accessKey,\n                passengers: passengers \n            })\n        });\n        const data = await res.json();\n\n        if (data.status === 'success') {\n            resultDiv.innerHTML = `<p\"><span style=\"color:#7FCD1F;\">\u2705 <\/span>Passenger details confirmed and saved.<\/p><p>You will receive a confirmation by e-mail shortly.<\/p>`;\n            document.getElementById('passenger-form').style.display = 'none';\n        } else {\n            resultDiv.innerHTML = `<p style=\"color:red;\">Oops, something went wrong: ${data.error || 'Unknown error'}<\/p>`;\n        }\n    } catch (e) {\n        resultDiv.innerHTML = '<p style=\"color:red;\">Oops, something went wrong. Please try again.<\/p>';\n    }\n}\n\nfunction skipPassengerDetails() {\n    document.getElementById('options-passengers').style.display = 'none';\n    document.getElementById('passenger-form').style.display = 'none';\n    document.getElementById('passenger-result').innerHTML = '<p style=\"color:#191919;\">Thank you! You can confirm passenger details later via the link in the confirmation e-mail.<\/p>';\n}\n<\/script>\t\t\t\t<\/div>\n\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>Ihre Buchung ist best\u00e4tigt Buchungsnummer: &#8230; Die Namen und das Gewicht der Passagiere m\u00fcssen 48 Stunden vor dem Abflug best\u00e4tigt werden. Sie k\u00f6nnen diesen Schritt entweder jetzt abschlie\u00dfen oder zu einem sp\u00e4teren Zeitpunkt durchf\u00fchren. Jetzt abschlie\u00dfen Sp\u00e4ter erledigen Hoppla, etwas ist schiefgelaufen Bitte kontaktieren Sie uns unter hello@flyovertheworld.com, und geben Sie diese Buchungsnummer an: &#8230; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","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":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":""},"class_list":["post-3672","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/pages\/3672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/comments?post=3672"}],"version-history":[{"count":1,"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/pages\/3672\/revisions"}],"predecessor-version":[{"id":3673,"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/pages\/3672\/revisions\/3673"}],"wp:attachment":[{"href":"https:\/\/flyovertheworld.com\/de\/wp-json\/wp\/v2\/media?parent=3672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}