
{"id":4671,"date":"2026-05-15T12:24:08","date_gmt":"2026-05-15T11:24:08","guid":{"rendered":"https:\/\/web1.flyovertheworld.com\/%e9%a2%84%e8%ae%a2%e6%88%90%e5%8a%9f\/"},"modified":"2026-08-16T19:10:26","modified_gmt":"2026-08-16T18:10:26","slug":"%e9%a2%84%e8%ae%a2%e6%88%90%e5%8a%9f","status":"publish","type":"page","link":"https:\/\/flyovertheworld.com\/zh-hans\/%e9%a2%84%e8%ae%a2%e6%88%90%e5%8a%9f\/","title":{"rendered":"\u9884\u8ba2\u6210\u529f"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4671\" class=\"elementor elementor-4671 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\t<style>#success-content, #error-content {\n  display:none;\n}\n<\/style>\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\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<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-check-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"><\/path><\/svg>\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\t\u60a8\u7684\u9884\u8ba2\u5df2\u786e\u8ba4\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\t\u9884\u8ba2\u7f16\u53f7\uff1a<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 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\t    <div id=\"passenger-result\" style=\"margin-top:15px; font-weight:500;\"><\/div>\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\t\t\t\t\t<p style=\"text-align: center;\">\u4e58\u5ba2\u59d3\u540d\u548c\u4f53\u91cd\u9700\u5728\u51fa\u53d1\u524d 48 \u5c0f\u65f6\u786e\u8ba4\u3002 <br>\u60a8\u53ef\u4ee5\u73b0\u5728\u5b8c\u6210\u6b64\u6b65\u9aa4\uff0c\u4e5f\u53ef\u4ee5\u7a0d\u540e\u5904\u7406\u3002<\/p>\t\t\t\t\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\t\n             <button onclick=\"showPassengerForm()\">\n \u7acb\u5373\u5b8c\u6210\n <\/button>\n <br\/> <button onclick=\"skipPassengerDetails()\" style=\"background: #ddd; color:#191919; margin-top:10px\">\n \u7a0d\u540e\u5904\u7406\n <\/button> \n\n\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\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<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-exclamation-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"><\/path><\/svg>\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\t\u62b1\u6b49\uff0c\u51fa\u9519\u4e86\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\t\u8bf7\u901a\u8fc7 hello@flyovertheworld.com \u4e0e\u6211\u4eec\u8054\u7cfb\uff0c<br \/>\u5e76\u63d0\u4f9b\u6b64\u9884\u8ba2\u7f16\u53f7\uff1a<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 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\t<div id=\"error-message\" style=\"color:red; margin-top:20px; font-size:16px;\">\u9519\u8bef\u4fe1\u606f<\/div>\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\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>\u4e58\u5ba2\u8be6\u60c5<\/h3>\n        <div id=\"passenger-fields\"><\/div>\n        <button onclick=\"submitPostPaymentPassengers()\">\n \u4fdd\u5b58\u4e58\u5ba2\u8be6\u60c5\n        <\/button>\n    <\/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\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u60a8\u7684\u9884\u8ba2\u5df2\u786e\u8ba4 \u9884\u8ba2\u7f16\u53f7\uff1a&#8230; \u4e58\u5ba2\u59d3\u540d\u548c\u4f53\u91cd\u9700\u5728\u51fa\u53d1\u524d 48 \u5c0f\u65f6\u786e\u8ba4\u3002 \u60a8\u53ef\u4ee5\u73b0\u5728\u5b8c\u6210\u6b64\u6b65\u9aa4\uff0c\u4e5f [&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-4671","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/pages\/4671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=4671"}],"version-history":[{"count":1,"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/pages\/4671\/revisions"}],"predecessor-version":[{"id":4673,"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/pages\/4671\/revisions\/4673"}],"wp:attachment":[{"href":"https:\/\/flyovertheworld.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=4671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}