Checkout-Fenster deutlich breiter; PayPal auf einen sauberen Button reduziert; Klarna verbindet automatisch bei Auswahl
- Das Zahlungsart/Kontakt-Fenster war unabsichtlich auf 560px begrenzt (geerbtes Formular-Limit von Kontakt-/Konto-Seite) — jetzt nutzt es die volle verfügbare Spaltenbreite (~820px statt 560px). - PayPal-Button zeigt jetzt nur noch den einen echten PayPal-Button statt zusätzlich einem redundanten "Debit- oder Kreditkarte"-Button (dafür gibt's ja schon die eigene Kreditkarte-Zahlungsart) — ein Klick auf die PayPal-Karte, ein Klick auf den einen PayPal-Button, direkt der echte Login-Popup. Mehr geht aus Sicherheitsgründen bei keinem Shop weltweit: PayPal öffnet den Login-Popup nur bei einem echten Klick auf ihr eigenes Button-Element, nie automatisiert per Skript (Schutz vor Missbrauch/Clickjacking). - Klarna verbindet jetzt automatisch, sobald die Karte ausgewählt wird — kein zusätzlicher Klick auf einen Verbinden-Button mehr nötig (Kreditkarte und Banküberweisung waren bereits ohne Extra-Klick). Verifiziert per Puppeteer: Formularbreite jetzt 820px (vorher 560px), Klarna verbindet automatisch beim Auswählen, keine Konsolenfehler.
This commit is contained in:
@@ -208,7 +208,7 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
||||||
paypalLoaded = true;
|
paypalLoaded = true;
|
||||||
const script = document.createElement("script");
|
const script = document.createElement("script");
|
||||||
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture";
|
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture&disable-funding=card,credit";
|
||||||
script.onload = () => {
|
script.onload = () => {
|
||||||
if (!window.paypal) return;
|
if (!window.paypal) return;
|
||||||
window.paypal.Buttons({
|
window.paypal.Buttons({
|
||||||
@@ -228,8 +228,8 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
||||||
const klarnaBtn = document.getElementById("klarna-connect");
|
const klarnaBtn = document.getElementById("klarna-connect");
|
||||||
const klarnaStatus = document.getElementById("klarna-status");
|
const klarnaStatus = document.getElementById("klarna-status");
|
||||||
if (klarnaBtn) {
|
function connectKlarna() {
|
||||||
klarnaBtn.addEventListener("click", () => {
|
if (!klarnaBtn || klarnaBtn.disabled) return;
|
||||||
klarnaBtn.disabled = true;
|
klarnaBtn.disabled = true;
|
||||||
klarnaBtn.textContent = klarnaConnectingLabel;
|
klarnaBtn.textContent = klarnaConnectingLabel;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -237,7 +237,13 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
klarnaBtn.disabled = false;
|
klarnaBtn.disabled = false;
|
||||||
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
||||||
}, 1100);
|
}, 1100);
|
||||||
});
|
}
|
||||||
|
if (klarnaBtn) {
|
||||||
|
klarnaBtn.addEventListener("click", connectKlarna);
|
||||||
|
const klarnaRadio = document.querySelector('input[name="pay"][value="klarna"]');
|
||||||
|
// Verbindet automatisch, sobald die Klarna-Karte ausgewählt wird — kein separater Klick
|
||||||
|
// auf den Button nötig (der bleibt als "erneut verbinden" erhalten).
|
||||||
|
klarnaRadio?.addEventListener("change", () => { if (!klarnaStatus.textContent) connectKlarna(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../data/bankverbi
|
|||||||
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
||||||
paypalLoaded = true;
|
paypalLoaded = true;
|
||||||
const script = document.createElement("script");
|
const script = document.createElement("script");
|
||||||
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture";
|
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture&disable-funding=card,credit";
|
||||||
script.onload = () => {
|
script.onload = () => {
|
||||||
if (!window.paypal) return;
|
if (!window.paypal) return;
|
||||||
window.paypal.Buttons({
|
window.paypal.Buttons({
|
||||||
@@ -231,8 +231,8 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../data/bankverbi
|
|||||||
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
||||||
const klarnaBtn = document.getElementById("klarna-connect");
|
const klarnaBtn = document.getElementById("klarna-connect");
|
||||||
const klarnaStatus = document.getElementById("klarna-status");
|
const klarnaStatus = document.getElementById("klarna-status");
|
||||||
if (klarnaBtn) {
|
function connectKlarna() {
|
||||||
klarnaBtn.addEventListener("click", () => {
|
if (!klarnaBtn || klarnaBtn.disabled) return;
|
||||||
klarnaBtn.disabled = true;
|
klarnaBtn.disabled = true;
|
||||||
klarnaBtn.textContent = klarnaConnectingLabel;
|
klarnaBtn.textContent = klarnaConnectingLabel;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -240,7 +240,13 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../data/bankverbi
|
|||||||
klarnaBtn.disabled = false;
|
klarnaBtn.disabled = false;
|
||||||
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
||||||
}, 1100);
|
}, 1100);
|
||||||
});
|
}
|
||||||
|
if (klarnaBtn) {
|
||||||
|
klarnaBtn.addEventListener("click", connectKlarna);
|
||||||
|
const klarnaRadio = document.querySelector('input[name="pay"][value="klarna"]');
|
||||||
|
// Verbindet automatisch, sobald die Klarna-Karte ausgewählt wird — kein separater Klick
|
||||||
|
// auf den Button nötig (der bleibt als "erneut verbinden" erhalten).
|
||||||
|
klarnaRadio?.addEventListener("change", () => { if (!klarnaStatus.textContent) connectKlarna(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
||||||
paypalLoaded = true;
|
paypalLoaded = true;
|
||||||
const script = document.createElement("script");
|
const script = document.createElement("script");
|
||||||
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture";
|
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture&disable-funding=card,credit";
|
||||||
script.onload = () => {
|
script.onload = () => {
|
||||||
if (!window.paypal) return;
|
if (!window.paypal) return;
|
||||||
window.paypal.Buttons({
|
window.paypal.Buttons({
|
||||||
@@ -228,8 +228,8 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
||||||
const klarnaBtn = document.getElementById("klarna-connect");
|
const klarnaBtn = document.getElementById("klarna-connect");
|
||||||
const klarnaStatus = document.getElementById("klarna-status");
|
const klarnaStatus = document.getElementById("klarna-status");
|
||||||
if (klarnaBtn) {
|
function connectKlarna() {
|
||||||
klarnaBtn.addEventListener("click", () => {
|
if (!klarnaBtn || klarnaBtn.disabled) return;
|
||||||
klarnaBtn.disabled = true;
|
klarnaBtn.disabled = true;
|
||||||
klarnaBtn.textContent = klarnaConnectingLabel;
|
klarnaBtn.textContent = klarnaConnectingLabel;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -237,7 +237,13 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
klarnaBtn.disabled = false;
|
klarnaBtn.disabled = false;
|
||||||
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
||||||
}, 1100);
|
}, 1100);
|
||||||
});
|
}
|
||||||
|
if (klarnaBtn) {
|
||||||
|
klarnaBtn.addEventListener("click", connectKlarna);
|
||||||
|
const klarnaRadio = document.querySelector('input[name="pay"][value="klarna"]');
|
||||||
|
// Verbindet automatisch, sobald die Klarna-Karte ausgewählt wird — kein separater Klick
|
||||||
|
// auf den Button nötig (der bleibt als "erneut verbinden" erhalten).
|
||||||
|
klarnaRadio?.addEventListener("change", () => { if (!klarnaStatus.textContent) connectKlarna(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
if (paypalLoaded || !document.getElementById("paypal-button-container")) return;
|
||||||
paypalLoaded = true;
|
paypalLoaded = true;
|
||||||
const script = document.createElement("script");
|
const script = document.createElement("script");
|
||||||
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture";
|
script.src = "https://www.paypal.com/sdk/js?client-id=sb¤cy=EUR&intent=capture&disable-funding=card,credit";
|
||||||
script.onload = () => {
|
script.onload = () => {
|
||||||
if (!window.paypal) return;
|
if (!window.paypal) return;
|
||||||
window.paypal.Buttons({
|
window.paypal.Buttons({
|
||||||
@@ -228,8 +228,8 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
// die Oberfläche schon fertig aussieht und 1:1 austauschbar ist, sobald die Anbindung steht.
|
||||||
const klarnaBtn = document.getElementById("klarna-connect");
|
const klarnaBtn = document.getElementById("klarna-connect");
|
||||||
const klarnaStatus = document.getElementById("klarna-status");
|
const klarnaStatus = document.getElementById("klarna-status");
|
||||||
if (klarnaBtn) {
|
function connectKlarna() {
|
||||||
klarnaBtn.addEventListener("click", () => {
|
if (!klarnaBtn || klarnaBtn.disabled) return;
|
||||||
klarnaBtn.disabled = true;
|
klarnaBtn.disabled = true;
|
||||||
klarnaBtn.textContent = klarnaConnectingLabel;
|
klarnaBtn.textContent = klarnaConnectingLabel;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -237,7 +237,13 @@ import { bankverbindung, bankverbindungVollstaendig } from "../../../data/bankve
|
|||||||
klarnaBtn.disabled = false;
|
klarnaBtn.disabled = false;
|
||||||
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
klarnaStatus.textContent = "✅ " + klarnaConnectedLabel;
|
||||||
}, 1100);
|
}, 1100);
|
||||||
});
|
}
|
||||||
|
if (klarnaBtn) {
|
||||||
|
klarnaBtn.addEventListener("click", connectKlarna);
|
||||||
|
const klarnaRadio = document.querySelector('input[name="pay"][value="klarna"]');
|
||||||
|
// Verbindet automatisch, sobald die Klarna-Karte ausgewählt wird — kein separater Klick
|
||||||
|
// auf den Button nötig (der bleibt als "erneut verbinden" erhalten).
|
||||||
|
klarnaRadio?.addEventListener("change", () => { if (!klarnaStatus.textContent) connectKlarna(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
// Banküberweisung (Vorkasse): braucht KEINE externe Anbindung — zeigt einfach VanVans echte,
|
||||||
|
|||||||
@@ -970,7 +970,10 @@ a:focus-visible, button:focus-visible {
|
|||||||
@media (max-width: 800px) { .cart-layout { grid-template-columns: 1fr; } }
|
@media (max-width: 800px) { .cart-layout { grid-template-columns: 1fr; } }
|
||||||
|
|
||||||
/* Checkout */
|
/* Checkout */
|
||||||
.checkout-layout { display: grid; grid-template-columns: 1fr 300px; gap: 2rem; align-items: start; }
|
.checkout-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 2rem; align-items: start; }
|
||||||
|
/* Das Checkout-Formular soll die volle Spaltenbreite ausnutzen — .frm hat sonst sitesweit ein
|
||||||
|
schmales max-width (passend für Kontakt/Konto), das hier ausdrücklich aufgehoben wird. */
|
||||||
|
#checkout-form { max-width: none; }
|
||||||
|
|
||||||
/* "1. Zahlungsart" und "2. Kontakt & Lieferadresse" nebeneinander statt gestapelt, getrennt
|
/* "1. Zahlungsart" und "2. Kontakt & Lieferadresse" nebeneinander statt gestapelt, getrennt
|
||||||
durch eine dezente Verlaufslinie mit kleinem Garnrollen-Symbol in der Mitte — spielt auf
|
durch eine dezente Verlaufslinie mit kleinem Garnrollen-Symbol in der Mitte — spielt auf
|
||||||
|
|||||||
Reference in New Issue
Block a user