{"id":75513,"date":"2025-12-16T17:22:26","date_gmt":"2025-12-16T16:22:26","guid":{"rendered":"https:\/\/www.sett-vlaanderen.be\/?page_id=75513"},"modified":"2026-02-24T21:10:48","modified_gmt":"2026-02-24T20:10:48","slug":"online-ticket","status":"publish","type":"page","link":"https:\/\/www.sett-vlaanderen.be\/nl\/online-ticket\/","title":{"rendered":"Online ticket"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"75513\" class=\"elementor elementor-75513\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ea0abde e-con-full e-flex e-con e-parent\" data-id=\"ea0abde\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6d1afa8 elementor-widget elementor-widget-html\" data-id=\"6d1afa8\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"dynamic-iframe-container\"><\/div>\n\n<script>\n  (function () {\n    const container = document.getElementById('dynamic-iframe-container');\n\n    \/\/ Helper: voeg ontbrekende & tussen id=... en verifier=...\n    function fixGluedIdVerifier(str) {\n      if (!str) return str;\n      return str.replace(\/(id=[^&#?]*)(verifier=)\/, '$1&$2');\n    }\n\n    \/\/ Helper: als verifier in id \"vastgeplakt\" zit, splits die eruit\n    function splitVerifierFromIdValue(idValue) {\n      if (!idValue) return { id: idValue, verifier: null, changed: false };\n      const idx = idValue.indexOf('verifier=');\n      if (idx === -1) return { id: idValue, verifier: null, changed: false };\n\n      \/\/ v\u00f3\u00f3r verifier= kan nog een '&' staan of niet\n      const before = idValue.slice(0, idx).replace(\/&$\/, '');\n      const after = idValue.slice(idx + 'verifier='.length);\n      return { id: before, verifier: after, changed: true };\n    }\n\n    \/\/ Helper: decode indien mogelijk (voor ge-encodeerde nested URL's)\n    function safeDecode(str) {\n      if (!str) return str;\n      try { return decodeURIComponent(str); } catch (e) { return str; }\n    }\n\n    \/\/ Helper: normaliseer verifier (strip trailing slash, maar respecteer %2F)\n    function normalizeVerifier(v) {\n      if (!v) return v;\n      v = v.trim();\n\n      \/\/ Als hij eindigt op een echte \"\/\" -> verwijderen\n      \/\/ (als die slash echt deel moet zijn, hoort die meestal als %2F in de URL te staan)\n      if (v.endsWith('\/')) v = v.slice(0, -1);\n\n      \/\/ Extra zekerheid: als iemand verifier=...%2F\/ heeft\n      if (v.endsWith('%2F\/')) v = v.slice(0, -1);\n\n      return v;\n    }\n\n    \/\/ 1) Start met huidige URL-tekst en herstel typische plakfout\n    const originalUrl = window.location.href;\n    let fixedUrl = fixGluedIdVerifier(originalUrl);\n    let wasFixed = fixedUrl !== originalUrl;\n\n    \/\/ 2) Parse outer URL (veilig)\n    let parsed;\n    try {\n      parsed = new URL(fixedUrl, window.location.origin);\n    } catch (e) {\n      container.innerHTML = \"<p>Document kon niet geladen worden (ongeldige URL).<\/p>\";\n      return;\n    }\n\n    const params = parsed.searchParams;\n\n    let id = (params.get('id') || '').trim();\n    let verifier = (params.get('verifier') || '').trim();\n\n    \/\/ 3) Fallback: als verifier nog in id geplakt zit\n    if ((!verifier || verifier === '') && id && id.includes('verifier=')) {\n      const s = splitVerifierFromIdValue(id);\n      if (s.changed) {\n        id = (s.id || '').trim();\n        verifier = (s.verifier || '').trim();\n        wasFixed = true;\n      }\n    }\n\n    \/\/ 4) GENESTE URL in id? (bv. id=https:\/\/...\/online-ticket\/?id=XYZ&verifier=ABC)\n    \/\/    - haal de innerlijke id\/verifier eruit (ook daar plakfout herstellen)\n    \/\/    - support ook encoded inner url\n    const idMaybeUrl = safeDecode(id);\n\n    if (idMaybeUrl && \/https?:\\\/\\\/\/i.test(idMaybeUrl)) {\n      \/\/ Soms wordt de inner URL niet ge-encodeerd; eerst de typische plakfout fixen\n      let innerRaw = fixGluedIdVerifier(idMaybeUrl);\n\n      try {\n        const innerUrl = new URL(innerRaw);\n        const innerParams = innerUrl.searchParams;\n\n        let innerId = (innerParams.get('id') || '').trim();\n        let innerVerifier = (innerParams.get('verifier') || '').trim();\n\n        \/\/ Nog een fallback: als innerVerifier \u201cvast\u201d hangt aan innerId\n        if ((!innerVerifier || innerVerifier === '') && innerId && innerId.includes('verifier=')) {\n          const s2 = splitVerifierFromIdValue(innerId);\n          if (s2.changed) {\n            innerId = (s2.id || '').trim();\n            innerVerifier = (s2.verifier || '').trim();\n          }\n        }\n\n        if (innerId) {\n          id = innerId;\n          wasFixed = true;\n        }\n        if (innerVerifier) {\n          verifier = innerVerifier;\n          wasFixed = true;\n        }\n      } catch (e) {\n        \/\/ Als het geen geldige URL is, negeren we en gaan we verder met de outer params\n      }\n    }\n\n    \/\/ 5) Normaliseer verifier (BELANGRIJK voor jouw 400-case)\n    const beforeNorm = verifier;\n    verifier = normalizeVerifier(verifier);\n    if (verifier !== beforeNorm) wasFixed = true;\n\n    \/\/ 6) Schrijf nette params terug & normaliseer adresbalk (zonder reload)\n    if (wasFixed) {\n      if (id) params.set('id', id);\n      if (verifier) params.set('verifier', verifier);\n      parsed.search = params.toString();\n      fixedUrl = parsed.toString();\n      window.history.replaceState({}, '', fixedUrl);\n    }\n\n    \/\/ 7) Iframe renderen\n    container.innerHTML = \"\";\n    if (id && verifier) {\n      const iframeUrl = `https:\/\/resource.visitcloud.com\/document\/html\/${encodeURIComponent(id)}?verifier=${encodeURIComponent(verifier)}`;\n\n      \/\/ (optioneel) debug:\n      \/\/ console.log(\"FINAL id:\", id);\n      \/\/ console.log(\"FINAL verifier:\", verifier);\n      \/\/ console.log(\"IFRAME URL:\", iframeUrl);\n\n      const iframe = document.createElement('iframe');\n      iframe.src = iframeUrl;\n      iframe.width = \"100%\";\n      iframe.height = \"600\";\n      iframe.style.border = \"0\";\n      iframe.loading = \"lazy\";\n      iframe.allowFullscreen = true;\n      container.appendChild(iframe);\n    } else {\n      container.innerHTML = \"<p>Document kon niet geladen worden. Ontbrekende id of verifier.<\/p>\";\n    }\n  })();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":949,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"class_list":["post-75513","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/pages\/75513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/users\/949"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/comments?post=75513"}],"version-history":[{"count":5,"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/pages\/75513\/revisions"}],"predecessor-version":[{"id":77656,"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/pages\/75513\/revisions\/77656"}],"wp:attachment":[{"href":"https:\/\/www.sett-vlaanderen.be\/nl\/wp-json\/wp\/v2\/media?parent=75513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}