{"id":513,"date":"2026-11-01T16:56:04","date_gmt":"2026-11-01T16:56:04","guid":{"rendered":"https:\/\/wpdo.it\/index.php\/checkout\/"},"modified":"2026-11-01T18:07:44","modified_gmt":"2026-11-01T18:07:44","slug":"checkout","status":"publish","type":"page","link":"https:\/\/wpdo.it\/index.php\/checkout\/","title":{"rendered":"Checkout"},"content":{"rendered":"<main id='bde-main'><section class=\"bde-f-container-513-104 bde-f-container wpdo-ck\"><div class=\"bde-f-container-513-103 bde-f-container wpdo-ck__head\"><p class=\"bde-f-text-513-100 bde-f-text wpdo-ck__eyebrow\">\nCheckout\n<\/p><h1 class=\"bde-f-text-513-101 bde-f-text wpdo-ck__title\">\nCompleta l\u2019acquisto<span class=\"wpdo-ck__dot\">.<\/span>\n<\/h1><p class=\"bde-f-text-513-102 bde-f-text wpdo-ck__lead\">\nControlla il riepilogo, inserisci i dati di fatturazione e procedi al pagamento. Al termine ricevi l\u2019accesso all\u2019area clienti con il tuo progetto.\n<\/p><\/div><\/section><div class=\"bde-shortcode-513-105 bde-shortcode\">    <style>\n    .wpdo-cart{--wpdo-ink:#14121f;--wpdo-line:#e3e0ec;--wpdo-surface:#fbfaf7;max-width:1040px;margin:0 auto;font-family:inherit;color:var(--wpdo-ink)}\n    .wpdo-cart *{box-sizing:border-box}\n    .wpdo-cart__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:32px;align-items:start}\n    .wpdo-cart__panel{border:1px solid var(--wpdo-line);border-radius:20px;background:#fff;padding:26px}\n    .wpdo-cart__eyebrow{margin:0 0 6px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:#6f6a80}\n    .wpdo-cart__title{margin:0 0 18px;font-size:1.5rem;line-height:1.2}\n    .wpdo-cart__empty{padding:18px;border:1px dashed var(--wpdo-line);border-radius:14px;background:var(--wpdo-surface);font-size:.92rem}\n    .wpdo-cart__line{border:1px solid var(--wpdo-line);border-radius:14px;margin-bottom:12px;background:#fff;overflow:hidden}\n    .wpdo-cart__head{display:flex;gap:12px;align-items:center;padding:14px 16px;cursor:pointer;list-style:none}\n    .wpdo-cart__head::-webkit-details-marker{display:none}\n    .wpdo-cart__name{font-weight:600;flex:1;min-width:0}\n    .wpdo-cart__meta{font-size:.8rem;color:#6f6a80;display:block;font-weight:400;margin-top:2px}\n    .wpdo-cart__price{font-weight:600;white-space:nowrap}\\n    .wpdo-cart__qty{display:inline-flex;align-items:center;border:1px solid var(--wpdo-line);border-radius:10px;background:#fff;overflow:hidden}\\n    .wpdo-cart__qty input{width:34px;border:0;background:transparent;text-align:center;font:inherit;font-size:.9rem;font-weight:600;padding:6px 0;color:var(--wpdo-ink)}\\n    .wpdo-cart__step{width:28px;padding:7px 0;border:0;background:transparent;color:#3d394b;font:inherit;font-size:1rem;line-height:1;cursor:pointer}\\n    .wpdo-cart__step:hover{background:var(--wpdo-surface)}\n    .wpdo-cart__del{border:0;background:transparent;color:#8a8499;cursor:pointer;font-size:1.1rem;line-height:1;padding:4px 6px}\n    .wpdo-cart__del:hover{color:#b91c1c}\n    .wpdo-cart__body{padding:0 16px 16px;display:grid;gap:10px}\n    .wpdo-cart__unit{display:grid;gap:4px}\n    .wpdo-cart__unit span{font-size:.78rem;color:#6f6a80;font-weight:600}\n    .wpdo-cart__unit em{font-style:normal;font-weight:400;color:#8b879b;font-size:.72rem;margin-left:5px}\n    .wpdo-cart__unit input{width:100%;padding:10px 12px;border:1px solid var(--wpdo-line);border-radius:10px;font:inherit}\n    .wpdo-cart__unit input:focus{outline:2px solid #5b3fa8;outline-offset:1px}\n    .wpdo-cart__total{display:flex;justify-content:space-between;align-items:baseline;margin-top:18px;padding-top:16px;border-top:1px solid var(--wpdo-line)}\n    .wpdo-cart__total strong{font-size:1.6rem}\n    .wpdo-cart__note{margin:10px 0 0;font-size:.78rem;color:#6f6a80;line-height:1.5}\n    .wpdo-cart__steps{margin:18px 0 0;padding-left:18px;display:grid;gap:8px;font-size:.86rem;color:#3d394b}\n    .wpdo-cart__fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}\n    .wpdo-cart__field{display:grid;gap:6px}\n    .wpdo-cart__field--wide{grid-column:1 \/ -1}\n    .wpdo-cart__field span{font-size:.78rem;font-weight:600;color:#3d394b}\n    .wpdo-cart__field em{font-style:normal;font-weight:400;color:#6f6a80}\n    .wpdo-cart__field input{width:100%;padding:11px 13px;border:1px solid var(--wpdo-line);border-radius:10px;font:inherit}\n    .wpdo-cart__field input:focus{outline:2px solid #5b3fa8;outline-offset:1px}\n    .wpdo-cart__submit{width:100%;margin-top:18px;padding:15px;border:0;border-radius:12px;background:var(--wpdo-ink);color:#fff;font-weight:600;font-size:1rem;cursor:pointer}\n    .wpdo-cart__submit[disabled]{opacity:.6;cursor:default}\n    .wpdo-cart__message{margin-top:10px;font-size:.9rem}\n    .wpdo-cart__message.is-error{color:#b91c1c}\n    .wpdo-cart__back{display:inline-block;margin-top:16px;font-size:.86rem;color:#6f6a80;text-decoration:underline}\n    @media (max-width:900px){.wpdo-cart__grid{grid-template-columns:1fr}}\n    @media (max-width:560px){.wpdo-cart__fields{grid-template-columns:1fr}.wpdo-cart__panel{padding:20px}}\n    \/* Righe del riepilogo: griglia che vince sui CSS del tema. *\/\n    .wpdo-cart details.wpdo-cart__line{border:1px solid var(--wpdo-line);border-radius:16px;margin-bottom:12px;background:#fff;overflow:hidden}\n    .wpdo-cart .wpdo-cart__head{display:grid !important;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:16px;padding:16px 18px;cursor:pointer;list-style:none}\n    .wpdo-cart .wpdo-cart__head::-webkit-details-marker{display:none}\n    .wpdo-cart .wpdo-cart__head::marker{content:''}\n    .wpdo-cart .wpdo-cart__name{display:block;min-width:0;margin:0 !important;font-size:1rem !important;line-height:1.35 !important;font-weight:600;color:var(--wpdo-ink)}\n    .wpdo-cart .wpdo-cart__meta{display:block;margin-top:11px;font-size:.78rem !important;font-weight:400;line-height:1.4 !important;color:#6f6a80;white-space:nowrap}\n    .wpdo-cart .wpdo-cart__qty{display:inline-flex !important;align-items:center;width:auto !important;flex:0 0 auto;border:1px solid var(--wpdo-line);border-radius:10px;background:#fff;overflow:hidden}\n    .wpdo-cart .wpdo-cart__qty input{width:36px !important;min-width:36px !important;max-width:36px !important;height:34px !important;margin:0 !important;padding:0 !important;border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;text-align:center;font:inherit !important;font-size:.9rem !important;font-weight:600 !important;color:var(--wpdo-ink) !important;appearance:textfield}\n    .wpdo-cart .wpdo-cart__step{width:30px !important;height:34px !important;min-height:0 !important;margin:0 !important;padding:0 !important;border:0 !important;border-radius:0 !important;background:transparent !important;color:#3d394b !important;font:inherit !important;font-size:1.05rem !important;line-height:1 !important;cursor:pointer}\n    .wpdo-cart .wpdo-cart__step:hover{background:var(--wpdo-surface) !important}\n    .wpdo-cart .wpdo-cart__price{margin:0 !important;font-size:1rem !important;font-weight:600;white-space:nowrap;text-align:right}\n    .wpdo-cart .wpdo-cart__del{padding:4px 8px !important;line-height:1 !important;font-size:1.2rem !important}\n    @media (max-width:560px){\n        .wpdo-cart .wpdo-cart__head{grid-template-columns:auto 1fr auto;row-gap:10px;padding:14px 16px}\n        .wpdo-cart .wpdo-cart__name{grid-column:1 \/ -1}\n        .wpdo-cart .wpdo-cart__price{text-align:left}\n        .wpdo-cart .wpdo-cart__meta{white-space:normal}\n    }\n    <\/style>\n\n    <div class=\"wpdo-cart\" id=\"wpdo-cart-IQ0ubp\"\n        data-endpoint=\"https:\/\/wpdo.it\/index.php\/wp-json\/wpdo\/v1\/checkout\"\n        data-nonce=\"1db8c38e60\"\n        data-token=\"https:\/\/wpdo.it\/index.php\/wp-json\/wpdo\/v1\/checkout-token\">\n\n        <div class=\"wpdo-cart__grid\">\n            <aside class=\"wpdo-cart__panel\">\n                <p class=\"wpdo-cart__eyebrow\">Riepilogo<\/p>\n                <h2 class=\"wpdo-cart__title\">I servizi nel carrello<\/h2>\n\n                <div data-role=\"lines\"><\/div>\n                <p class=\"wpdo-cart__note\"><strong>Cambia la quantita accanto al servizio:<\/strong> sotto ogni riga compare un campo sito per ogni unita.<\/p>\n\n                <div class=\"wpdo-cart__total\">\n                    <span>Totale<\/span>\n                    <strong data-role=\"total\">-<\/strong>\n                <\/div>\n                <p class=\"wpdo-cart__note\">Importi senza IVA (regime forfettario), bollo di 2 &euro; incluso. Un solo pagamento per tutto il carrello.<\/p>\n\n                <ol class=\"wpdo-cart__steps\">\n                    <li><b>Un sito per servizio.<\/b> Ogni unita vale per un dominio e resta legata a quello.<\/li>\n                    <li><b>Paghi su Stripe.<\/b> Nessun dato della carta passa da questo sito.<\/li>\n                    <li><b>Ricevi fattura e accesso.<\/b> Un servizio e un progetto per ogni sito.<\/li>\n                <\/ol>\n            <\/aside>\n\n            <section class=\"wpdo-cart__panel\">\n                <p class=\"wpdo-cart__eyebrow\">Dati di fatturazione<\/p>\n                <h2 class=\"wpdo-cart__title\">Dove intestiamo i servizi<\/h2>\n\n                <div class=\"wpdo-cart__fields\" data-role=\"fields\">\n                    <label class=\"wpdo-cart__field wpdo-cart__field--wide\">\n                        <span>Email<\/span>\n                        <input type=\"email\" name=\"email\" required autocomplete=\"email\" placeholder=\"nome@dominio.it\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field\">\n                        <span>Nome<\/span>\n                        <input type=\"text\" name=\"firstname\" required autocomplete=\"given-name\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field\">\n                        <span>Cognome<\/span>\n                        <input type=\"text\" name=\"lastname\" required autocomplete=\"family-name\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field wpdo-cart__field--wide\">\n                        <span>Azienda <em>facoltativo<\/em><\/span>\n                        <input type=\"text\" name=\"company\" autocomplete=\"organization\" placeholder=\"Lascia vuoto se acquisti come privato\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field wpdo-cart__field--wide\">\n                        <span>Codice fiscale o P.IVA <em>facoltativo<\/em><\/span>\n                        <input type=\"text\" name=\"vat\" autocomplete=\"off\" placeholder=\"Serve per la fattura elettronica\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field wpdo-cart__field--wide\">\n                        <span>Indirizzo<\/span>\n                        <input type=\"text\" name=\"address\" autocomplete=\"street-address\" placeholder=\"Via e numero civico\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field\">\n                        <span>Citta<\/span>\n                        <input type=\"text\" name=\"city\" autocomplete=\"address-level2\">\n                    <\/label>\n                    <label class=\"wpdo-cart__field\">\n                        <span>CAP<\/span>\n                        <input type=\"text\" name=\"zip\" autocomplete=\"postal-code\" inputmode=\"numeric\">\n                    <\/label>\n                <\/div>\n\n                <p class=\"wpdo-cart__note\"><strong>Nessun dato di accesso da inserire ora.<\/strong> Hosting e WordPress non servono in questa fase: dopo l'acquisto ricevi l'email per entrare nell'area clienti e li carichi dal servizio, in un'area protetta.<\/p>\n\n                <button type=\"button\" class=\"wpdo-cart__submit\" data-role=\"submit\">Procedi al pagamento<\/button>\n                <div class=\"wpdo-cart__message\" role=\"status\"><\/div>\n                <a class=\"wpdo-cart__back\" href=\"https:\/\/wpdo.it\/servizi\/\">&larr; Torna ai servizi<\/a>\n            <\/section>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function () {\n        function start() {\n        var root = document.getElementById('wpdo-cart-IQ0ubp');\n        if (!root) { return; }\n\n        var lines  = root.querySelector('[data-role=\"lines\"]');\n        var total  = root.querySelector('[data-role=\"total\"]');\n        var fields = root.querySelector('[data-role=\"fields\"]');\n        var button = root.querySelector('[data-role=\"submit\"]');\n        var message = root.querySelector('.wpdo-cart__message');\n\n        function euro(value) {\n            return '\\u20ac ' + Number(value).toLocaleString('it-IT', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n        }\n\n        function esc(value) {\n            var div = document.createElement('div');\n            div.textContent = value;\n            return div.innerHTML;\n        }\n\n        function unitInput(index, unit, value) {\n            return '<label class=\"wpdo-cart__unit\"><span>Sito ' + (unit + 1) + ' <em>obbligatorio<\/em><\/span>'\n                + '<input type=\"text\" data-site=\"' + index + '\" data-unit=\"' + unit + '\" value=\"' + esc(value || '') + '\" placeholder=\"esempio.it\" autocomplete=\"url\" required aria-required=\"true\"><\/label>';\n        }\n\n        function render() {\n            var list = window.WPDoCart ? window.WPDoCart.read() : [];\n\n            if (!list.length) {\n                lines.innerHTML = '<div class=\"wpdo-cart__empty\">Il carrello e vuoto. Aggiungi un servizio dalla sua scheda, oppure <a href=\"https:\/\/wpdo.it\/servizi\/\">torna ai servizi<\/a>.<\/div>';\n                total.textContent = '-';\n                button.disabled = true;\n                return;\n            }\n\n            button.disabled = false;\n            var sum = 0;\n            var html = '';\n\n            list.forEach(function (row, index) {\n                var qty = Math.max(1, Number(row.qty) || 1);\n                sum += Number(row.amount) * qty;\n\n                var units = '';\n                for (var u = 0; u < qty; u++) {\n                    units += unitInput(index, u, row.sites ? row.sites[u] : '');\n                }\n\n                html += '<details class=\"wpdo-cart__line\"' + ' open' + '>'\n                    + '<summary class=\"wpdo-cart__head\">'\n                    + '<span class=\"wpdo-cart__name\">' + esc(row.name) + '<span class=\"wpdo-cart__meta\">' + euro(row.amount) + ' per sito &middot; ' + qty + (qty === 1 ? ' sito' : ' siti') + '<\/span><\/span>'\n                    + '<span class=\"wpdo-cart__qty\">'\n                    + '<button type=\"button\" class=\"wpdo-cart__step\" data-qty-minus=\"' + index + '\" aria-label=\"Riduci quantita\">&minus;<\/button>'\n                    + '<input type=\"text\" readonly value=\"' + qty + '\" aria-label=\"Numero di siti\">'\n                    + '<button type=\"button\" class=\"wpdo-cart__step\" data-qty-plus=\"' + index + '\" aria-label=\"Aumenta quantita\">+<\/button>'\n                    + '<\/span>'\n                    + '<span class=\"wpdo-cart__price\">' + euro(Number(row.amount) * qty) + '<\/span>'\n                    + '<button type=\"button\" class=\"wpdo-cart__del\" data-remove=\"' + index + '\" aria-label=\"Rimuovi\">&times;<\/button>'\n                    + '<\/summary>'\n                    + '<div class=\"wpdo-cart__body\">' + units + '<\/div>'\n                    + '<\/details>';\n            });\n\n            lines.innerHTML = html;\n            total.textContent = euro(sum);\n        }\n\n        function setQty(index, up) {\n            var list = window.WPDoCart ? window.WPDoCart.read() : [];\n            if (!list[index]) { return; }\n\n            var qty = Math.max(1, Number(list[index].qty) || 1);\n            list[index].qty = Math.min(10, up ? qty + 1 : qty - 1);\n\n            try { window.localStorage.setItem('wpdo_cart', JSON.stringify(list)); } catch (e) {}\n            render();\n        }\n\n        lines.addEventListener('click', function (event) {\n            var step = event.target.closest('[data-qty-plus],[data-qty-minus]');\n\n            if (step) {\n                event.preventDefault();\n                event.stopPropagation();\n                setQty(\n                    parseInt(step.getAttribute('data-qty-plus') || step.getAttribute('data-qty-minus'), 10),\n                    step.hasAttribute('data-qty-plus')\n                );\n                return;\n            }\n\n            var del = event.target.closest('[data-remove]');\n\n            if (del) {\n                event.preventDefault();\n                event.stopPropagation();\n                window.WPDoCart.remove(parseInt(del.dataset.remove, 10));\n                render();\n            }\n        });\n\n        lines.addEventListener('input', function (event) {\n            var input = event.target.closest('[data-site]');\n            if (!input) { return; }\n\n            var list  = window.WPDoCart.read();\n            var index = parseInt(input.dataset.site, 10);\n            var unit  = parseInt(input.dataset.unit, 10);\n\n            if (!list[index]) { return; }\n\n            list[index].sites = list[index].sites || [];\n            list[index].sites[unit] = input.value;\n\n            try { window.localStorage.setItem('wpdo_cart', JSON.stringify(list)); } catch (e) {}\n        });\n\n        function value(name) {\n            var el = fields.querySelector('[name=\"' + name + '\"]');\n            return el ? el.value.trim() : '';\n        }\n\n        button.addEventListener('click', function () {\n            var list = window.WPDoCart ? window.WPDoCart.read() : [];\n            var items = [];\n\n            message.className = 'wpdo-cart__message';\n\n            if (!list.length) {\n                message.textContent = 'Il carrello e vuoto.';\n                message.className = 'wpdo-cart__message is-error';\n                return;\n            }\n\n            if (value('email').indexOf('@') === -1) {\n                message.textContent = 'Inserisci un indirizzo email valido.';\n                message.className = 'wpdo-cart__message is-error';\n                return;\n            }\n\n            for (var i = 0; i < list.length; i++) {\n                var qty = Math.max(1, Number(list[i].qty) || 1);\n\n                for (var u = 0; u < qty; u++) {\n                    var input = lines.querySelector('[data-site=\"' + i + '\"][data-unit=\"' + u + '\"]');\n                    var site  = input ? input.value.trim() : '';\n\n                    if (site === '') {\n                        message.textContent = 'Indica il sito per ogni unita di ' + list[i].name + '.';\n                        message.className = 'wpdo-cart__message is-error';\n                        if (input) { input.focus(); }\n                        return;\n                    }\n\n                    items.push({ product_key: list[i].key, site: site });\n                }\n            }\n\n            button.disabled = true;\n            message.textContent = 'Preparo il pagamento...';\n\n            function send() {\n                return fetch(root.dataset.token, { cache: 'no-store', credentials: 'same-origin' })\n                    .then(function (r) { return r.ok ? r.json() : null; })\n                    .catch(function () { return null; })\n                    .then(function (fresh) {\n                        var nonce = (fresh && fresh.nonce) ? fresh.nonce : root.dataset.nonce;\n\n                        return fetch(root.dataset.endpoint, {\n                            method: 'POST',\n                            headers: { 'Content-Type': 'application\/json', 'X-Wpdo-Nonce': nonce },\n                            body: JSON.stringify({\n                                items: items,\n                                email: value('email'), firstname: value('firstname'), lastname: value('lastname'),\n                                company: value('company'), vat: value('vat'), address: value('address'),\n                                city: value('city'), zip: value('zip')\n                            })\n                        });\n                    });\n            }\n\n            send().then(function (response) { return response.json(); }).then(function (data) {\n                if (data && data.ok && data.checkout_url) {\n                    if (window.WPDoCart) { window.WPDoCart.clear(); }\n                    window.location.href = data.checkout_url;\n                    return;\n                }\n\n                var map = {\n                    invalid_site: 'Controlla i domini: scrivi solo il nome, per esempio esempio.it.',\n                    invalid_item: 'Un servizio del carrello non e piu disponibile. Rimuovilo e riprova.',\n                    empty_cart: 'Il carrello e vuoto.'\n                };\n\n                throw new Error(map[data && data.error] || 'Errore nel checkout. Riprova.');\n            }).catch(function (error) {\n                button.disabled = false;\n                message.textContent = error.message;\n                message.className = 'wpdo-cart__message is-error';\n            });\n        });\n\n        if (root.dataset.seed) {\n            try {\n                var seed = JSON.parse(root.dataset.seed);\n                if (seed && seed.key && window.WPDoCart) { window.WPDoCart.seed(seed); }\n            } catch (e) {}\n        }\n\n        document.addEventListener('wpdo-cart-change', render);\n        render();\n        }\n\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', start);\n        } else {\n            start();\n        }\n    })();\n    <\/script>\n    <\/div><\/main>","protected":false},"excerpt":{"rendered":"<p>Checkout Completa l\u2019acquisto. Controlla il riepilogo, inserisci i dati di fatturazione e procedi al pagamento. Al termine ricevi l\u2019accesso all\u2019area clienti con il tuo progetto. Riepilogo I servizi nel carrello Cambia la quantita accanto al servizio: sotto ogni riga compare un campo sito per ogni unita. Totale &#8211; Importi senza IVA (regime forfettario), bollo di [&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,"_breakdance_hide_in_design_set":false,"_breakdance_tags":"","footnotes":""},"class_list":["post-513","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/pages\/513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/comments?post=513"}],"version-history":[{"count":3,"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/pages\/513\/revisions"}],"predecessor-version":[{"id":527,"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/pages\/513\/revisions\/527"}],"wp:attachment":[{"href":"https:\/\/wpdo.it\/index.php\/wp-json\/wp\/v2\/media?parent=513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}