
{"id":97927,"date":"2026-10-25T01:07:48","date_gmt":"2026-10-24T23:07:48","guid":{"rendered":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/"},"modified":"2026-10-25T01:38:03","modified_gmt":"2026-10-24T23:38:03","slug":"berat-booking-test","status":"publish","type":"page","link":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/","title":{"rendered":"Berat tour booking test"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"97927\" class=\"elementor elementor-97927\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-abtbook1 e-con-full e-con\" data-id=\"abtbook1\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-abtbook2 elementor-widget elementor-widget-html\" data-id=\"abtbook2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<iframe id=\"ab-tour-booking-test\" title=\"Berat tour test booking\" style=\"width:100%;height:1300px;border:0;display:block\" srcdoc=\"&lt;!doctype html&gt;&lt;html lang=&quot;en&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot;&gt;&lt;meta name=&quot;robots&quot; content=&quot;noindex,nofollow&quot;&gt;&lt;title&gt;Berat \u00b7 Booking test&lt;\/title&gt;&lt;style&gt;\n*{box-sizing:border-box}body{margin:0;background:#f5f2fa;color:#291e3d;font:16px\/1.5 system-ui,sans-serif}main{max-width:980px;margin:auto;padding:25px 16px 50px}h1{font-size:clamp(26px,5vw,38px);line-height:1.15;margin:8px 0}h2{font-size:22px;margin:0 0 16px}.top{display:flex;align-items:center;justify-content:space-between;gap:15px}.tag{font-size:12px;font-weight:800;letter-spacing:.08em;color:#703da5}.test{padding:12px 16px;background:#fff0d8;border-radius:12px;margin:20px 0;font-size:14px}.layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(250px,.8fr);gap:20px;align-items:start}.card{background:white;border:1px solid #e1d6ec;border-radius:18px;padding:22px;min-width:0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.categories{grid-template-columns:repeat(3,minmax(0,1fr))}label{display:grid;gap:6px;font-size:14px;font-weight:650;margin-bottom:14px}input,select,button{font:inherit;border-radius:10px;padding:12px;width:100%;min-width:0}input,select{border:1px solid #cab8db;background:white;color:#291e3d}button{border:0;background:#703da5;color:white;font-weight:700;cursor:pointer;min-height:46px}button:disabled{opacity:.5;cursor:wait}.outline{background:white;color:#703da5;border:1px solid #cab8db}.small{font-size:13px;color:#71657f}.note{background:#f5f2fa;border-radius:12px;padding:12px;margin:12px 0}.price{font-size:36px;font-weight:800;color:#703da5}.line{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid #eee}.line span:last-child{text-align:right;overflow-wrap:anywhere}#pickupMap{height:235px;border-radius:12px;margin:12px 0;z-index:1}#error{color:#9a303a;background:#fff0ef;padding:12px;border-radius:10px;margin:10px 0}#error:empty{display:none}.tick{display:flex;align-items:flex-start;gap:10px}.tick input{width:18px;margin-top:4px}.buttons{display:flex;gap:10px;margin-top:15px}#checkout{min-width:0;width:100%;overflow:hidden}#checkout iframe{min-width:0!important;width:100%!important;max-width:100%!important}.hide,[hidden]{display:none!important}gmp-place-autocomplete{width:100%;margin-bottom:14px}a{color:#703da5}@media(max-width:760px){main{padding:18px 10px 35px}.layout,.grid{grid-template-columns:1fr}.card{padding:18px}.top{align-items:flex-start}#pickupMap{height:210px}.buttons{flex-direction:column}#paymentCard{padding:12px 0}#paymentCard h2,#paymentCard&gt;p{padding:0 16px}}.departures{border:0;padding:0;margin:0 0 14px;min-width:0}.departures legend{font-size:14px;font-weight:650;margin-bottom:8px}.departure-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.departure-choice{display:flex;align-items:center;gap:7px;margin:0;padding:12px 8px;border:1px solid #cab8db;border-radius:12px;cursor:pointer;min-width:0}.departure-choice:has(input:checked){background:#f0e7fa;border:2px solid #703da5;padding:11px 7px}.departure-choice:focus-within{outline:2px solid #703da5;outline-offset:3px}.departure-choice input{width:17px;height:17px;padding:0;margin:0;flex:0 0 17px;accent-color:#703da5}.departure-choice span{display:grid;gap:3px}.departure-choice small{font-size:13px;color:#71657f}.departure-choice strong{font-size:14px}@media(max-width:360px){.departure-options{gap:5px}.departure-choice{padding:10px 5px;gap:4px}.departure-choice:has(input:checked){padding:9px 4px}.departure-choice strong{font-size:13px}}&lt;\/style&gt;&lt;\/head&gt;&lt;body&gt;&lt;main&gt;\n&lt;div class=&quot;top&quot;&gt;&lt;div&gt;&lt;div class=&quot;tag&quot;&gt;ALBANIANBUS \u00b7 TOURS&lt;\/div&gt;&lt;h1&gt;Book your Berat day tour&lt;\/h1&gt;&lt;p class=&quot;small&quot;&gt;Shared tour \u00b7 Adults \u20ac30 \u00b7 Children \u20ac25 \u00b7 Infants free&lt;\/p&gt;&lt;\/div&gt;&lt;a href=&quot;https:\/\/albanianbus.com\/wordpress\/index.php\/berat-unesco-day-tour\/&quot; style=&quot;font-size:13px&quot;&gt;Tour details \u2197&lt;\/a&gt;&lt;\/div&gt;\n&lt;div class=&quot;test&quot;&gt;&lt;strong&gt;TEST BOOKING&lt;\/strong&gt; \u00b7 This page does not charge real money or reserve a real tour. Payment and cancellation terms will be reviewed before launch.&lt;\/div&gt;\n&lt;div id=&quot;error&quot; role=&quot;alert&quot;&gt;&lt;\/div&gt;&lt;div class=&quot;layout&quot;&gt;&lt;section class=&quot;card&quot; id=&quot;formCard&quot;&gt;&lt;form id=&quot;bookingForm&quot;&gt;\n&lt;h2&gt;\u2460 Your tour&lt;\/h2&gt;&lt;div class=&quot;grid&quot;&gt;&lt;label&gt;Date&lt;input id=&quot;tourDate&quot; type=&quot;date&quot; required&gt;&lt;\/label&gt;&lt;\/div&gt;&lt;div class=&quot;grid categories&quot;&gt;&lt;label&gt;Adults \u00b7 13+ years \u00b7 \u20ac30&lt;input id=&quot;adults&quot; type=&quot;number&quot; min=&quot;0&quot; max=&quot;55&quot; value=&quot;2&quot; required&gt;&lt;\/label&gt;&lt;label&gt;Children \u00b7 3\u201312 years \u00b7 \u20ac25&lt;input id=&quot;children&quot; type=&quot;number&quot; min=&quot;0&quot; max=&quot;55&quot; value=&quot;0&quot; required&gt;&lt;\/label&gt;&lt;label&gt;Infants \u00b7 0\u20132 years \u00b7 Free&lt;input id=&quot;infants&quot; type=&quot;number&quot; min=&quot;0&quot; max=&quot;55&quot; value=&quot;0&quot; required&gt;&lt;\/label&gt;&lt;\/div&gt;\n&lt;fieldset class=&quot;departures&quot;&gt;&lt;legend&gt;Departure \/ pickup area&lt;\/legend&gt;&lt;div class=&quot;departure-options&quot;&gt;&lt;label class=&quot;departure-choice&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;city&quot; value=&quot;Tirana&quot; checked required&gt;&lt;span&gt;&lt;strong&gt;Tirana&lt;\/strong&gt;&lt;small data-pickup-city=&quot;Tirana&quot;&gt;07:30&lt;\/small&gt;&lt;\/span&gt;&lt;\/label&gt;&lt;label class=&quot;departure-choice&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;city&quot; value=&quot;Durres&quot;  required&gt;&lt;span&gt;&lt;strong&gt;Durr\u00ebs&lt;\/strong&gt;&lt;small data-pickup-city=&quot;Durres&quot;&gt;08:00&lt;\/small&gt;&lt;\/span&gt;&lt;\/label&gt;&lt;label class=&quot;departure-choice&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;city&quot; value=&quot;Golem&quot;  required&gt;&lt;span&gt;&lt;strong&gt;Golem&lt;\/strong&gt;&lt;small data-pickup-city=&quot;Golem&quot;&gt;08:15&lt;\/small&gt;&lt;\/span&gt;&lt;\/label&gt;&lt;\/div&gt;&lt;\/fieldset&gt;&lt;p class=&quot;note&quot; id=&quot;pickupNote&quot;&gt;Pickup at 07:30 \u00b7 Albania local time&lt;\/p&gt;\n&lt;h2&gt;\u2461 Hotel &amp;amp; pickup address&lt;\/h2&gt;&lt;div id=&quot;googleSearch&quot; hidden&gt;&lt;\/div&gt;&lt;label&gt;Hotel or accommodation name&lt;input id=&quot;hotel&quot; type=&quot;text&quot; maxlength=&quot;200&quot; placeholder=&quot;Enter your hotel name&quot; required autocomplete=&quot;organization&quot;&gt;&lt;\/label&gt;&lt;label&gt;Hotel address&lt;input id=&quot;address&quot; type=&quot;text&quot; maxlength=&quot;400&quot; placeholder=&quot;Street or accommodation address&quot; autocomplete=&quot;street-address&quot;&gt;&lt;\/label&gt;\n&lt;h2 style=&quot;margin-top:24px&quot;&gt;\u2462 Lead traveller&lt;\/h2&gt;&lt;label&gt;Full name&lt;input id=&quot;name&quot; autocomplete=&quot;name&quot; maxlength=&quot;200&quot; required&gt;&lt;\/label&gt;&lt;div class=&quot;grid&quot;&gt;&lt;label&gt;Email&lt;input id=&quot;email&quot; type=&quot;email&quot; autocomplete=&quot;email&quot; maxlength=&quot;200&quot; required&gt;&lt;\/label&gt;&lt;label&gt;Phone \/ WhatsApp&lt;input id=&quot;phone&quot; type=&quot;tel&quot; autocomplete=&quot;tel&quot; maxlength=&quot;30&quot; placeholder=&quot;+ country code&quot; required&gt;&lt;\/label&gt;&lt;\/div&gt;\n&lt;label class=&quot;tick&quot;&gt;&lt;input id=&quot;accept&quot; type=&quot;checkbox&quot; required&gt;&lt;span&gt;I understand this is a test booking and no real tour will be reserved.&lt;\/span&gt;&lt;\/label&gt;&lt;button id=&quot;reviewButton&quot; type=&quot;submit&quot; disabled&gt;Review test booking \u2192&lt;\/button&gt;&lt;\/form&gt;&lt;\/section&gt;\n&lt;aside class=&quot;card&quot; id=&quot;summaryCard&quot;&gt;&lt;div class=&quot;tag&quot;&gt;YOUR BERAT DAY TOUR&lt;\/div&gt;&lt;h2 style=&quot;margin-top:10px&quot;&gt;Your booking&lt;\/h2&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Date&lt;\/span&gt;&lt;span id=&quot;summaryDate&quot;&gt;Choose a date&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Departure&lt;\/span&gt;&lt;span id=&quot;summaryCity&quot;&gt;Tirana&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Pickup time&lt;\/span&gt;&lt;span id=&quot;summaryTime&quot;&gt;07:30&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Travellers&lt;\/span&gt;&lt;span id=&quot;summaryPax&quot;&gt;2 travellers&lt;\/span&gt;&lt;\/div&gt;&lt;div id=&quot;categorySummary&quot;&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Hotel&lt;\/span&gt;&lt;span id=&quot;summaryHotel&quot;&gt;Enter your hotel&lt;\/span&gt;&lt;\/div&gt;&lt;p class=&quot;small&quot; style=&quot;margin:18px 0 0&quot;&gt;Total \u00b7 EUR&lt;\/p&gt;&lt;div class=&quot;price&quot; id=&quot;total&quot;&gt;\u20ac60&lt;\/div&gt;&lt;p class=&quot;small&quot;&gt;This prototype tests full payment. Live tour payment rules are not activated.&lt;\/p&gt;&lt;\/aside&gt;&lt;\/div&gt;\n&lt;section id=&quot;reviewCard&quot; class=&quot;card&quot; hidden style=&quot;margin-top:20px&quot;&gt;&lt;h2&gt;Review your test booking&lt;\/h2&gt;&lt;div id=&quot;reviewDetails&quot;&gt;&lt;\/div&gt;&lt;p class=&quot;test&quot;&gt;No real charge or reservation. Test checkout uses your existing Stripe test connection.&lt;\/p&gt;&lt;div class=&quot;buttons&quot;&gt;&lt;button id=&quot;editBooking&quot; class=&quot;outline&quot;&gt;Edit details&lt;\/button&gt;&lt;button id=&quot;payButton&quot;&gt;Continue to test card payment \u2192&lt;\/button&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section id=&quot;paymentCard&quot; class=&quot;card&quot; hidden style=&quot;margin-top:20px&quot;&gt;&lt;h2&gt;Stripe test payment&lt;\/h2&gt;&lt;p class=&quot;small&quot;&gt;Use a Stripe test card only. No real payment is taken.&lt;\/p&gt;&lt;div id=&quot;checkout&quot;&gt;&lt;\/div&gt;&lt;div class=&quot;buttons&quot;&gt;&lt;button id=&quot;refreshPayment&quot; class=&quot;outline&quot;&gt;Check payment status&lt;\/button&gt;&lt;\/div&gt;&lt;\/section&gt;\n&lt;section id=&quot;success&quot; class=&quot;card&quot; hidden style=&quot;margin-top:20px&quot;&gt;&lt;\/section&gt;\n&lt;\/main&gt;&lt;script&gt;\n(()=&gt;{\nconst $=id=&gt;document.getElementById(id),API=&#039;https:\/\/eyhphryauiihzmnmcqlk.supabase.co\/functions\/v1\/tour-booking\/&#039;;\n\nlet config=null,draft=null,booking=null,checkout=null,poll=null,requestId=crypto.randomUUID();\nlet token=sessionStorage.getItem(&#039;ab-tour-test-token&#039;);if(!token){token=crypto.randomUUID()+crypto.randomUUID();sessionStorage.setItem(&#039;ab-tour-test-token&#039;,token)}\nconst fmt=n=&gt;new Intl.NumberFormat(&#039;en-IE&#039;,{style:&#039;currency&#039;,currency:&#039;EUR&#039;}).format(n\/100),esc=s=&gt;String(s??&#039;&#039;).replace(\/[&amp;&lt;&gt;&quot;&#039;]\/g,c=&gt;({&#039;&amp;&#039;:&#039;&amp;amp;&#039;,&#039;&lt;&#039;:&#039;&amp;lt;&#039;,&#039;&gt;&#039;:&#039;&amp;gt;&#039;,&#039;&quot;&#039;:&#039;&amp;quot;&#039;,&quot;&#039;&quot;:&#039;&amp;#39;&#039;}[c]));\nfunction error(s){$(&#039;error&#039;).textContent=s||&#039;&#039;;if(s)$(&#039;error&#039;).scrollIntoView({behavior:&#039;smooth&#039;,block:&#039;center&#039;})}\nasync function api(action,data){const r=await fetch(API+action,{method:data?&#039;POST&#039;:&#039;GET&#039;,headers:{&#039;Content-Type&#039;:&#039;application\/json&#039;,Authorization:&#039;Bearer &#039;+token},body:data?JSON.stringify(data):undefined});const j=await r.json();if(!r.ok)throw Error(j.error||&#039;Please try again&#039;);return j}\nfunction scrollTo(id){try{const frame=parent.document.getElementById(&#039;ab-tour-booking-test&#039;);if(frame){parent.scrollTo({top:Math.max(0,frame.getBoundingClientRect().top+parent.scrollY+$(id).getBoundingClientRect().top+window.scrollY-110),behavior:&#039;smooth&#039;});return}}catch{}$(id).scrollIntoView({behavior:&#039;smooth&#039;,block:&#039;start&#039;})}\nfunction counts(){return {adults:Number($(&#039;adults&#039;).value),children:Number($(&#039;children&#039;).value),infants:Number($(&#039;infants&#039;).value)}}\nfunction quoteCounts(d){const counts={adult:d.adults,child:d.children,infant:d.infants};const lines=config.ticket_categories.map(c=&gt;({...c,quantity:counts[c.key]||0})).filter(c=&gt;c.quantity&gt;0);return {lines,passengers:d.adults+d.children+d.infants,total_cents:lines.reduce((n,c)=&gt;n+c.quantity*c.price_cents,0)}}\nfunction summary(){if(!config)return;const city=document.querySelector(&#039;input[name=&quot;city&quot;]:checked&#039;).value,q=quoteCounts(counts());$(&#039;summaryCity&#039;).textContent=city===&#039;Durres&#039;?&#039;Durr\u00ebs&#039;:city;$(&#039;summaryTime&#039;).textContent=config.pickup_times[city];$(&#039;summaryDate&#039;).textContent=$(&#039;tourDate&#039;).value||&#039;Choose a date&#039;;$(&#039;summaryPax&#039;).textContent=q.passengers+&#039; total&#039;;$(&#039;categorySummary&#039;).innerHTML=q.lines.map(c=&gt;&#039;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;&#039;+esc(c.label)+&#039; \u00d7 &#039;+c.quantity+&#039;&lt;\/span&gt;&lt;span&gt;&#039;+(c.price_cents===0?&#039;Free&#039;:fmt(c.quantity*c.price_cents))+&#039;&lt;\/span&gt;&lt;\/div&gt;&#039;).join(&#039;&#039;);$(&#039;summaryHotel&#039;).textContent=$(&#039;hotel&#039;).value||&#039;Enter your hotel&#039;;$(&#039;total&#039;).textContent=fmt(q.total_cents);$(&#039;pickupNote&#039;).textContent=&#039;Pickup at &#039;+config.pickup_times[city]+&#039; \u00b7 Albania local time&#039;;}\nfunction script(src){return new Promise((resolve,reject)=&gt;{const s=document.createElement(&#039;script&#039;);s.src=src;s.onload=resolve;s.onerror=()=&gt;reject(Error(&#039;Could not load payment form. Please try again.&#039;));document.head.append(s)})}\nfunction details(d){return &#039;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Berat shared day tour&lt;\/span&gt;&lt;strong&gt;&#039;+fmt(quoteCounts(d).total_cents)+&#039;&lt;\/strong&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Date&lt;\/span&gt;&lt;span&gt;&#039;+esc(d.service_date)+&#039;&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Pickup&lt;\/span&gt;&lt;span&gt;&#039;+esc(d.pickup_city)+&#039; \u00b7 &#039;+esc(config.pickup_times[d.pickup_city])+&#039; (Albania time)&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Hotel&lt;\/span&gt;&lt;span&gt;&#039;+esc(d.hotel_name)+&#039;&lt;br&gt;&#039;+esc(d.hotel_address)+&#039;&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Travellers&lt;\/span&gt;&lt;span&gt;&#039;+d.passengers+&#039;&lt;\/span&gt;&lt;\/div&gt;&#039;+quoteCounts(d).lines.map(c=&gt;&#039;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;&#039;+esc(c.label)+&#039; \u00d7 &#039;+c.quantity+&#039;&lt;\/span&gt;&lt;span&gt;&#039;+(c.price_cents===0?&#039;Free&#039;:fmt(c.quantity*c.price_cents))+&#039;&lt;\/span&gt;&lt;\/div&gt;&#039;).join(&#039;&#039;)+&#039;&lt;div class=&quot;line&quot;&gt;&lt;span&gt;Lead traveller&lt;\/span&gt;&lt;span&gt;&#039;+esc(d.customer_name)+&#039;&lt;br&gt;&#039;+esc(d.customer_email)+&#039;&lt;\/span&gt;&lt;\/div&gt;&#039;}\n$(&#039;bookingForm&#039;).onsubmit=e=&gt;{e.preventDefault();if(!config)return;error(&#039;&#039;);const q=quoteCounts(counts());if(q.passengers&lt;1||q.passengers&gt;55||q.total_cents&lt;=0){error(&#039;Choose 1\u201355 travellers, including at least one adult or child.&#039;);return;}draft={request_id:requestId,service_date:$(&#039;tourDate&#039;).value,...counts(),passengers:quoteCounts(counts()).passengers,pickup_city:document.querySelector(&#039;input[name=&quot;city&quot;]:checked&#039;).value,hotel_name:$(&#039;hotel&#039;).value.trim(),hotel_address:$(&#039;address&#039;).value.trim(),customer_name:$(&#039;name&#039;).value.trim(),customer_email:$(&#039;email&#039;).value.trim(),customer_phone:$(&#039;phone&#039;).value.trim(),accept_test:$(&#039;accept&#039;).checked};$(&#039;reviewDetails&#039;).innerHTML=details(draft);$(&#039;reviewCard&#039;).hidden=false;scrollTo(&#039;reviewCard&#039;)};\n$(&#039;editBooking&#039;).onclick=()=&gt;{if(booking){error(&#039;A test booking has already been created. Reload to start a new test.&#039;);return}$(&#039;reviewCard&#039;).hidden=true;scrollTo(&#039;formCard&#039;)};\nasync function checkPayment(){if(!booking)return;try{const j=await api(&#039;status&#039;,{id:booking.id});booking=j.booking;if(booking.status===&#039;paid_test&#039;){clearInterval(poll);if(checkout){checkout.destroy();checkout=null}$(&#039;paymentCard&#039;).hidden=true;$(&#039;reviewCard&#039;).hidden=true;$(&#039;success&#039;).hidden=false;$(&#039;success&#039;).innerHTML=&#039;&lt;h2&gt;\u2713 Stripe test payment verified&lt;\/h2&gt;&lt;p&gt;Reference: &lt;strong&gt;&#039;+esc(booking.reference)+&#039;&lt;\/strong&gt;&lt;\/p&gt;&lt;p&gt;&#039;+esc(booking.pickup_city)+&#039; \u00b7 &#039;+esc(booking.service_date)+&#039; \u00b7 &#039;+esc(booking.pickup_time.slice(0,5))+&#039; (Albania time)&lt;\/p&gt;&lt;p&gt;This is a test record only. No real tour is reserved. Automated tour emails and QR validation will be connected in the next stage.&lt;\/p&gt;&#039;;scrollTo(&#039;success&#039;)}}catch(e){error(e.message)}}\n$(&#039;payButton&#039;).onclick=async()=&gt;{error(&#039;&#039;);$(&#039;payButton&#039;).disabled=true;try{if(!booking)booking=await api(&#039;create&#039;,draft);const j=await api(&#039;payment&#039;,{id:booking.id});if(j.booking)booking=j.booking;if(!j.client_secret){await checkPayment();return}if(!window.Stripe)await script(&#039;https:\/\/js.stripe.com\/v3\/&#039;);if(checkout)checkout.destroy();$(&#039;paymentCard&#039;).hidden=false;checkout=await Stripe(j.publishable_key).initEmbeddedCheckout({clientSecret:j.client_secret,onComplete:checkPayment});checkout.mount(&#039;#checkout&#039;);clearInterval(poll);let tries=0;poll=setInterval(()=&gt;{if(++tries&gt;80){clearInterval(poll);return}checkPayment()},4000);scrollTo(&#039;paymentCard&#039;)}catch(e){error(e.message)}finally{$(&#039;payButton&#039;).disabled=false}};\n$(&#039;refreshPayment&#039;).onclick=checkPayment;\nfor(const id of [&#039;tourDate&#039;,&#039;adults&#039;,&#039;children&#039;,&#039;infants&#039;,&#039;hotel&#039;,&#039;address&#039;])$(id).addEventListener(&#039;input&#039;,summary);\ndocument.querySelectorAll(&#039;input[name=&quot;city&quot;]&#039;).forEach(input=&gt;input.addEventListener(&#039;change&#039;,summary));\n(async()=&gt;{try{config=await api(&#039;config&#039;);if(!config.test_mode)throw Error(&#039;This test widget cannot accept live payments&#039;);$(&#039;tourDate&#039;).min=new Intl.DateTimeFormat(&#039;en-CA&#039;,{timeZone:&#039;Europe\/Tirane&#039;}).format(new Date());document.querySelectorAll(&#039;[data-pickup-city]&#039;).forEach(el=&gt;el.textContent=config.pickup_times[el.dataset.pickupCity]);summary();$(&#039;reviewButton&#039;).disabled=false;}catch(e){error(e.message)}})();\n})();\n&lt;\/script&gt;&lt;script&gt;(()=&gt;{const resize=()=&gt;{try{const frame=parent.document.getElementById(&#039;ab-tour-booking-test&#039;);if(frame)frame.style.height=Math.ceil(document.body.getBoundingClientRect().height+30)+&#039;px&#039;;}catch{}};new ResizeObserver(resize).observe(document.body);window.addEventListener(&#039;load&#039;,resize);})();&lt;\/script&gt;&lt;\/body&gt;&lt;\/html&gt;\"><\/iframe>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"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":"var(--ast-global-color-4)","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-97927","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Berat tour booking test - Albanian Bus<\/title>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Berat tour booking test - Albanian Bus\" \/>\n<meta property=\"og:url\" content=\"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/\" \/>\n<meta property=\"og:site_name\" content=\"Albanian Bus\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-24T23:38:03+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/\",\"url\":\"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/\",\"name\":\"Berat tour booking test - Albanian Bus\",\"isPartOf\":{\"@id\":\"https:\/\/albanianbus.com\/wordpress\/#website\"},\"datePublished\":\"2026-10-24T23:07:48+00:00\",\"dateModified\":\"2026-10-24T23:38:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/albanianbus.com\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Berat tour booking test\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/albanianbus.com\/wordpress\/#website\",\"url\":\"https:\/\/albanianbus.com\/wordpress\/\",\"name\":\"Bus Tirana to Ksamil\",\"description\":\"Bus Service in Albania\",\"publisher\":{\"@id\":\"https:\/\/albanianbus.com\/wordpress\/#organization\"},\"alternateName\":\"Bus Tirana to Saranda\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/albanianbus.com\/wordpress\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/albanianbus.com\/wordpress\/#organization\",\"name\":\"Albanianbus\",\"alternateName\":\"Albanian Riviera Bus\",\"url\":\"https:\/\/albanianbus.com\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/albanianbus.com\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/albanianbus.com\/wordpress\/wp-content\/uploads\/2022\/11\/cropped-ALBANIANBUS-tirana-saranda-1.png\",\"contentUrl\":\"https:\/\/albanianbus.com\/wordpress\/wp-content\/uploads\/2022\/11\/cropped-ALBANIANBUS-tirana-saranda-1.png\",\"width\":728,\"height\":543,\"caption\":\"Albanianbus\"},\"image\":{\"@id\":\"https:\/\/albanianbus.com\/wordpress\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Berat tour booking test - Albanian Bus","robots":{"index":"noindex","follow":"follow"},"og_locale":"en_US","og_type":"article","og_title":"Berat tour booking test - Albanian Bus","og_url":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/","og_site_name":"Albanian Bus","article_modified_time":"2026-10-24T23:38:03+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/","url":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/","name":"Berat tour booking test - Albanian Bus","isPartOf":{"@id":"https:\/\/albanianbus.com\/wordpress\/#website"},"datePublished":"2026-10-24T23:07:48+00:00","dateModified":"2026-10-24T23:38:03+00:00","breadcrumb":{"@id":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/albanianbus.com\/wordpress\/index.php\/berat-booking-test\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/albanianbus.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Berat tour booking test"}]},{"@type":"WebSite","@id":"https:\/\/albanianbus.com\/wordpress\/#website","url":"https:\/\/albanianbus.com\/wordpress\/","name":"Bus Tirana to Ksamil","description":"Bus Service in Albania","publisher":{"@id":"https:\/\/albanianbus.com\/wordpress\/#organization"},"alternateName":"Bus Tirana to Saranda","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/albanianbus.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/albanianbus.com\/wordpress\/#organization","name":"Albanianbus","alternateName":"Albanian Riviera Bus","url":"https:\/\/albanianbus.com\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/albanianbus.com\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/albanianbus.com\/wordpress\/wp-content\/uploads\/2022\/11\/cropped-ALBANIANBUS-tirana-saranda-1.png","contentUrl":"https:\/\/albanianbus.com\/wordpress\/wp-content\/uploads\/2022\/11\/cropped-ALBANIANBUS-tirana-saranda-1.png","width":728,"height":543,"caption":"Albanianbus"},"image":{"@id":"https:\/\/albanianbus.com\/wordpress\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/97927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=97927"}],"version-history":[{"count":4,"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/97927\/revisions"}],"predecessor-version":[{"id":97932,"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/97927\/revisions\/97932"}],"wp:attachment":[{"href":"https:\/\/albanianbus.com\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=97927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}