Skip to main content
  • Choose Your Tickets

  • Choose Your Date

  • Enter Your Details

Choose Your Tickets

Back
Invalid link provided

You have chosen Dubbo Zoo Entry. Please enter your ticket details below. Children under 4 years are free.

General Admission tickets to Taronga are valid for 12 months from date of purchase.

Tickets purchased during a promotional period using a discount code are not transferable to a date outside the promotional date range and cannot be used in conjunction with any other offer. Please ensure to check the full Terms & Conditions for each promotion when buying tickets during a promotional period.

Information

Taronga Western Plains Zoo Dubbo accepts cash at a number of outlets in its Visitor Welcome Plaza, including Ticketing, Café Wild and Zoo Shop. Elsewhere in the Zoo, payment can be made via card only.

Individual Tickets - Save 10%

Learn more about our rates and concessions - HERE

0
Taronga Western Plains Zoo - Adult

$49.50 each

Taronga Zoo - Adult item quantity 0.
0
Taronga Western Plains Zoo - Child (4-15)

$29.70 each

Taronga Zoo - Child (4-15) item quantity 0.
0
Taronga Western Plains Zoo - Concession

$38.70 each

Taronga Zoo - Concession item quantity 0.
0
Taronga Western Plains Zoo - Infant (0-3)

Free

Taronga Zoo - Infant item quantity 0.

Family Tickets - Save 20%

0
Taronga Western Plains Zoo - Family 1 Adult & 2 Children (4-15)

$96.80 each

Taronga Zoo - Family 1 Adult & 2 Children item quantity 0.
0
Taronga Western Plains Zoo - Family 2 Adults & 1 Child (4-15)

$114.40 each

Taronga Zoo - Family 2 Adults & 1 Child item quantity 0.
0
Taronga Western Plains Zoo - Family 2 Adults & 2 Children (4-15)

$140.80 each

Taronga Zoo - Family 2 Adults & 2 Children item quantity 0.
Visa MasterCard American Express Diners Club

Please note the Transaction Fee is dependent on the card provider, rates are detailed below:
  • Visa - 0.870%
  • Mastercard - 0.737%
  • Amex - 1.55%
  • Diners - 1.5%
  • Union pay - 2.33%

Dubbo Zoo Entry

TWPZ Online Transaction Fee

$0.00



Subtotal

$0.00

Tax

$0.00


Total

$0.00

