{"id":1568,"date":"2026-05-17T10:49:54","date_gmt":"2026-05-17T10:49:54","guid":{"rendered":"https:\/\/rafty.dk\/booking-summary-test-copy\/"},"modified":"2026-05-17T10:51:08","modified_gmt":"2026-05-17T10:51:08","slug":"rafty-booking-summary","status":"publish","type":"page","link":"https:\/\/rafty.dk\/da\/rafty-booking-summary\/","title":{"rendered":"Bookingoversigt"},"content":{"rendered":"\n\n<script>\nlet display = false;\nlet paymentType = \"MobilePay\";\nlet debug = true;\nlet error = false;\nlet cartItems = undefined;\n\nfunction createBooking(resolve){\n\tif (sessionStorage.getItem(\"bookingId\") == null){\n\tlet lan = \"da\";\n\tif (window.location.href.indexOf(\"\/en\/\") > 0) lan = \"en\";\n\tlet http = new XMLHttpRequest();\/\/Using XMLHttpRequest to call the server and get the data\n\t\n\tlet url = '\/wp-content\/plugins\/rafty-booking\/booking_new_data.php';\n\n\tlet params = 'payment_status=' + \"CREATED\"  + '&full_name=' + sessionStorage.getItem(\"fullName\") + '&phone_number=' + sessionStorage.getItem(\"phoneNumber\");\n\tparams += '&email=' + sessionStorage.getItem(\"email\")  + '&message=' + sessionStorage.getItem(\"message\") + '&pickup_date=' + sessionStorage.getItem(\"pickupDate\") + '&pickup_time_index=' + sessionStorage.getItem(\"pickupTimeIndex\");\n\tparams += '&price=' + sessionStorage.getItem(\"eventLengthPrice\") + '&total=' + sessionStorage.getItem(\"orderTotal\") + '&event_length=' + sessionStorage.getItem(\"eventLength\")  + '&pickup_location=' + sessionStorage.getItem(\"pickupLocation\") + '&dropoff_location=' + sessionStorage.getItem(\"dropoffLocation\") + '&language=' + lan + '&payment_type=' + paymentType;\n\tparams += '&number_of_products=' + cartItems.length;\n\tfor (let i = cartItems.length - 1; i >= 0; i--){\n\t\tparams += '&item_product_' + i + '=' + cartItems[i].name;\n\t\tparams += '&item_quantity_' + i + '=' + cartItems[i].quantity;\n\t\tparams += '&item_unit_price_' + i + '=' + cartItems[i].prices.price;\n\t\tparams += '&item_id_' + i + '=' + cartItems[i].id;\n\t}\n\t\n\thttp.open('POST', url, true);                                                                                                                                                                                                                                                  \n\t\/\/Send the proper header information along with the request\n\thttp.setRequestHeader('Content-type', 'application\/x-www-form-urlencoded');\n\thttp.onreadystatechange = function() {\/\/Call a function when the state changes.\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tresolve(http.responseText);\t\n\t\t\t\t\t\t\n\t\t}\n\t}\n\thttp.onerror = function() {let errormsg = '{\"result\":\"not_ok\", \"error\": \"Internet disconnected\"}'; resolve(errormsg);}\t\t\n\thttp.send(params);\n\t}else updateBooking(resolve);\n}\n\nfunction updateBooking(resolve){\n\tlet lan = \"da\";\n\tif (window.location.href.indexOf(\"\/en\/\") > 0) lan = \"en\";\n\tlet http = new XMLHttpRequest();\/\/Using XMLHttpRequest to call the server and get the data\n\t\n\tlet url = '\/wp-content\/plugins\/rafty-booking\/booking_update_data.php';\n\tlet params = 'booking_id=' + sessionStorage.getItem(\"bookingId\") + '&full_name=' + sessionStorage.getItem(\"fullName\") + '&phone_number=' + sessionStorage.getItem(\"phoneNumber\");\n\tparams += '&email=' + sessionStorage.getItem(\"email\")  + '&message=' + sessionStorage.getItem(\"message\") + '&pickup_date=' + sessionStorage.getItem(\"pickupDate\") + '&pickup_time_index=' + sessionStorage.getItem(\"pickupTimeIndex\");\n\tparams += '&price=' + sessionStorage.getItem(\"eventLengthPrice\") + '&total=' + sessionStorage.getItem(\"orderTotal\") + '&event_length=' + sessionStorage.getItem(\"eventLength\")  + '&pickup_location=' + sessionStorage.getItem(\"pickupLocation\") + '&dropoff_location=' + sessionStorage.getItem(\"dropoffLocation\") + '&language=' + lan + '&payment_type=' + paymentType;\n\tparams += '&number_of_products=' + cartItems.length;\n\tfor (let i = cartItems.length - 1; i >= 0; i--){\n\t\tparams += '&item_product_' + i + '=' + cartItems[i].name;\n\t\tparams += '&item_quantity_' + i + '=' + cartItems[i].quantity;\n\t\tparams += '&item_unit_price_' + i + '=' + cartItems[i].prices.price;\n\t\tparams += '&item_id_' + i + '=' + cartItems[i].id;\n\t}\n\t\n\thttp.open('POST', url, true);                                                                                                                                                                                                                                                  \n\t\/\/Send the proper header information along with the request\n\thttp.setRequestHeader('Content-type', 'application\/x-www-form-urlencoded');\n\thttp.onreadystatechange = function() {\/\/Call a function when the state changes.\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tresolve(http.responseText);\t\n\t\t\t\t\t\t\n\t\t}\n\t}\n\thttp.onerror = function() {let errormsg = '{\"result\":\"not_ok\", \"error\": \"Internet disconnected\"}'; resolve(errormsg);}\t\t\n\thttp.send(params);\n}\n\n\nasync function proceed_to_checkout(){\t\n\tlet waitPromise = new Promise(function(resolve) {\n\t\tsetTimeout(createBooking(resolve), 50);\n\t});\t\n\t\n\tlet responseText = await waitPromise;\n\n\tif (debug)  console.log(responseText);\n\t\n\tlet res = JSON.parse(responseText);\n\t\t\t\n\tif (res.result != 'ok'){\t\n\t\tdocument.getElementById(\"checkout_error_msg\").style.display = \"block\";\n\t\tdocument.getElementById(\"checkout_error_msg\").innerHTML =  res.error;\n\t\tdocument.getElementById(\"proceed_to_checkout_button\").disabled = true;\n\t\treturn;\t\n\t}else{\t\n\t\tdocument.getElementById(\"checkout_error_msg\").style.display = \"none\";\t\n\t\tsessionStorage.setItem(\"bookingId\", res.booking_id);\n\t\tsessionStorage.setItem(\"orderId\", res.order_id);\n\t\twindow.location.href = \"\/rafty-checkout?order_id=\" + res.order_id;\n\t}\t\n\n\t\/\/sessionStorage.setItem(\"bookingId\", res.booking_id + \"\");\n\t\/\/sessionStorage.setItem(\"paymentId\", \"rafty-\" + (res.booking_id + \"\").padStart(4, \"0\"));\n\t\/\/sessionStorage.setItem(\"paymentStatus\", \"CREATED\");\n\t\/\/sessionStorage.setItem(\"paymentAmount\", sessionStorage.getItem(\"eventLengthPrice\"));\n\t\/\/sessionStorage.setItem(\"paymentType\",  paymentType);\n\t\/\/sessionStorage.setItem(\"bookDateTime\",  res.book_datetime);\n\n\t\/\/if (window.location.href.indexOf(\"\/en\/\") > 0){\n\t\/\/\twindow.location.href = \"https:\/\/www.rafty.dk\/en\/about-us\";\t\n\t\/\/}else window.location.href = \"https:\/\/www.rafty.dk\/da\/about-us\";\t\n\n}\n\nfunction getCartItems(){\n\tlet http = new XMLHttpRequest();\/\/Using XMLHttpRequest to call the server and get the data\n\tlet url = '\/wp-json\/wc\/store\/v1\/cart\/items';\n\thttp.open('GET', url, true);\n\t\/\/Send the proper header information along with the request\n\thttp.setRequestHeader('Content-type', 'application\/x-www-form-urlencoded');\n\thttp.onreadystatechange = function() {\/\/Call a function when the state changes.\n\t\tif(http.readyState == 4 && http.status == 508) {\n\t\t\tsetTimeout(function(){getCartItems()}, 300);\n\t\t}\n\t\tif(http.readyState == 4 && http.status == 200) {\n\n\t\t\tcartItems = JSON.parse(http.responseText);\n\t\t\tlet table = document.getElementById(\"optional_products_table\");\n\t\t\tlet total = 0;\n\t\t\tfor (let i = cartItems.length - 1; i >= 0; i--){\n\t\t\t\tlet row = table.insertRow(-1);\n\t\t\t\tlet cell0 = row.insertCell(0);\/\/cartItems[i].name);\n\t\t\t\tlet cell1 = row.insertCell(1);\/\/parseFloat(cartItems[i].prices.price)\/10);\n\t\t\t\tlet cell2 = row.insertCell(2);\/\/cartItems[i].quantity*parseFloat(cartItems[i].prices.price)\/10);\t\n\t\t\t\ttotal = total + cartItems[i].quantity*parseFloat(cartItems[i].prices.price)\/100;\n\t\t\t\tcell0.innerHTML = cartItems[i].name + \" x \" + cartItems[i].quantity;\n\t\t\t\tcell1.innerHTML = (parseFloat(cartItems[i].prices.price)\/100).toFixed(2) + \" kr.\";\n\t\t\t\tcell2.innerHTML = (cartItems[i].quantity*parseFloat(cartItems[i].prices.price)\/100).toFixed(2) + \" kr.\";\n\t\t\t}\n\t\t\tlet row = table.insertRow(-1);\t\n\t\t\tlet cell0 = row.insertCell(0);\n\t\t\tlet cell1 = row.insertCell(1);\n\t\t\tlet cell2 = row.insertCell(2);\n\t\t\tcell0.innerHTML = \"Total\";\n\t\t\tcell1.innerHTML = \"\";\n\t\t\tcell2.innerHTML = total.toFixed(2) + \" kr.\";\t\n\t\t\tlet orderTotal = total + parseFloat(sessionStorage.getItem(\"eventLengthPrice\"));\t\n\t\t\tdocument.getElementById(\"order_total\").innerHTML = orderTotal.toFixed(2) + \" kr.\";\t\n\t\t\tsessionStorage.setItem(\"cartItems\", http.responseText);\n\t\t\tsessionStorage.setItem(\"orderTotal\", \"\" + orderTotal.toFixed(2));\n\t\t\tif (cartItems.length == 0){\n\t\t\t\tdocument.getElementById(\"optional_products_div\").style.display = \"none\";\n\t\t\t}else document.getElementById(\"optional_products_div\").style.display = \"block\";\n\t\t}\n\t}\n\thttp.onerror = function() {alert(\"Error: \" + \"Internet disconnected\");}\t\t\n\thttp.send();\t\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function(e) {\n\tif (sessionStorage.getItem(\"rafty_init\") == \"rafty_booking\" || sessionStorage.getItem(\"rafty_init\") == \"rafty_booking_summary\"){\n\t\tdocument.getElementById(\"proceed_to_checkout_button\").disabled = false;\n\t\tdocument.getElementById(\"order_total\").innerHTML = sessionStorage.getItem(\"eventLengthPrice\") + \" kr.\";     \n\t\tdocument.getElementById(\"full_name\").innerHTML = sessionStorage.getItem(\"fullName\");\n\t\tdocument.getElementById(\"phone_number\").innerHTML = sessionStorage.getItem(\"phoneNumber\");\n\t\tdocument.getElementById(\"email\").innerHTML = sessionStorage.getItem(\"email\");\n\t\tdocument.getElementById(\"event_length\").innerHTML = sessionStorage.getItem(\"eventLength\");\n\t\tdocument.getElementById(\"pickup_datetime\").innerHTML = sessionStorage.getItem(\"pickupDate\") + \" \" + sessionStorage.getItem(\"pickupTime\");  \n\t\tdocument.getElementById(\"pickup_location\").innerHTML = sessionStorage.getItem(\"pickupLocation\"); \n\t\tdocument.getElementById(\"dropoff_location\").innerHTML = sessionStorage.getItem(\"dropoffLocation\");\n\t\tdocument.getElementById(\"price\").innerHTML = sessionStorage.getItem(\"eventLengthPrice\") + \" kr.\";\n\t\tdocument.getElementById(\"message\").innerHTML = sessionStorage.getItem(\"message\");\n\t\tsessionStorage.setItem(\"rafty_init\", \"rafty_booking_summary\");\n\t\tsetTimeout(function(){getCartItems()}, 10);\n\t}else {window.location.href = \"\/\";}\t\n});\n\n<\/script>\n<div class=\"show_summary_container\">\n\t<div style=\"display:none;width:100%;text-align:center;color:red;font-weight:bold;\" id = \"checkout_error_msg\">PickupDateTime is not available<\/div>\t\n\t<h2 style=\"text-align:center;\">Booking summary<\/h2>\n\t<div class=\"show_summary_panel\">\ud83d\uded2Total<span class=\"price\" id=\"order_total\"><\/span><\/div>\n<\/div>  \n <div class=\"container\"> \n<div id=\"summary_id\" style=\"display:block;\">\n<div>\n  <table class=\"card\">\n    <tr>\n      <th>Full name<\/th>\n      <td id=\"full_name\"><\/td>\n \n    <\/tr>\n    <tr>\n      <th>Phone number<\/th>\n      <td id=\"phone_number\"><\/td>\n    <\/tr>\n    <tr>\n      <th>Email<\/th>\n      <td id=\"email\"><\/td>\n    <\/tr>\n    <tr>\n      <th>Event length<\/th>\n      <td id=\"event_length\"><\/td>\n    <\/tr>\n    <tr>\n      <th>PickupDateTime<\/th>\n      <td id=\"pickup_datetime\"><\/td>\n    <\/tr>\n    <tr>\n      <th>Pickup location<\/th>\n      <td id=\"pickup_location\"><\/td>\n    <\/tr>\n    <tr>\n      <th>Drop-off location<\/th>\n      <td id=\"dropoff_location\"><\/td>\n    <\/tr>\n    <tr>\n      <th>Tour price<\/th>\n      <td id=\"price\"><\/td>\n    <\/tr>  \n    <tr>\n      <th>Message if necessary<\/th>\n      <td id=\"message\"><\/td>\n    <\/tr>    \n  <\/table>\n <\/div>\n<div id=\"optional_products_div\">\n<h3>Optional products<\/h3>\n\n<table id=\"optional_products_table\" class=\"card\">\n  <tr>\n    <th>Product<\/th>\n\t<th>Unit price<\/th>\n    <th>Subtotal<\/th>\n  <\/tr>\n<\/table>\n<\/div> \n<\/div>\n\n\n<button onclick=\"proceed_to_checkout()\" id=\"proceed_to_checkout_button\">Proceed to Checkout<\/button>\n\n<button onclick=\"history.back()\" id=\"back_button\">&#9664;Back<\/button>\n<\/div>\n\n\n\n<!-- wp:themify-builder\/canvas \/-->","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1568","page","type-page","status-publish","hentry","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages\/1568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/comments?post=1568"}],"version-history":[{"count":4,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages\/1568\/revisions"}],"predecessor-version":[{"id":1572,"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/pages\/1568\/revisions\/1572"}],"wp:attachment":[{"href":"https:\/\/rafty.dk\/da\/wp-json\/wp\/v2\/media?parent=1568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}