PageSourceSearch

https://meyer-edv.com/shop/cart.php?lang=en

html meyer-edv.com collected 2026-10-06 15:17:03 UTC 16,891 bytes, 322 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="utf-8"/>
5    <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
6    <meta name="color-scheme" content="light only"/>
7    <title>Shopping Cart – MEYER EDV Shop</title>
8    <meta name="description" content="Professionelle Software und IT-Abonnements für Gewerbetreibende."/>
9    <meta name="robots" content="noindex, nofollow"/>
10
11    <link rel="icon" href="/assets/img/favicon.png"/>
12    <link rel="apple-touch-icon" href="/assets/img/apple-touch-icon.png"/>
13    <link href="/fonts.css" rel="stylesheet"/>
14    <link href="/assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
15    <link href="/assets/vendor/icofont/icofont.min.css" rel="stylesheet"/>
16    <link href="/assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet"/>
17    <link href="/assets/vendor/remixicon/remixicon.css" rel="stylesheet"/>
18    <link href="/assets/vendor/aos/aos.css" rel="stylesheet"/>
19    <link href="/assets/css/style.css?v=20260922" rel="stylesheet"/>
20    <link href="/shop/assets/shop.css?v=20260922" rel="stylesheet"/>
21    <link href="/assets/site.css?v=20260923d" rel="stylesheet"/>    <!-- Polar Embedded Checkout -->
22    
22<script defer data-auto-init
23        src="https://cdn.jsdelivr.net/npm/@polar-sh/[email protected]/dist/embed.global.js">
24    </script>
24
25</head>
26<body class="shop-page">
27
28<!-- ======= Header (gemeinsam mit der ganzen Website) ======= -->
29
30<header id="header" class="fixed-top header-inner-pages">
31    <div class="container d-flex align-items-center">
32        <h1 class="logo mr-auto"><a href="/en/">MEYER EDV</a></h1>
33        <nav class="nav-menu d-none d-lg-block">
34            <ul>
35                <li><a href="/en/">Home</a></li>
36                <li><a href="/en/#services">Services</a></li>
37                <li class="drop-down active"><a href="/en/produkte/">Products</a><ul><li><a href="/en/produkte/">All products</a></li><li><a href="/en/produkte/meyer-mail">MEYER | Mail</a></li><li><a href="/en/produkte/emclient">eM Client</a></li><li><a href="/en/produkte/meyer-dms">MEYER | DMS</a></li><li><a href="/en/produkte/meyer-faktur">MEYER | Faktur</a></li><li><a href="/en/produkte/ordnerschutz">Ordnerschutz</a></li><li class="nav-divider" aria-hidden="true"></li><li class="drop-down"><a href="/shop/?lang=en"><i class="bx bx-store-alt"></i> Shop</a><ul><li><a href="/shop/?lang=en">All items</a></li><li><a href="/shop/cart.php?lang=en">Cart</a></li><li><a href="/shop/manage.php?lang=en">Manage subscription</a></li><li><a href="/shop/agb.php?lang=en">Terms</a></li></ul></li></ul></li>
38                <li><a href="/en/downloads/">Downloads</a></li>
39                <li><a href="/en/appointments">Booking</a></li>
40                <li><a href="/en/fernwartung">Remote Support</a></li>
41                <li class="drop-down shop-lang-switcher"><a href="#"><img src="/assets/img/flags/gb.png" alt="EN" class="lang-flag" width="20" height="14" loading="lazy"/> EN</a><ul><li><a href="/shop/cart.php?lang=de"><img src="/assets/img/flags/de.png" alt="DE" class="lang-flag" width="20" height="14" loading="lazy"/> DE</a></li><li class="active"><a href="/shop/cart.php?lang=en"><img src="/assets/img/flags/gb.png" alt="EN" class="lang-flag" width="20" height="14" loading="lazy"/> EN</a></li><li><a href="/shop/cart.php?lang=fr"><img src="/assets/img/flags/fr.png" alt="FR" class="lang-flag" width="20" height="14" loading="lazy"/> FR</a></li><li><a href="/shop/cart.php?lang=es"><img src="/assets/img/flags/es.png" alt="ES" class="lang-flag" width="20" height="14" loading="lazy"/> ES</a></li><li><a href="/shop/cart.php?lang=it"><img src="/assets/img/flags/it.png" alt="IT" class="lang-flag" width="20" height="14" loading="lazy"/> IT</a></li><li><a href="/shop/cart.php?lang=cs"><img src="/assets/img/flags/cz.png" alt="CS" class="lang-flag" width="20" height="14" loading="lazy"/> CS</a></li></ul></li>
42            </ul>
43        </nav>
44        <a href="tel:+4950329279898" class="header-phone-btn">
45            <i class="bx bx-phone-call"></i>
46            <span class="header-phone-label">+49 5032 927 98 98</span>
47        </a>
48        <a href="/shop/cart.php?lang=en" class="cart-nav-btn" aria-label="Cart"><i class="bx bx-cart"></i></a>
49    </div>
50</header><!-- End Header -->
51<meta name="csrf-token" content="7c0d69074299b61351f316eedeb6b5cd369ab1f95bedb40ee1a85c4f00a83f30">
52
53<main id="main">
54<section class="cart-wrap section-bg">
55    <div class="container" data-aos="fade-up">
56
57        <!-- B2B-Hinweis prominent oben -->
58        <div style="background:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:10px 18px;margin-bottom:24px;font-size:13px;color:#856404;font-family:'Jost',sans-serif">
59            <strong>B2B-Shop:</strong>
60            Sale exclusively to businesses (§14 BGB). Not available to consumers. All prices net excl. VAT.        </div>
61
62        <div class="shop-section-title">
63            <h2>Shopping Cart</h2>
64        </div>
65
66                    <div class="text-center py-5">
67                <i class="bx bx-cart-alt" style="font-size:5rem;color:#d0d8e4"></i>
68                <h4 class="mt-3" style="color:#37517e;font-family:'Jost',sans-serif">Your cart is empty.</h4>
69                <p style="color:#888">Discover our products and add them to your cart.</p>
70                <a href="/shop/" class="btn-shop-primary mt-2">Browse Products</a>
71            </div>
72
73            </div>
74</section>
75</main>
76
77<script>
78(function() {
79    var btn      = document.getElementById('cart-checkout-btn');
80    var label    = document.getElementById('cart-checkout-label');
81    var errDiv   = document.getElementById('cart-checkout-error');
82    var origLbl  = label ? label.textContent : '';
83
84    function showErr(msg) {
85        if (!errDiv) return;
86        errDiv.textContent = msg;
87        errDiv.style.display = 'block';
88    }
89
90    // Gemeinsame Formular-Validierung + Submit-Logik
91    function readForm() {
92        return {
93            company: (document.getElementById('cart-company') || {}).value || '',
94            vat:     (document.getElementById('cart-vat')     || {}).value || '',
95            name:    (document.getElementById('cart-name')    || {}).value || '',
96            email:   (document.getElementById('cart-email')   || {}).value || '',
97            street:  (document.getElementById('cart-street')  || {}).value || '',
98            zipcity: (document.getElementById('cart-zipcity') || {}).value || '',
99            country: (document.getElementById('cart-country') || {}).value || '',
100        };
101    }
102    function validateForm(f) {
103        if (!f.company.trim()) { showErr("Please enter your company name."); document.getElementById('cart-company').focus(); return false; }
104        if (!f.vat.trim())     { showErr("Please enter your VAT ID."); document.getElementById('cart-vat').focus(); return false; }
105        if (!f.street.trim() || !f.zipcity.trim() || !f.country.trim()) {
106            showErr("Please enter your full address (street, ZIP & city, country).");
107            if (!f.street.trim()) document.getElementById('cart-street').focus();
108            else if (!f.zipcity.trim()) document.getElementById('cart-zipcity').focus();
109            else document.getElementById('cart-country').focus();
110            return false;
111        }
112        return true;
113    }
114
115    // Einzelner Artikel kaufen (bei Multi-Cart) -> nutzt polar-checkout.php
116    document.querySelectorAll('.btn-cart-buy-one').forEach(function(b) {
117        b.addEventListener('click', function() {
118            if (errDiv) errDiv.style.display = 'none';
119            var f = readForm();
120            if (!validateForm(f)) return;
121            var slug = b.dataset.slug || '';
122            var qty  = parseInt(b.dataset.qty || '1', 10) || 1;
123            var origText = b.innerHTML;
124            b.disabled = true;
125            b.innerHTML = '<i class="bx bx-loader bx-spin mr-1"></i>' + "Loading\u2026";
126            fetch('/shop/api/polar-checkout.php', {
127                method: 'POST',
128                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
129                body: new URLSearchParams({
130                    product_slug:  slug,
131                    qty:           qty,
132                    email:         f.email,
133                    company:       f.company,
134                    vat_id:        f.vat,
135                    name:          f.name,
136                    street:        f.street,
137                    zipcity:       f.zipcity,
138                    country:       f.country,
139                    lang:          "en",
140                    b2b_confirmed: '1',
141                    csrf_token:    document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
142                })
143            })
144            .then(function(r) { return r.json().catch(function(){ return {ok:false, error:'invalid_response'}; }); })
145            .then(function(data) {
146                if (data.ok && data.checkout_url) {
147                    window.location.href = data.checkout_url;
148                } else {
149                    showErr(data.message || data.error || 'Checkout error');
150                    b.disabled = false;
151                    b.innerHTML = origText;
152                }
153            })
154            .catch(function() {
155                showErr("Network error. Please try again.");
156                b.disabled = false;
157                b.innerHTML = origText;
158            });
159        });
160    });
161
162    if (!btn) return;
163
164    btn.addEventListener('click', function() {
165        if (errDiv) errDiv.style.display = 'none';
166
167        var company = (document.getElementById('cart-company') || {}).value || '';
168        var vat     = (document.getElementById('cart-vat')     || {}).value || '';
169        var name    = (document.getElementById('cart-name')    || {}).value || '';
170        var email   = (document.getElementById('cart-email')   || {}).value || '';
171        var street  = (document.getElementById('cart-street')  || {}).value || '';
172        var zipcity = (document.getElementById('cart-zipcity') || {}).value || '';
173        var country = (document.getElementById('cart-country') || {}).value || '';
174
175        if (!company.trim()) {
176            showErr("Please enter your company name.");
177            document.getElementById('cart-company').focus();
178            return;
179        }
180        if (!vat.trim()) {
181            showErr("Please enter your VAT ID.");
182            document.getElementById('cart-vat').focus();
183            return;
184        }
185        if (!street.trim() || !zipcity.trim() || !country.trim()) {
186            showErr("Please enter your full address (street, ZIP & city, country).");
187            if (!street.trim()) document.getElementById('cart-street').focus();
188            else if (!zipcity.trim()) document.getElementById('cart-zipcity').focus();
189            else document.getElementById('cart-country').focus();
190            return;
191        }
192
193        btn.disabled = true;
194        if (label) label.textContent = "Loading\u2026";
195
196        fetch('/shop/api/polar-cart-checkout.php', {
197            method: 'POST',
198            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
199            body: new URLSearchParams({
200                company:    company,
201                vat_id:     vat,
202                name:       name,
203                email:      email,
204                street:     street,
205                zipcity:    zipcity,
206                country:    country,
207                lang:       "en",
208                csrf_token: document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
209            })
210        })
211        .then(function(r) {
212            // Sowohl 2xx als auch 4xx als JSON parsen (verhindert catch bei 422)
213            return r.json().catch(function() { return {ok: false, error: 'invali
213d_response'}; });
214        })
215        .then(function(data) {
216            if (data.ok && data.checkout_url) {
217                if (window.PolarEmbedCheckout) {
218                    window.PolarEmbedCheckout.create(data.checkout_url, { theme: 'light' });
219                } else {
220                    window.location.href = data.checkout_url;
221                }
222            } else {
223                var msg = data.error || "Checkout error. Please try again.";
224                showErr(msg);
225                btn.disabled = false;
226                if (label) label.textContent = origLbl;
227            }
228        })
229        .catch(function(err) {
230            showErr("Connection error. Please try again.");
231            btn.disabled = false;
232            if (label) label.textContent = origLbl;
233        });
234    });
235})();
236</script>
236
237
238
239<!-- ======= Footer ======= -->
240<footer id="footer">
241    <div class="footer-top">
242        <div class="container">
243            <div class="row">
244                <div class="col-lg-3 col-md-6 footer-contact">
245                    <h3>Meyer EDV GmbH</h3>
246                    <p>Gerberhof 3<br/>31535 Neustadt am Rübenberge<br/>Deutschland<br/><br/>
247                        <strong>Telefon:</strong> 05032 927 98 98<br/>
248                        <strong>E-Mail:</strong> <a href="mailto:[email protected]">[email protected]</a></p>
249                </div>
250                <div class="col-lg-3 col-md-6 footer-links">
251                    <h4>Shop</h4>
252                    <ul>
253                        <li><i class="bx bx-chevron-right"></i> <a href="/shop/">All Products</a></li>
254                        <li><i class="bx bx-chevron-right"></i> <a href="/shop/cart.php">Cart</a></li>
255                        <li><i class="bx bx-chevron-right"></i> <a href="/shop/manage.php">Manage Subscription</a></li>
256                        <li><i class="bx bx-chevron-right"></i> <a href="/shop/agb.php">Terms</a></li>
257                    </ul>
258                </div>
259                <div class="col-lg-3 col-md-6 footer-links">
260                    <h4>Links</h4>
261                    <ul>
262                        <li><i class="bx bx-chevron-right"></i> <a href="/">Start</a></li>
263                        <li><i class="bx bx-chevron-right"></i> <a href="/impressum.php">Imprint</a></li>
264                        <li><i class="bx bx-chevron-right"></i> <a href="/datenschutz.php">Privacy</a></li>
265                        <li><i class="bx bx-chevron-right"></i> <a href="/appointments">Booking</a></li>
266                    </ul>
267                </div>
268                <div class="col-lg-3 col-md-6 footer-links">
269                    <h4>B2B Shop</h4>
270                    <p style="font-size:13px;color:#aaa">B2B only. No right of withdrawal for digital products.</p>
271                    <p style="font-size:12px;color:#888;margin-top:10px">
272                        Payment processed by<br/>
273                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 28" height="22" style="margin-top:6px;opacity:0.7;display:inline-block">
274                            <rect width="120" height="28" rx="5" fill="#3B82F6"/>
275                            <text x="60" y="19" font-family="sans-serif" font-size="12" font-weight="700" fill="#fff" text-anchor="middle">Polar</text>
276                        </svg>
277                    </p>
278                </div>
279            </div>
280        </div>
281    </div>
282    <div class="container footer-bottom clearfix">
283        <div class="copyright">&copy; Copyright <strong><span>MEYER EDV GmbH &ndash;</span></strong> All Rights Reserved &nbsp;|&nbsp;
284            <a href="/shop/agb.php">Terms</a> &nbsp;|&nbsp;
285            <a href="/impressum.php">Imprint</a> &nbsp;|&nbsp;
286            <a href="/datenschutz.php">Privacy</a>
287        </div>
288    </div>
289</footer>
290<!-- End Footer -->
291
292<a href="#" class="back-to-top"><i class="ri-arrow-up-line"></i></a>
293
294<script src="/assets/vendor/jquery/jquery.min.js"></script>
vendor: 1 bytes, line 294
294
295<script src="/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
vendor: 1 bytes, line 295
295
296<script src="/assets/vendor/aos/aos.js"></script>
vendor: 1 bytes, line 296
296
297<script src="/assets/js/main.js?v=1790153233"></script>
vendor: 1 bytes, line 297
297
298<script src="/shop/assets/shop.js?v=1790153233"></script>
vendor: 1 bytes, line 298
298
299<script>
300    // Sofort beim DOMContentLoaded starten – nicht erst auf window.load (Bilder)
301    // warten. Sonst kann der Hero bei langsam ladenden Assets sekundenlang unsichtbar
302    // sein, weil [data-aos] per CSS opacity:0 hat.
303    if (typeof AOS !== 'undefined' && AOS.init) {
304        AOS.init({
305            duration: 600,
306            easing: 'ease-in-out',
307            once: true,
308            startEvent: 'DOMContentLoaded',
309            disableMutationObserver: true,
310        });
311    }
312    // Sicherheitsnetz: falls AOS aus irgendeinem Grund nicht initialisiert
313    // (Skript blockiert, Adblocker, Fehler), nach 1.2s alle data-aos-Elemente
314    // hart einblenden, damit die Seite nicht "leer" bleibt.
315    setTimeout(function () {
316        document.querySelectorAll('[data-aos]:not(.aos-animate)').forEach(function (el) {
317            el.classList.add('aos-animate');
318        });
319    }, 1200);
320</script>
320
321</body>
322</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.