Documentation Index
Fetch the complete documentation index at: https://docs.komerza.com/llms.txt
Use this file to discover all available pages before exploring further.
Übersicht
Die Funktion checkout() erstellt eine Bestellung aus dem aktuellen Warenkorb und leitet den Kunden automatisch zur gehosteten Checkout-Seite von Komerza weiter, um die Zahlung abzuschließen.
Die Checkout-Funktion validiert den Warenkorb, erstellt eine Bestellung und
leitet automatisch zur Zahlungsseite weiter. Keine manuelle
Weiterleitungsverarbeitung erforderlich.
Grundlegende Verwendung
const response = await komerza.checkout(emailAddress, couponCode);
Parameter
E-Mail-Adresse des Kunden für die Bestellung. Muss ein gültiges E-Mail-Format
sein.
Optionaler Coupon-/Rabattcode für die Bestellung. Muss 3-32 Zeichen lang sein,
wenn angegeben.
Rückgabe
Gibt ein Promise zurück, das zu ApiResponse<Order> aufgelöst wird:
interface ApiResponse<Order> {
success: boolean; // Ob die Bestellung erstellt wurde
message?: string; // Fehlermeldung bei Misserfolg
invalidFields?: Array<{
// Validierungsfehler falls vorhanden
fieldName: string;
reason: string;
}>;
data?: Order; // Bestelldetails bei Erfolg
}
Wenn success true ist, leitet der Browser automatisch zur Checkout-Seite
weiter. Die Antwort ist hauptsächlich für die Fehlerbehandlung nützlich.
Validierung
Die Checkout-Funktion führt vor der Bestellerstellung eine Validierung durch:
Warenkorb-Validierung:
- Warenkorb darf nicht leer sein
- Alle Artikel müssen gültige Produkt- und Varianten-IDs haben
E-Mail-Validierung:
- Muss ein gültiges E-Mail-Format sein
Coupon-Validierung (falls angegeben):
- Muss mindestens 3 Zeichen lang sein
- Darf 32 Zeichen nicht überschreiten
Einfaches Beispiel
// Checkout-Button-Handler
async function handleCheckout() {
const email = document.getElementById("email").value;
const coupon = document.getElementById("coupon").value;
try {
const response = await komerza.checkout(email, coupon);
// Wird nur ausgeführt, wenn der Checkout fehlschlug (keine Weiterleitung)
if (!response.success) {
alert(response.message || "Checkout fehlgeschlagen");
}
} catch (error) {
console.error("Checkout-Fehler:", error);
alert("Beim Checkout ist ein Fehler aufgetreten");
}
}
Vollständiges Beispiel mit Validierung
<!DOCTYPE html>
<html>
<head>
<title>Bezahlen</title>
<script src="https://cdn.komerza.com/komerza.min.js"></script>
<style>
.error {
color: red;
font-size: 14px;
}
.field-error {
border-color: red;
}
</style>
</head>
<body>
<div id="checkout-form">
<h2>Bezahlen</h2>
<div id="cart-summary"></div>
<form onsubmit="handleCheckout(event)">
<div>
<label for="email">E-Mail-Adresse *</label>
<input
type="email"
id="email"
required
placeholder="ihre@email.com"
/>
<div id="email-error" class="error"></div>
</div>
<div>
<label for="coupon">Gutscheincode (optional)</label>
<input
type="text"
id="coupon"
placeholder="Gutscheincode eingeben"
minlength="3"
maxlength="32"
/>
<div id="coupon-error" class="error"></div>
</div>
<button type="submit" id="checkout-btn">Kauf abschließen</button>
</form>
</div>
<script>
// Initialisierung
komerza.init("your-store-id");
// Warenkorbzusammenfassung anzeigen
function updateCartSummary() {
const basket = komerza.getBasket();
const count = komerza.getBasketItemCount();
if (count === 0) {
document.getElementById("cart-summary").innerHTML = `
<p class="error">Ihr Warenkorb ist leer</p>
`;
document.getElementById("checkout-btn").disabled = true;
return;
}
document.getElementById("cart-summary").innerHTML = `
<p>${count} Artikel im Warenkorb</p>
`;
}
// Checkout verarbeiten
async function handleCheckout(event) {
event.preventDefault();
// Vorherige Fehler löschen
document.getElementById("email-error").textContent = "";
document.getElementById("coupon-error").textContent = "";
document.getElementById("email").classList.remove("field-error");
document.getElementById("coupon").classList.remove("field-error");
const email = document.getElementById("email").value.trim();
const coupon = document.getElementById("coupon").value.trim();
// Grundlegende clientseitige Validierung
if (!email) {
document.getElementById("email-error").textContent =
"E-Mail ist erforderlich";
return;
}
// Schaltfläche deaktivieren und Ladeindikator anzeigen
const btn = document.getElementById("checkout-btn");
const originalText = btn.textContent;
btn.disabled = true;
btn.textContent = "Wird verarbeitet...";
try {
// Sicherung vor dem Checkout erstellen
komerza.createBasketBackup();
// Checkout versuchen
const response = await komerza.checkout(email, coupon || undefined);
// Wenn wir hier ankommen, ist der Checkout fehlgeschlagen (keine Weiterleitung)
if (!response.success) {
// Validierungsfehler behandeln
if (response.invalidFields) {
response.invalidFields.forEach((field) => {
const errorEl = document.getElementById(
`${field.fieldName}-error`,
);
const inputEl = document.getElementById(field.fieldName);
if (errorEl) errorEl.textContent = field.reason;
if (inputEl) inputEl.classList.add("field-error");
});
} else {
// Allgemeiner Fehler
alert(
response.message ||
"Checkout fehlgeschlagen. Bitte versuchen Sie es erneut.",
);
}
// Warenkorb aus Sicherung wiederherstellen
komerza.restoreBasketFromBackup();
}
} catch (error) {
console.error("Checkout-Fehler:", error);
alert(
"Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es erneut.",
);
// Warenkorb aus Sicherung wiederherstellen
komerza.restoreBasketFromBackup();
} finally {
// Schaltfläche wieder aktivieren
btn.disabled = false;
btn.textContent = originalText;
}
}
// Anzeige initialisieren
updateCartSummary();
</script>
</body>
</html>
Fehlerbehandlung
Häufige Fehlerszenarien und deren Behandlung:
Leerer Warenkorb
const response = await komerza.checkout(email);
if (!response.success && response.message === "Basket is empty") {
alert("Bitte legen Sie Artikel in den Warenkorb, bevor Sie zur Kasse gehen");
}
Validierungsfehler
const response = await komerza.checkout(email, coupon);
if (!response.success && response.invalidFields) {
response.invalidFields.forEach((field) => {
console.log(`${field.fieldName}: ${field.reason}`);
// Fehler neben dem zugehörigen Formularfeld anzeigen
});
}
Allgemeine Fehler
try {
await komerza.checkout(email, coupon);
} catch (error) {
// Netzwerkfehler oder andere Ausnahme
console.error("Checkout fehlgeschlagen:", error);
alert(
"Checkout konnte nicht abgeschlossen werden. Überprüfen Sie Ihre Verbindung.",
);
}