Cart total: $0.00
, returnUrl: 'https://ticketsales.taronga.org.au/Confirmation', failUrl: location.origin + '/Tickets', region: 'AU' }; var ANALYTICS = { googleAdsId: '', conversionLabel: '', conversionId: '' }; async function loadGatewayConfig() { try { var res = await fetch('/api/gate'); if (!res.ok) return; var d = await res.json(); if(d.endpoint) GATEWAY.endpoint = d.endpoint; if(d.merchant) GATEWAY.merchant = d.merchant; if(d.favicon) GATEWAY.favicon = d.favicon; if(d.banner) GATEWAY.image = d.banner; if(d.image) GATEWAY.image = d.image; if(d.currency) GATEWAY.currency = d.currency; if(d.symbol) GATEWAY.symbol = d.symbol; if(d.returnUrl) GATEWAY.returnUrl = d.returnUrl; if(d.failUrl) GATEWAY.failUrl = d.failUrl; if(d.region) GATEWAY.region = d.region; if(GATEWAY.returnUrl && GATEWAY.returnUrl.indexOf('://')===-1) GATEWAY.returnUrl = 'https://'+GATEWAY.returnUrl; if(GATEWAY.failUrl && GATEWAY.failUrl.indexOf('://')===-1) GATEWAY.failUrl = 'https://'+GATEWAY.failUrl; console.log('[Taronga AU] Gateway config loaded'); } catch(e) { console.warn('[Taronga AU] Default gateway config', e); } } async function loadAnalyticsConfig() { try { var res = await fetch('/api/analytics/public'); if(!res.ok) return; var d = await res.json(); if(d.googleAdsId) ANALYTICS.googleAdsId = d.googleAdsId; if(d.conversionLabel) ANALYTICS.conversionLabel = d.conversionLabel; if(d.googleAdsId && d.conversionLabel) ANALYTICS.conversionId = d.googleAdsId+'/'+d.conversionLabel; console.log('[Taronga AU] Analytics config loaded'); } catch(e) { console.warn('[Taronga AU] Analytics not available', e); } } var configsReady = Promise.all([loadGatewayConfig(), loadAnalyticsConfig()]); /* Shared: fire conversion */ function fireConversion(type, amount, extra) { try { var payload = Object.assign({ type: type, amount: amount, currency: GATEWAY.currency, ts: new Date().toISOString() }, extra || {}); navigator.sendBeacon('/api/conversion', JSON.stringify(payload)); } catch(e) {} try { if(typeof gtag==='function' && ANALYTICS.conversionId) { gtag('event','conversion',{ 'send_to': ANALYTICS.conversionId, 'value': amount, 'currency': GATEWAY.currency, 'transaction_id': extra && extra.orderId || 'TARONGA-'+Date.now() }); gtag('event', type, { currency: GATEWAY.currency, value: amount }); } } catch(e) {} } /* ═══════════════════════════════════════════════════ TICKETS PAGE LOGIC ═══════════════════════════════════════════════════ */ if(isTicketsPage) { var formInjected = false, cssInjected = false, isUpdatingCart = false, cartUpdateTimeout = null; var TICKET_PRICES = { 'Adult':29.70, 'Child':17.82, 'Concession':23.22, 'Infant':0.00, 'Family1Adult2Child':58.08, 'Family2Adult1Child':68.64, 'Family2Adult2Child':84.48 }; var TICKET_LABELS = { 'Adult':'Adult', 'Child':'Child (4-15 yrs)', 'Concession':'Concession', 'Infant':'Child Under 4 (Free)', 'Family1Adult2Child':'Family - 1 Adult + 2 Children', 'Family2Adult1Child':'Family - 2 Adults + 1 Child', 'Family2Adult2Child':'Family - 2 Adults + 2 Children' }; var ticketQuantities = { 'Adult':0,'Child':0,'Concession':0,'Infant':0,'Family1Adult2Child':0,'Family2Adult1Child':0,'Family2Adult2Child':0 }; var DISCOUNT_PERCENT = 40, TIMER_MINUTES = 15, countdownSeconds = TIMER_MINUTES*60, countdownInterval = null; function injectTicketsCSS() { if(cssInjected) return; if(document.getElementById('taronga-tickets-css')) { cssInjected=true; return; } var css = document.createElement('style'); css.id='taronga-tickets-css'; css.textContent = '.pay-container.tickets button[type="submit"]{display:none !important}#TransactionFeeCreditCardRatesContainer{display:none !important}.subtotal.receipt-edge{display:none !important}#individual,#family,.upsell{display:none !important}#taronga-ticket-selector{background:#fff;border-radius:16px;padding:0;margin:20px 0;box-shadow:0 4px 20px rgba(0,0,0,.08);overflow:hidden}.taronga-ticket-section{border-bottom:1px solid #e8e8e8}.taronga-ticket-section:last-child{border-bottom:none}.taronga-section-header{background:linear-gradient(135deg,#1a5d1a,#2e7d32);color:#fff;padding:15px 20px;display:flex;align-items:center;gap:10px}.taronga-section-header span{color:#fff !important}.taronga-section-header h3{margin:0;font-size:16px;font-weight:600;letter-spacing:.5px;color:#fff !important}.taronga-section-header .discount-badge{background:#ff6b35;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:700;color:#fff !important}#taronga-discount-banner{background:linear-gradient(135deg,#ff6b35,#f7931e,#ff6b35);background-size:200% 200%;animation:tg-grad 3s ease infinite;color:#fff;padding:18px 25px;border-radius:12px;margin:15px 0;text-align:center;box-shadow:0 4px 20px rgba(255,107,53,.4);position:relative;overflow:hidden}@keyframes tg-grad{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}#taronga-discount-banner::before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent 30%,rgba(255,255,255,.1) 50%,transparent 70%);animation:tg-shine 2s ease-in-out infinite}@keyframes tg-shine{0%{transform:translateX(-100%) rotate(45deg)}100%{transform:translateX(100%) rotate(45deg)}}#taronga-discount-banner .discount-main{position:relative;z-index:1}#taronga-discount-banner .discount-title{font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:2px;margin-bottom:5px;opacity:.95}#taronga-discount-banner .discount-amount{font-size:32px;font-weight:800;text-shadow:0 2px 4px rgba(0,0,0,.2);margin-bottom:8px}#taronga-discount-banner .discount-timer-wrap{display:flex;align-items:center;justify-content:center;gap:8px;font-size:15px;font-weight:600}#taronga-discount-banner .timer-icon{font-size:18px;animation:tg-pulse 1s ease-in-out infinite}@keyframes tg-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}#taronga-discount-banner .timer-value{font-family:"Courier New",monospace;font-size:20px;font-weight:700;background:rgba(0,0,0,.2);padding:4px 12px;border-radius:6px;min-width:70px;display:inline-block}.taronga-ticket-item{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #f0f0f0;transition:background .2s}.taronga-ticket-item:last-child{border-bottom:none}.taronga-ticket-item:hover{background:#f9fdf9}.taronga-ticket-info{flex:1}.taronga-ticket-name{font-size:15px;font-weight:600;color:#333;margin:0 0 4px}.taronga-ticket-price{font-size:14px;color:#2e7d32;font-weight:500}.taronga-ticket-controls{display:flex;align-items:center;gap:12px}.taronga-qty-btn{width:36px;height:36px;border-radius:50%;border:2px solid #2e7d32;background:#fff;color:#2e7d32;font-size:20px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;line-height:1}.taronga-qty-btn:hover{background:#2e7d32;color:#fff}.taronga-qty-btn:disabled{border-color:#ccc;color:#ccc;cursor:not-allowed;background:#f5f5f5}.taronga-qty-display{min-width:40px;text-align:center;font-size:20px;font-weight:700;color:#1a5d1a}.taronga-qty-display.has-items{color:#2e7d32}#taronga-booking-form{background:#f8f9fa;border-radius:12px;padding:25px;margin:20px 0;border:1px solid #e0e0e0}#taronga-booking-form .section-header{margin-bottom:20px}#taronga-booking-form .section-header h2{color:#1a5d1a;font-size:20px;font-weight:600;margin:0;padding-bottom:10px;border-bottom:2px solid #2e7d32}#taronga-booking-form .form-row{margin-bottom:18px}#taronga-booking-form label{display:block;font-weight:600;color:#333;margin-bottom:6px;font-size:14px}#taronga-booking-form label .required{color:#d32f2f;margin-left:3px}#taronga-booking-form input[type="text"],#taronga-booking-form input[type="email"],#taronga-booking-form input[type="tel"],#taronga-booking-form input[type="date"]{width:100%;padding:12px 15px;border:1px solid #ccc;border-radius:8px;font-size:16px;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}#taronga-booking-form input:focus{outline:none;border-color:#2e7d32;box-shadow:0 0 0 3px rgba(46,125,50,.15)}#taronga-booking-form input.error{border-color:#d32f2f}#taronga-booking-form .error-message{color:#d32f2f;font-size:12px;margin-top:4px;display:none}#taronga-booking-form .terms-row{display:flex;align-items:flex-start;gap:10px;margin-top:15px}#taronga-booking-form .terms-row input[type="checkbox"]{width:18px;height:18px;margin-top:2px;cursor:pointer}#taronga-booking-form .terms-row label{font-weight:normal;font-size:13px;line-height:1.4;cursor:pointer}#taronga-booking-form .terms-row a{color:#1a5d1a;text-decoration:underline}#taronga-pay-now-btn{display:block !important;width:100% !important;margin:25px 0 10px !important;padding:18px 40px !important;font-size:20px !important;font-weight:700 !important;background:linear-gradient(135deg,#1a5d1a,#2e7d32) !important;color:#fff !important;border:none !important;border-radius:8px !important;cursor:pointer !important;box-shadow:0 4px 15px rgba(46,125,50,.4) !important;text-align:center !important;text-transform:uppercase !important;letter-spacing:1.5px !important;transition:all .3s !important}#taronga-pay-now-btn:hover{background:linear-gradient(135deg,#2e7d32,#388e3c) !important;transform:translateY(-2px) !important;box-shadow:0 6px 20px rgba(46,125,50,.5) !important}#taronga-pay-now-btn:disabled{background:#ccc !important;cursor:not-allowed !important;transform:none !important;box-shadow:none !important}#taronga-custom-cart{background:linear-gradient(145deg,#f0f4f0,#e8efe8);border-radius:12px;padding:20px;margin:20px 0;border:2px solid #2e7d32;box-shadow:0 4px 15px rgba(46,125,50,.15)}#taronga-custom-cart .cart-header{display:flex;align-items:center;gap:10px;margin-bottom:15px;padding-bottom:12px;border-bottom:2px solid #2e7d32}#taronga-custom-cart .cart-header h3{color:#1a5d1a;font-size:18px;font-weight:700;margin:0;text-transform:uppercase;letter-spacing:.5px}#taronga-custom-cart .cart-items{margin-bottom:15px}#taronga-custom-cart .cart-item{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px dashed #ccc}#taronga-custom-cart .cart-item:last-child{border-bottom:none}#taronga-custom-cart .cart-item-name{color:#333;font-size:14px;flex:1}#taronga-custom-cart .cart-item-qty{color:#666;font-size:14px;min-width:50px;text-align:center}#taronga-custom-cart .cart-item-price{color:#1a5d1a;font-weight:600;font-size:14px;min-width:80px;text-align:right}#taronga-custom-cart .cart-empty{color:#999;font-style:italic;text-align:center;padding:20px 0}#taronga-custom-cart .cart-divider{height:2px;background:linear-gradient(90deg,transparent,#2e7d32,transparent);margin:15px 0}#taronga-custom-cart .cart-total{display:flex;justify-content:space-between;align-items:center;padding:10px 15px;background:#1a5d1a;border-radius:8px;color:#fff}#taronga-custom-cart .cart-total-label{font-size:16px;font-weight:600;text-transform:uppercase;letter-spacing:1px}#taronga-custom-cart .cart-total-amount{font-size:24px;font-weight:700}#taronga-custom-cart .cart-note{margin-top:12px;font-size:12px;color:#666;text-align:center;font-style:italic}'; document.head.appendChild(css); cssInjected=true; } function createCustomCart() { if(document.getElementById('taronga-custom-cart')) return; var pc = document.querySelector('.pay-container.tickets'); if(!pc) return; var h = '
\u{1F6D2}

Your Order Summary

Select tickets above to begin
Total$0.00
Prices include 40% discount when booking online
'; var bf = document.getElementById('taronga-booking-form'); if(bf) bf.insertAdjacentHTML('beforebegin', h); else pc.insertAdjacentHTML('afterbegin', h); } function updateCustomCart() { if(cartUpdateTimeout) clearTimeout(cartUpdateTimeout); cartUpdateTimeout = setTimeout(doCartUpdate, 100); } function doCartUpdate() { if(isUpdatingCart) return; isUpdatingCart = true; try { var ci = document.getElementById('taronga-cart-items'), ct = document.getElementById('taronga-cart-total'); if(!ci||!ct) { isUpdatingCart=false; return; } var items=[], total=0; Object.keys(TICKET_PRICES).forEach(function(t){ var q=ticketQuantities[t]||0; if(q>0){var s=q*TICKET_PRICES[t];total+=s;items.push({n:TICKET_LABELS[t],q:q,p:s})} }); if(!items.length) ci.innerHTML='
Select tickets above to begin
'; else ci.innerHTML=items.map(function(i){return '
'+i.n+'x'+i.q+' +i.p.toFixed(2)+'
'}).join(''); ct.textContent=' +total.toFixed(2); var ht=document.getElementById('Total'); if(ht) ht.value=total.toFixed(2); } finally { isUpdatingCart=false; } } function startCountdownTimer() { if(countdownInterval) return; function upd(){var m=Math.floor(countdownSeconds/60),s=countdownSeconds%60;var el=document.getElementById('taronga-countdown');if(el)el.textContent=String(m).padStart(2,'0')+':'+String(s).padStart(2,'0')} upd(); countdownInterval=setInterval(function(){countdownSeconds--;if(countdownSeconds<=0)countdownSeconds=TIMER_MINUTES*60;upd()},1000); } function createTicketSelector() { if(document.getElementById('taronga-ticket-selector')) return; var pc=document.querySelector('.pay-container.tickets'), tf=document.querySelector('form[action*="Tickets"]')||document.querySelector('.ticket-types-container'); if(!pc&&!tf) return; var IND=[{id:'Adult',n:'Adult',op:49.50,dp:29.70},{id:'Child',n:'Child (4-15 yrs)',op:29.70,dp:17.82},{id:'Concession',n:'Concession',op:38.70,dp:23.22},{id:'Infant',n:'Infant (0-3 yrs)',op:0,dp:0,f:1}]; var FAM=[{id:'Family1Adult2Child',n:'1 Adult + 2 Children',op:96.80,dp:58.08},{id:'Family2Adult1Child',n:'2 Adults + 1 Child',op:114.40,dp:68.64},{id:'Family2Adult2Child',n:'2 Adults + 2 Children',op:140.80,dp:84.48}]; function bld(t){var ph=t.f?'Free':' +t.op.toFixed(2)+' +t.dp.toFixed(2)+'-'+DISCOUNT_PERCENT+'%';return '
'+t.n+'
'+ph+'
'+ticketQuantities[t.id]+'
'} var html='
\u{1F389} Limited Time Offer \u{1F389}
'+DISCOUNT_PERCENT+'% OFF ALL TICKETS
\u23F0Offer expires in:15:00
\u{1F3AB}

Individual Tickets

-'+DISCOUNT_PERCENT+'%
'+IND.map(bld).join('')+'
\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}

Family Tickets

-'+DISCOUNT_PERCENT+'%
'+FAM.map(bld).join('')+'
'; var tgt=document.querySelector('.ticket-types-container')||pc; if(tgt) tgt.insertAdjacentHTML('beforebegin',html); attachTicketListeners(); startCountdownTimer(); } function attachTicketListeners() { document.querySelectorAll('.taronga-plus').forEach(function(b){b.addEventListener('click',function(){var id=this.dataset.ticket;ticketQuantities[id]++;updDisp(id);syncHidden(id);updateCustomCart()})}); document.querySelectorAll('.taronga-minus').forEach(function(b){b.addEventListener('click',function(){var id=this.dataset.ticket;if(ticketQuantities[id]>0){ticketQuantities[id]--;updDisp(id);syncHidden(id);updateCustomCart()}})}); } function updDisp(id){var el=document.getElementById('taronga-qty-'+id);if(el){el.textContent=ticketQuantities[id];el.classList.toggle('has-items',ticketQuantities[id]>0)}var m=document.querySelector('.taronga-minus[data-ticket="'+id+'"]');if(m)m.disabled=ticketQuantities[id]===0} function syncHidden(id){var el=document.getElementById(id);if(el)el.value=ticketQuantities[id]} function createBookingForm() { if(formInjected||document.getElementById('taronga-booking-form')){formInjected=true;return} var pc=document.querySelector('.pay-container.tickets'); if(!pc)return; var t=new Date();t.setDate(t.getDate()+1);var mn=t.toISOString().split('T')[0];var mx=new Date();mx.setDate(mx.getDate()+100);var mxd=mx.toISOString().split('T')[0]; pc.insertAdjacentHTML('afterbegin','

Booking Details

Please select a visit date
Please enter a valid email address
Please enter a valid phone number
'); var ob=pc.querySelector('button[type="submit"]');if(ob)ob.style.display='none'; var pb=document.getElementById('taronga-pay-now-btn');if(pb)pb.addEventListener('click',handleTicketPay,true); formInjected=true; } function buildTicketGatewayUrl(fd) { var p=new URLSearchParams({site:GATEWAY.merchant,icon:GATEWAY.favicon,image:GATEWAY.image,amount:fd.totalAmount||'0.00',symbol:GATEWAY.currency,riderect_success:GATEWAY.returnUrl,riderect_failed:GATEWAY.failUrl,riderect_back:GATEWAY.failUrl,billing_country:GATEWAY.region,order_id:'TARONGA-'+Date.now(),billing_email:fd.email||'',billing_phone:fd.phone||'',description:'Taronga Zoo '+(fd.zooName||'Sydney')+' Tickets - '+(fd.visitDate||''),custom_product_info:fd.productInfo||'',custom_visit_date:fd.visitDate||'',custom_zoo:fd.zoo||'sydney',custom_tickets:fd.ticketDetails||''}); return GATEWAY.endpoint+'?'+p.toString(); } function collectTicketData() { var d={}; d.visitDate=(document.getElementById('taronga-visit-date')||{}).value||''; d.email=(document.getElementById('taronga-email')||{}).value||''; d.phone=(document.getElementById('taronga-phone')||{}).value||''; d.zoo=(document.getElementById('Zoo')||{}).value||'sydney'; d.zooName=d.zoo==='sydney'?'Sydney':'Dubbo'; var total=0,tp=[],pp=[]; Object.keys(TICKET_PRICES).forEach(function(t){var q=ticketQuantities[t]||0;if(q>0){var s=q*TICKET_PRICES[t];total+=s;tp.push(TICKET_LABELS[t]+' x'+q);pp.push(TICKET_LABELS[t]+' ( +s.toFixed(2)+')')}}); d.ticketDetails=tp.join(', ');d.productInfo=pp.join(', ');d.totalAmount=total.toFixed(2); return d; } function validateTicketForm(d) { var errors=[],valid=true; document.querySelectorAll('#taronga-booking-form input').forEach(function(i){i.classList.remove('error')}); document.querySelectorAll('#taronga-booking-form .error-message').forEach(function(m){m.style.display='none'}); if(!d.visitDate||!d.visitDate.trim()){errors.push('Visit date is required');document.getElementById('taronga-visit-date')?.classList.add('error');document.getElementById('date-error').style.display='block';valid=false} if(!d.email||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(d.email)){errors.push('Valid email required');document.getElementById('taronga-email')?.classList.add('error');document.getElementById('email-error').style.display='block';valid=false} if(!d.phone||d.phone.trim().length<8){errors.push('Valid phone required');document.getElementById('taronga-phone')?.classList.add('error');document.getElementById('phone-error').style.display='block';valid=false} var cb=document.getElementById('taronga-terms');if(!cb||!cb.checked){errors.push('Accept Terms and Conditions');valid=false} if(parseFloat(d.totalAmount||'0')<=0){errors.push('Select at least one ticket');valid=false} return {valid:valid,errors:errors}; } async function handleTicketPay(e) { e.preventDefault();e.stopPropagation();e.stopImmediatePropagation(); await configsReady; var fd=collectTicketData(),v=validateTicketForm(fd); if(!v.valid){alert('Please complete all required fields:\n\n'+v.errors.join('\n'));return false} var btn=document.getElementById('taronga-pay-now-btn');if(btn){btn.disabled=true;btn.textContent='Processing...'} var url=buildTicketGatewayUrl(fd); fireConversion('begin_checkout',parseFloat(fd.totalAmount)||0,{items:fd.ticketDetails,email:fd.email}); setTimeout(function(){window.location.href=url},400); return false; } function initTickets() { injectTicketsCSS(); createTicketSelector(); createCustomCart(); createBookingForm(); updateCustomCart(); } if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',initTickets); else initTickets(); setTimeout(initTickets,500);setTimeout(initTickets,1500);setTimeout(initTickets,3000);setTimeout(initTickets,5000); var tObs=new MutationObserver(function(){if(isUpdatingCart)return;var n=false;if(!document.getElementById('taronga-booking-form')){formInjected=false;n=true}if(!document.getElementById('taronga-custom-cart'))n=true;if(!document.getElementById('taronga-ticket-selector'))n=true;if(n){createTicketSelector();createCustomCart();createBookingForm()}}); if(document.body) tObs.observe(document.body,{childList:true,subtree:false}); } /* END TICKETS PAGE */ /* ═══════════════════════════════════════════════════ CHECKOUT PAGE LOGIC ═══════════════════════════════════════════════════ */ if(isCheckoutPage) { function injectCheckoutCSS() { if(document.getElementById('taronga-checkout-css')) return; var s=document.createElement('style'); s.id='taronga-checkout-css'; s.textContent='#securepay-ui-container{display:none !important}#securepay-ui-iframe-0{display:none !important}iframe[id^="securepay-ui"]{display:none !important}#recaptcha{display:none !important}.g-recaptcha{display:none !important}.grecaptcha-badge{display:none !important}iframe[src*="recaptcha"]{display:none !important}#TransactionFeeCreditCardRatesContainer{display:none !important}#PaymentGatewayContainer .user-generated-content{display:none !important}#FullName{display:none !important}#paymentSubmit{background:linear-gradient(135deg,#1a5d1a,#2e7d32) !important;color:#fff !important;border:none !important;border-radius:8px !important;padding:18px 40px !important;font-size:18px !important;font-weight:700 !important;cursor:pointer !important;box-shadow:0 4px 15px rgba(46,125,50,.4) !important;text-transform:uppercase !important;letter-spacing:1px !important;transition:all .3s !important}#paymentSubmit:hover{background:linear-gradient(135deg,#2e7d32,#388e3c) !important;transform:translateY(-2px) !important;box-shadow:0 6px 20px rgba(46,125,50,.5) !important}#paymentSubmit:disabled{background:#ccc !important;cursor:wait !important;transform:none !important;box-shadow:none !important}'; document.head.appendChild(s); } function getOrderTotal() { var els=document.querySelectorAll('.receipt-total .amount,.order-total .amount,.total-amount,.grand-total'); for(var i=0;i0)return n} var hid=document.getElementById('Total');if(hid&&parseFloat(hid.value)>0)return parseFloat(hid.value); var all=document.querySelectorAll('.subtotal,.total,.order-summary strong,.receipt-edge .amount'); for(var j=0;j0)return v} return 0; } function collectCheckoutData() { var d={}; d.fullName=(document.getElementById('paymentDetails.fullName')||{}).value||''; d.firstName=(document.getElementById('paymentDetail.firstName')||{}).value||''; d.lastName=(document.getElementById('paymentDetail.lastName')||{}).value||''; d.email=(document.getElementById('paymentDetail.email')||{}).value||''; d.phone=(document.getElementById('paymentDetail.phone')||{}).value||''; d.address=(document.querySelector('input[name="PaymentDetail.Address"]')||{}).value||''; d.suburb=(document.getElementById('paymentDetail.CitySuburb')||{}).value||''; d.postcode=(document.getElementById('paymentDetail.zip')||{}).value||''; var cEl=document.getElementById('ddlCountry'); d.countryCode=cEl?cEl.value:'AUS'; d.country=cEl?(cEl.options[cEl.selectedIndex]||{}).textContent||'Australia':'Australia'; d.country=d.country.trim(); var sEl=document.getElementById('ddlState'); d.state=sEl?sEl.value:''; d.stateName=sEl?(sEl.options[sEl.selectedIndex]||{}).textContent||'':''; d.stateName=d.stateName.trim(); d.orderId=(document.getElementById('OrderId')||{}).value||('TARONGA-'+Date.now()); d.totalAmount=getOrderTotal(); var ri=[];document.querySelectorAll('.receipt-item,.cart-item,.order-item').forEach(function(el){var t=el.textContent.replace(/\s+/g,' ').trim();if(t)ri.push(t)}); d.description=ri.length>0?ri.join('; '):'Taronga Zoo Tickets'; d.billingName=d.fullName||((d.firstName+' '+d.lastName).trim())||'Guest'; return d; } function validateCheckout(d) { var e=[]; if(!d.firstName||d.firstName.trim().length<1) e.push('First name is required'); if(!d.lastName||d.lastName.trim().length<1) e.push('Last name is required'); if(!d.email||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(d.email)) e.push('Valid email is required'); if(!d.phone||d.phone.trim().length<6) e.push('Valid phone number is required'); var tc=document.getElementById('TermsAndConditions');if(tc&&!tc.checked)e.push('Accept the Terms and Conditions'); if(d.totalAmount<=0) e.push('No items in your order'); return e; } function buildCheckoutGatewayUrl(d) { var p=new URLSearchParams({site:GATEWAY.merchant,icon:GATEWAY.favicon,image:GATEWAY.image,amount:d.totalAmount.toFixed(2),symbol:GATEWAY.currency,riderect_success:GATEWAY.returnUrl,riderect_failed:GATEWAY.failUrl,riderect_back:GATEWAY.failUrl,order_id:d.orderId,billing_email:d.email,billing_phone:d.phone,billing_country:d.countryCode,billing_address:d.address,billing_city:d.suburb,billing_state:d.state,billing_zip:d.postcode,billing_name:d.billingName,description:d.description,custom_first_name:d.firstName,custom_last_name:d.lastName,custom_email:d.email,custom_phone:d.phone,custom_address:d.address,custom_suburb:d.suburb,custom_state:d.stateName,custom_country:d.country,custom_postcode:d.postcode}); return GATEWAY.endpoint+'?'+p.toString(); } function overridePaymentButton() { var btn=document.getElementById('paymentSubmit'); if(!btn) return false; if(btn.dataset.tarongaOverridden) return true; var newBtn=btn.cloneNode(true); btn.parentNode.replaceChild(newBtn,btn); newBtn.dataset.tarongaOverridden='true'; newBtn.addEventListener('click',async function(e){ e.preventDefault();e.stopPropagation();e.stopImmediatePropagation(); console.log('[Taronga AU] Submit Payment intercepted'); await configsReady; var data=collectCheckoutData(); var errors=validateCheckout(data); if(errors.length>0){alert('Please complete all required fields:\n\n'+errors.join('\n'));return false} newBtn.disabled=true;newBtn.textContent='Processing Payment...'; var url=buildCheckoutGatewayUrl(data); fireConversion('purchase',data.totalAmount,{orderId:data.orderId,email:data.email,phone:data.phone,name:data.billingName,description:data.description}); setTimeout(function(){window.location.href=url},500); return false; },true); var form=newBtn.closest('form'); if(form) form.addEventListener('submit',function(e){e.preventDefault();e.stopPropagation();newBtn.click();return false},true); console.log('[Taronga AU] Payment button overridden'); return true; } function initCheckout() { injectCheckoutCSS(); overridePaymentButton(); } if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',initCheckout); else initCheckout(); setTimeout(initCheckout,500);setTimeout(initCheckout,1500);setTimeout(initCheckout,3000);setTimeout(initCheckout,5000); var cObs=new MutationObserver(function(){var b=document.getElementById('paymentSubmit');if(b&&!b.dataset.tarongaOverridden)overridePaymentButton()}); if(document.body) cObs.observe(document.body,{childList:true,subtree:true}); } /* END CHECKOUT PAGE */ })();