From 4ab154bfa25466845f879af03dabbb2eee02d3cd Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 14:10:21 +0000 Subject: [PATCH] Wartungs-Abo v2: Rechtsrunde umgesetzt - Bestellseite: Pflichtangaben direkt ueber dem Button, Zahlungsarten, Wahl des Leistungsbeginns (sofort / nach Widerrufsfrist via 15 Tage Stripe-Probezeit), keine Vorauswahl - Zustimmungsnachweis: Zeitpunkt, Version, Wahl, IP, Browser in Stripe- Metadaten und Appwrite (neue Attribute, Setup-Skript ergaenzt) - Checkout: Karte + SEPA (Fallback nur Karte), korrigierter Hinweistext - Vertragsbestaetigung mit PDF der Vertragsunterlagen statt HTML - Kuendigen/Widerrufen: Formular direkt (keine Zwischenseite), Wunsch- termin, Druck/PDF der Bestaetigung, Vorbefuellung bei Login - Widerrufsbutton im Abo waehrend der Frist, 'beginnt am'-Status - Pilotbetrieb per ABO_PILOT_EMAILS - Vertragsbedingungen v2, Datenschutzerklaerung, Kalkulator ohne MwSt und mit 100/80 EUR Co-Authored-By: Claude Opus 5.5 --- docs/WEBklar-Datenschutzerklaerung.pdf | Bin 84709 -> 85138 bytes docs/WEBklar-Leitfaden-Empfehlungsgeber.pdf | Bin 45880 -> 45880 bytes ...EBklar-Wartungs-Abo-Vertragsunterlagen.pdf | Bin 205485 -> 203719 bytes public/abo-bedingungen.html | 2 +- public/app.js | 91 ++++++++----- public/dashboard.html | 20 ++- public/datenschutz.html | 5 +- public/kalkulation.html | 6 +- public/kalkulation.js | 14 +- public/kuendigen.html | 61 +++++---- public/legal-form.css | 6 + public/legal-form.js | 60 ++++++--- public/login.html | 8 +- public/widerrufen.html | 29 ++--- scripts/setup-abo-collections.mjs | 6 + server/config.js | 11 +- server/routes/abo.js | 123 +++++++++++++----- server/services/stripeBilling.js | 75 +++++++++-- 18 files changed, 354 insertions(+), 163 deletions(-) diff --git a/docs/WEBklar-Datenschutzerklaerung.pdf b/docs/WEBklar-Datenschutzerklaerung.pdf index 43f816875a99cbad2a70ab09c59c3cce29ad6ecc..9486c6a2986644fe9b4da3981e4cebdb7a0dce64 100644 GIT binary patch delta 31634 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 delta 31188 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 diff --git a/docs/WEBklar-Leitfaden-Empfehlungsgeber.pdf b/docs/WEBklar-Leitfaden-Empfehlungsgeber.pdf index 3e6afe826e025454d3470c7b09a914f66771ae39..68b2665a29c25e5e7961f0f150c62c4215c5b3de 100644 GIT binary patch delta 30 icmdn-jA_R+rVTNStR@B)#>SHq8Ra0X%`J>uHUa>pp$ZHD delta 30 icmdn-jA_R+rVTNSti}dr1{RYO8Ra0X%`J>uHUa>pbqWdq diff --git a/public/WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf b/public/WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf index 2a62689a27047f55f7d1be64a804b5f5fd9e8bf9..ff3b568ce1ef209c9ca156d0f07880f400eac64f 100644 GIT binary patch delta 54718 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 delta 56184 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 ahb-ORtQsM;%Ho(%bBD*obm;MV_ BereichMaßnahmen Rechenzentrum und ZutrittBetrieb im Rechenzentrum der Hetzner Online GmbH in Falkenstein (Deutschland). Hetzner ist nach ISO/IEC 27001 zertifiziert. Zutritt, Stromversorgung, Klimatisierung und Brandschutz regeln die Maßnahmen von Hetzner. - Zugang zu den SystemenSerververwaltung nur per SSH mit Schlüssel, keine Anmeldung per Passwort. Firewall, die nur benötigte Dienste zulässt. Automatische Sperre bei wiederholten Fehlversuchen. Zwei-Faktor-Anmeldung für die Verwaltungskonten bei Hetzner, Stripe und dem E-Mail-Anbieter. Persönliche Konten für jede berechtigte Person. + Zugang zu den SystemenSerververwaltung nur über verschlüsselte SSH-Verbindung, Zugang nur für die Gesellschafter. Automatische Sperre bei wiederholten Fehlversuchen. Firewall des Rechenzentrumsbetreibers, die nur die benötigten Dienste zulässt. Zwei-Faktor-Anmeldung für die Verwaltungskonten bei Hetzner und Stripe. Zugriff auf DatenZugriff nur für die Gesellschafter und beauftragte Mitarbeiter, soweit ihre Aufgabe es erfordert. Im Kundenportal sieht jeder Kunde nur seine eigenen Daten. Datenbanken sind nur für die jeweilige Anwendung erreichbar. ÜbertragungVerschlüsselte Übertragung (TLS) für alle Websites, das Kundenportal und die Verwaltung. E-Mail-Versand und -Abruf nur verschlüsselt. NachvollziehbarkeitÄnderungen an Websites laufen über eine Versionsverwaltung (Git) und sind nachvollziehbar. Aufträge und Weisungen werden im Ticketsystem bzw. im Chat des Kundenportals dokumentiert. diff --git a/public/app.js b/public/app.js index 1d9b840..187ff2f 100644 --- a/public/app.js +++ b/public/app.js @@ -579,10 +579,10 @@ async function pollChatBadge() { // --------------------------------------------------------------------------- const ABO_FEATURES = [ - ['Betrieb & Pflege Ihrer Website/Anwendung', 'Server, Updates, Sicherheit, Backups, Monitoring – damit sie online bleibt'], + ['Betrieb & Pflege Ihrer Website/Anwendung', 'Server in Deutschland, Updates, Sicherheit, tägliche Datensicherung, Überwachung'], ['1 Domain inklusive', 'Registrierung auf Ihren Namen, DNS- und Zertifikatsverwaltung'], - ['1 E-Mail-Postfach', 'mit Ihrer eigenen Domain'], - ['1 Stunde Arbeitszeit pro Monat', 'sammelt sich an, jede Stunde ist 12 Monate gültig'], + ['1 E-Mail-Postfach', 'mit Ihrer eigenen Domain, 5 GB Speicher'], + ['1 Stunde Arbeitszeit pro Monat', 'nicht genutzte Zeit bleibt 12 Monate verfügbar'], ] function fmtHours(min) { @@ -598,6 +598,13 @@ function aboFeaturesHtml() { ).join('')}` } +function lateStartDate() { + // Beginn nach der 14-tägigen Widerrufsfrist = 15 Tage nach heute + const d = new Date() + d.setDate(d.getDate() + 15) + return d.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' }) +} + function renderAboOffer(card, data, { ended } = {}) { const available = data.available card.innerHTML = ` @@ -612,25 +619,38 @@ function renderAboOffer(card, data, { ended } = {}) {
${available - ? 'Keine Mindestlaufzeit. Gemäß § 19 UStG ohne Umsatzsteuer.' + ? 'Keine Mindestlaufzeit. Zahlung per Kreditkarte oder SEPA-Lastschrift. Gemäß § 19 UStG ohne Umsatzsteuer.' : 'Die Online-Bestellung wird gerade eingerichtet – schreiben Sie uns gern im Chat.'}
` @@ -647,9 +667,13 @@ function renderAboOffer(card, data, { ended } = {}) { const errEl = card.querySelector('#abo-error') hideError(errEl) const acceptTerms = card.querySelector('#abo-terms').checked - const earlyStart = card.querySelector('#abo-early').checked - if (!acceptTerms || !earlyStart) { - showError(errEl, 'Bitte bestätigen Sie beide Punkte, um zu bestellen.') + const startChoice = card.querySelector('input[name="abo-start-choice"]:checked')?.value || '' + if (!acceptTerms) { + showError(errEl, 'Bitte stimmen Sie den Vertragsbedingungen zu.') + return + } + if (!startChoice) { + showError(errEl, 'Bitte wählen Sie, wann wir mit der Leistung beginnen sollen.') return } btn.disabled = true @@ -657,7 +681,7 @@ function renderAboOffer(card, data, { ended } = {}) { try { const { url } = await api('/api/abo/checkout', { method: 'POST', - body: JSON.stringify({ acceptTerms, earlyStart, termsVersion: data.termsVersion }), + body: JSON.stringify({ acceptTerms, startChoice, termsVersion: data.termsVersion }), }) window.location.href = url } catch (err) { @@ -671,45 +695,52 @@ function renderAboOffer(card, data, { ended } = {}) { function renderAboActive(card, data) { const sub = data.subscription const l = data.ledger || { balanceMinutes: 0, credits: [], usage: [] } - const statusLine = sub.cancelAtPeriodEnd - ? `gekündigt zum ${fmtDateShort(sub.currentPeriodEnd)}` - : sub.paymentProblem - ? 'Zahlung offen' - : `aktiv nächste Abbuchung ${fmtDateShort(sub.currentPeriodEnd)}` + let statusLine + if (sub.serviceStartsAt) { + statusLine = `beginnt am ${fmtDateShort(sub.serviceStartsAt)}` + } else if (sub.cancelAtPeriodEnd) { + statusLine = `gekündigt zum ${fmtDateShort(sub.currentPeriodEnd)}` + } else if (sub.paymentProblem) { + statusLine = 'Zahlung offen' + } else { + statusLine = `aktiv nächste Abbuchung ${fmtDateShort(sub.currentPeriodEnd)}` + } const usageRows = (l.usage || []).map((u) => ` ${fmtDateShort(u.date)} ${escapeHtml(u.topic || u.details || 'Arbeitszeit')}${u.woid ? ` #${escapeHtml(u.woid)}` : ''} - −${fmtHours(u.minutes)}${u.overageMinutes ? ` +${fmtHours(u.overageMinutes)} extra` : ''}`).join('') + −${fmtHours(u.minutes)}${u.overageMinutes ? ` +${fmtHours(u.overageMinutes)} extra` : ''}`).join('') const creditRows = (l.credits || []).slice().reverse().map((c) => ` - ${fmtDateShort(c.grantedAt)}Monatliche Gutschrift - +${fmtHours(c.minutes)} ${c.expired ? 'abgelaufen' : `gültig bis ${fmtDateShort(c.expiresAt)}`}`).join('') + ${fmtDateShort(c.grantedAt)}Monatskontingent + +${fmtHours(c.minutes)} ${c.expired ? 'abgelaufen' : `nutzbar bis ${fmtDateShort(c.expiresAt)}`}`).join('') card.innerHTML = `

Ihr Wartungs-Abo

-

Stundenkonto

+

Stundenkontingent

${statusLine}
${sub.paymentProblem ? '
Die letzte Abbuchung ist fehlgeschlagen. Bitte aktualisieren Sie Ihre Zahlungsart, damit Ihre Website online bleibt.
' : ''} + ${sub.serviceStartsAt ? `
Wie gewählt beginnen wir nach Ablauf der Widerrufsfrist am ${fmtDateShort(sub.serviceStartsAt)}. Dann wird auch zum ersten Mal abgebucht, und Ihre erste Stunde steht bereit.
` : ''}
-
${fmtHours(l.balanceMinutes)}verfügbares Guthaben
+
${fmtHours(l.balanceMinutes)}verfügbare Zeit
${fmtHours(l.usedMinutes)}bisher genutzt
${l.nextExpiry ? `
${fmtHours(l.nextExpiry.minutes)}verfallen am ${fmtDateShort(l.nextExpiry.at)}
` : ''}
-

Jeden Monat kommt 1 Stunde dazu. Abgerechnet wird in 15-Minuten-Schritten, die ältesten Stunden zuerst. +

Jeden bezahlten Monat kommt 1 Stunde dazu. Angerechnet wird in 15-Minuten-Schritten, die ältesten Stunden zuerst. Aufträge schicken Sie uns einfach über den Chat.

+ ${sub.withdrawalOpen ? `Vertrag widerrufenmöglich bis ${fmtDateShort(sub.withdrawalUntil)}` : ''} Leistungen & Bedingungen
${usageRows || creditRows ? `
Verlauf anzeigen - + ${usageRows}${creditRows}
DatumVorgangStunden
DatumVorgangZeit
` : ''} diff --git a/public/dashboard.html b/public/dashboard.html index 49f3bb9..c5bab79 100644 --- a/public/dashboard.html +++ b/public/dashboard.html @@ -146,8 +146,17 @@ .abo-history { margin-top: 14px; } .abo-history summary { cursor: pointer; font-size: 14px; opacity: 0.85; } .abo-history table { margin-top: 10px; } - .portal-legal { margin-top: 40px; font-size: 13px; opacity: 0.7; display: flex; gap: 18px; flex-wrap: wrap; } - .portal-legal a { color: inherit; } + .portal-legal { margin-top: 40px; font-size: 13px; display: flex; gap: 18px; flex-wrap: wrap; align-items: center; } + .portal-legal a { color: rgba(255,255,255,0.7); } + .portal-legal a.legal-strong { color: #fff; font-weight: 700; text-decoration: underline; } + .abo-start-choice { border: none; padding: 0; margin: 14px 0 8px; } + .abo-start-choice legend { font-weight: 700; margin-bottom: 4px; } + .abo-summary-box { margin: 16px 0 10px; padding: 14px 16px; border-radius: 14px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); } + .abo-summary-box .abo-summary { margin-bottom: 6px; } + .abo-summary td:first-child { width: 26%; opacity: 0.75; } + .abo-summary td:last-child { text-align: left; } + .abo-withdraw { color: #fff; font-weight: 700; padding: 9px 16px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.6); text-decoration: none; } + .abo-withdraw:hover { background: #fff; color: #1c1c1c; } @@ -213,9 +222,10 @@ diff --git a/public/datenschutz.html b/public/datenschutz.html index a7e0a66..b2930b1 100644 --- a/public/datenschutz.html +++ b/public/datenschutz.html @@ -86,7 +86,8 @@

Die Zahlungen wickelt die Stripe Payments Europe, Limited, 1 Grand Canal Street Lower, Grand Canal Dock, Dublin, D02 H210, Irland („Stripe“) ab. Stripe verarbeitet die Daten teils in unserem Auftrag und teils als eigener Verantwortlicher, etwa zur Betrugsvorbeugung und zur Erfüllung gesetzlicher Pflichten. Dabei können Daten an die Stripe, LLC in den USA übermittelt werden. Die Stripe, LLC ist nach dem EU-US Data Privacy Framework zertifiziert, für das ein Angemessenheitsbeschluss der EU-Kommission besteht. Auf der Zahlungsseite von Stripe gelten dessen Datenschutzhinweise: stripe.com/de/privacy. Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO.

8. E-Mail

-

Vertragsbestätigungen, Benachrichtigungen und unsere sonstige Korrespondenz versenden wir per E-Mail über [E-MAIL-ANBIETER, festzulegen]. Die Übertragung ist verschlüsselt. Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, bei sonstiger Korrespondenz lit. f DSGVO.

+

Vertragsbestätigungen, Benachrichtigungen und unsere sonstige Korrespondenz versenden und empfangen wir derzeit über den E-Mail-Dienst der Porkbun LLC, 11575 SW Pacific Hwy PMB 40649, Tigard, OR 97223, USA. Dabei werden Inhalte und Verbindungsdaten der E-Mails in den USA verarbeitet. Für Porkbun besteht kein Angemessenheitsbeschluss der EU-Kommission. Die Übermittlung erfolgt, soweit sie zur Durchführung eines Vertrags mit Ihnen oder zur Beantwortung Ihrer Anfrage erforderlich ist (Art. 49 Abs. 1 lit. b DSGVO). Wir stellen unseren E-Mail-Dienst in Kürze auf die Hetzner Online GmbH (Rechenzentrum Nürnberg, Deutschland) um.

+

Die Übertragung ist verschlüsselt. Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, bei sonstiger Korrespondenz lit. f DSGVO. Die E-Mail-Postfächer, die wir Kunden im Rahmen des Wartungs-Abos bereitstellen, liegen bereits bei der Hetzner Online GmbH in Deutschland.

9. Buchhaltung und Rechnungen

Rechnungen erstellen wir mit einer Buchhaltungssoftware, die wir selbst auf unserem Server betreiben, bzw. für das Wartungs-Abo über Stripe. Soweit erforderlich, geben wir Buchhaltungsdaten an unsere Steuerberatung und an Finanzbehörden weiter. Rechtsgrundlage ist Art. 6 Abs. 1 lit. c DSGVO.

@@ -102,7 +103,7 @@
  • Hetzner Online GmbH: Hosting und Datensicherung (Auftragsverarbeiter)
  • Stripe: Zahlungsabwicklung (Abschnitt 7)
  • -
  • unser E-Mail-Anbieter (Abschnitt 8)
  • +
  • Porkbun LLC: unser E-Mail-Dienst bis zur Umstellung (Abschnitt 8)
  • Domain-Registrar und Vergabestellen, sofern wir eine Domain für Sie registrieren (Abschnitt 10)
  • Steuerberatung und Behörden, soweit gesetzlich erforderlich
diff --git a/public/kalkulation.html b/public/kalkulation.html index 8c1bbc3..bdb0f25 100644 --- a/public/kalkulation.html +++ b/public/kalkulation.html @@ -13,7 +13,7 @@ webklar - Netto + Projektpreis 0 € @@ -33,7 +33,7 @@
Ihr Projekt
0 €
-
netto · 0 € brutto inkl. 19 % MwSt.
+
Endpreis · gemäß § 19 UStG ohne Umsatzsteuer
@@ -152,7 +152,7 @@
webklar GbR · Am Schwimmbad 10 · 67722 Winnweiler · 0170 4969375
- Alle Preise netto zzgl. gesetzlicher Umsatzsteuer. Stundenwerte sind Richtwerte. + Alle Preise sind Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer berechnet (Kleinunternehmerregelung). Stundenwerte sind Richtwerte.
diff --git a/public/kalkulation.js b/public/kalkulation.js index c0c99d1..c8f4644 100644 --- a/public/kalkulation.js +++ b/public/kalkulation.js @@ -8,7 +8,8 @@ localStorage des Browsers. */ /* --------------------------------------------------------------- Katalog --- */ -const MWST = 19 +// Kleinunternehmer (§ 19 UStG): alle Preise sind Endpreise, keine Umsatzsteuer +const USt_HINWEIS = 'Gemäß § 19 UStG wird keine Umsatzsteuer berechnet (Kleinunternehmerregelung).' const CATS = [ { @@ -118,7 +119,8 @@ const CATS = [ }, ] -const STAFFEL = [{ max: 5, r: 150 }, { max: 15, r: 130 }, { max: 40, r: 115 }, { max: 1e9, r: 100 }] +// Stundensatz: 100 € für kleine Aufträge, ab 10 Stunden (größeres Projekt) 80 € +const STAFFEL = [{ max: 9.99, r: 100 }, { max: 1e9, r: 80 }] const PEOPLE = { justin: { @@ -285,7 +287,7 @@ function totals() { } return { - sel, hrsNum, rateNum, netNum, grossNum: netNum * (1 + MWST / 100), + sel, hrsNum, rateNum, netNum, mSum, askServer, monthlyItems, hasMonthly: monthlyItems.length > 0, payTitle, payText, flagTitle, flagText, tone, monthly: eur(mSum) + (askServer ? ' +' : ''), @@ -389,7 +391,7 @@ function summaryText() { lines.push('') lines.push(`Summe: ${fmt(t.hrsNum)} Stunden`) lines.push(`Stundensatz: ${eur(t.rateNum)}`) - lines.push(`Projektpreis: ${eur(t.netNum)} netto (${eur(t.grossNum)} brutto inkl. ${MWST} % MwSt.)`) + lines.push(`Projektpreis: ${eur(t.netNum)} (Endpreis, ohne Umsatzsteuer)`) lines.push('', 'ZAHLUNG', `${t.payTitle} — ${t.payText}`) if (t.hasMonthly) { @@ -414,7 +416,7 @@ function summaryText() { if (state.portalEmail) lines.push(`E-Mail: ${state.portalEmail}`) if (state.portalPass) lines.push(`Passwort: ${state.portalPass}`) } - lines.push('', 'Alle Preise netto zzgl. gesetzlicher Umsatzsteuer.') + lines.push('', `Alle Preise sind Endpreise. ${USt_HINWEIS}`) return lines.join('\n') } @@ -425,7 +427,7 @@ function renderNumbers(t) { el('hdr-monthly').textContent = t.hasMonthly ? t.monthly : '–' el('hero-net').textContent = eur(t.netNum) - el('hero-sub').textContent = `netto · ${eur(t.grossNum)} brutto inkl. ${MWST} % MwSt.` + el('hero-sub').textContent = 'Endpreis · gemäß § 19 UStG ohne Umsatzsteuer' el('hero-hrs').textContent = `${fmt(t.hrsNum)} Std` el('hero-rate').textContent = `Stundensatz ${eur(t.rateNum)}/Std` el('hero-monthly').textContent = t.hasMonthly ? t.monthly : '–' diff --git a/public/kuendigen.html b/public/kuendigen.html index b9e326c..317f027 100644 --- a/public/kuendigen.html +++ b/public/kuendigen.html @@ -3,62 +3,59 @@ - Verträge hier kündigen – Webklar + Verträge hier kündigen – WEBklar
- +
WEBKLAR

Verträge hier kündigen

-
-

Hier können Sie Ihr Webklar Wartungs-Abo kündigen, auch ohne Anmeldung. Eine ordentliche Kündigung wirkt zum Ende des bereits bezahlten Monats.

- -

Alternativ im Kundenportal unter „Abo verwalten" oder formlos per E-Mail an kenso.gri@gmail.com.

-
- -
diff --git a/public/legal-form.css b/public/legal-form.css index 57e7bfc..2b1fa52 100644 --- a/public/legal-form.css +++ b/public/legal-form.css @@ -21,3 +21,9 @@ textarea { min-height: 80px; } dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 14px; margin: 12px 0; } dt { color: #6b6b70; } dd { margin: 0; } +.brandline { font-weight: 800; letter-spacing: 0.12em; font-size: 13px; color: #6d1fd1; margin-bottom: 8px; } +fieldset { border: none; padding: 0; margin: 0; } +legend { font-weight: 600; font-size: 14px; margin: 14px 0 4px; } +#effective-date { margin-top: 6px; max-width: 220px; } +.print-btn { margin-top: 14px; background: #fff; color: #1d1d1f; border: 1px solid #cfcac2; border-radius: 10px; padding: 10px 16px; font: inherit; cursor: pointer; } +@media print { .print-btn, .no-print { display: none !important; } body { background: #fff; } .card { border: none; } } diff --git a/public/legal-form.js b/public/legal-form.js index 6eb830a..a11dd88 100644 --- a/public/legal-form.js +++ b/public/legal-form.js @@ -1,21 +1,34 @@ -// Gemeinsame Logik fuer Kuendigungs- (§ 312k BGB) und Widerrufsbutton (§ 356a BGB). -// Oeffentlich, ohne Login. Zweistufig: Einstiegsbutton -> Formular -> Bestaetigungsbutton. +// Oeffentliche Erklaerungsseiten: Kuendigung (§ 312k BGB) und Widerruf (§ 356a BGB). +// Ohne Login erreichbar, Formular sofort sichtbar (keine Zwischenschritte). +// Nach dem Absenden: Bestaetigung mit Datum/Uhrzeit, speicher- und druckbar. function initLegalForm({ endpoint, fields }) { - const intro = document.getElementById('intro') const form = document.getElementById('decl-form') const done = document.getElementById('done') const errEl = document.getElementById('form-error') + const esc = (s) => String(s || '').replace(/[&<>"]/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"' })[c]) - document.getElementById('start-btn').addEventListener('click', () => { - intro.classList.add('hidden') - form.classList.remove('hidden') - form.querySelector('input').focus() - }) + // Angemeldete Kunden nicht erneut identifizieren lassen: Felder vorbefuellen + fetch('/api/auth/me', { credentials: 'same-origin' }) + .then((r) => (r.ok ? r.json() : null)) + .then((me) => { + const c = me?.customer + if (!c) return + if (form.elements.name && !form.elements.name.value) form.elements.name.value = c.name || '' + if (form.elements.email && !form.elements.email.value) form.elements.email.value = c.email || '' + if (form.elements.customerNumber && !form.elements.customerNumber.value) form.elements.customerNumber.value = c.code || '' + }) + .catch(() => {}) const reasonWrap = document.getElementById('reason-wrap') form.querySelectorAll('[name="kind"]').forEach((r) => + r.addEventListener('change', () => reasonWrap?.classList.toggle('hidden', form.kind.value !== 'ausserordentlich')) + ) + const dateInput = document.getElementById('effective-date') + form.querySelectorAll('[name="when"]').forEach((r) => r.addEventListener('change', () => { - reasonWrap?.classList.toggle('hidden', form.kind.value !== 'ausserordentlich') + const onDate = form.when.value === 'datum' + dateInput?.classList.toggle('hidden', !onDate) + if (onDate) dateInput?.focus() }) ) @@ -23,7 +36,8 @@ function initLegalForm({ endpoint, fields }) { ev.preventDefault() errEl.classList.add('hidden') const payload = {} - for (const f of fields) payload[f] = form.elements[f]?.value?.trim?.() ?? form.elements[f]?.value ?? '' + for (const f of fields) payload[f] = String(form.elements[f]?.value ?? '').trim() + if (form.when?.value === 'datum') payload.effective = dateInput?.value || '' const btn = form.querySelector('button[type="submit"]') btn.disabled = true try { @@ -34,17 +48,21 @@ function initLegalForm({ endpoint, fields }) { }) const data = await res.json().catch(() => ({})) if (!res.ok) throw new Error(data.error || `Fehler ${res.status}`) - const at = new Date(data.receivedAt).toLocaleString('de-DE', { dateStyle: 'full', timeStyle: 'short' }) - const esc = (s) => String(s || '').replace(/[&<>"]/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"' })[c]) + const at = new Date(data.receivedAt).toLocaleString('de-DE', { dateStyle: 'full', timeStyle: 'medium' }) document.getElementById('done-at').textContent = at - document.getElementById('done-list').innerHTML = fields - .filter((f) => payload[f]) - .map((f) => `
${esc(form.querySelector(`[data-label-for="${f}"]`)?.dataset.label || f)}
${esc( - form.elements[f]?.type === 'radio' || form.elements[f] instanceof RadioNodeList - ? form.querySelector(`[name="${f}"]:checked`)?.dataset.text || payload[f] - : payload[f] - )}
`) - .join('') + const rows = [['Vertrag', 'WEBklar Wartungs-Abo']] + for (const f of fields) { + if (!payload[f] || f === 'effective') continue + const label = form.querySelector(`[data-label-for="${f}"]`)?.dataset.label || f + const value = form.querySelector(`[name="${f}"]:checked`)?.dataset.text || payload[f] + rows.push([label, value]) + } + if (form.when) { + rows.push(['Zeitpunkt', payload.effective + ? `zum ${new Date(payload.effective + 'T12:00:00').toLocaleDateString('de-DE')} (Ende des dann laufenden Abrechnungsmonats)` + : 'zum nächstmöglichen Zeitpunkt']) + } + document.getElementById('done-list').innerHTML = rows.map(([k, v]) => `
${esc(k)}
${esc(v)}
`).join('') form.classList.add('hidden') done.classList.remove('hidden') window.scrollTo({ top: 0, behavior: 'smooth' }) @@ -54,4 +72,6 @@ function initLegalForm({ endpoint, fields }) { btn.disabled = false } }) + + document.getElementById('print-btn')?.addEventListener('click', () => window.print()) } diff --git a/public/login.html b/public/login.html index 25d5d54..65e9a6f 100644 --- a/public/login.html +++ b/public/login.html @@ -55,9 +55,11 @@ Zugangsdaten erhältst du von Webklar. Passwortänderungen erfolgen über das Ticketsystem.

diff --git a/public/widerrufen.html b/public/widerrufen.html index cdeac73..c9e98c2 100644 --- a/public/widerrufen.html +++ b/public/widerrufen.html @@ -3,47 +3,42 @@ - Vertrag widerrufen – Webklar + Vertrag widerrufen – WEBklar
- +
WEBKLAR

Vertrag widerrufen

-
-

Als Verbraucher können Sie Ihr Webklar Wartungs-Abo innerhalb von 14 Tagen nach Vertragsschluss ohne Angabe von Gründen widerrufen. Einzelheiten stehen in der Widerrufsbelehrung.

- -
- -
diff --git a/scripts/setup-abo-collections.mjs b/scripts/setup-abo-collections.mjs index 1e9a6ed..6427bf5 100644 --- a/scripts/setup-abo-collections.mjs +++ b/scripts/setup-abo-collections.mjs @@ -103,6 +103,12 @@ await ensureCollection( { type: 'datetime', key: 'cancelRequestedAt' }, { type: 'datetime', key: 'withdrawalRequestedAt' }, { type: 'datetime', key: 'confirmationSentAt' }, + // v2 (25.09.2026): Wahl des Leistungsbeginns + Nachweis der Zustimmung + { type: 'string', key: 'startChoice', size: 16 }, + { type: 'datetime', key: 'trialEnd' }, + { type: 'string', key: 'consentIp', size: 64 }, + { type: 'string', key: 'consentUserAgent', size: 300 }, + { type: 'string', key: 'consentTextVersion', size: 32 }, ], [ { key: 'idx_customer', type: 'key', attributes: ['customerId'] }, diff --git a/server/config.js b/server/config.js index 034fc4b..3229c19 100644 --- a/server/config.js +++ b/server/config.js @@ -70,10 +70,19 @@ export const config = { }, abo: { - termsVersion: '2026-09-25', + // Bei jeder Textaenderung an Bedingungen oder Bestellseite hochziehen (wird mit der Zustimmung gespeichert) + termsVersion: '2026-09-25-v2', minutesPerMonth: 60, creditValidityMonths: 12, usageRoundingMinutes: 15, + withdrawalDays: 14, + // "Beginn nach Ablauf der Widerrufsfrist": 15 Tage Probezeit ohne Leistung und ohne Abbuchung + lateStartTrialDays: 15, + // Pilotbetrieb: nur diese Kunden-E-Mails duerfen bestellen (leer = alle) + pilotEmails: (process.env.ABO_PILOT_EMAILS || '') + .split(',') + .map((s) => s.trim().toLowerCase()) + .filter(Boolean), }, smtp: { diff --git a/server/routes/abo.js b/server/routes/abo.js index 66a752a..8e1991d 100644 --- a/server/routes/abo.js +++ b/server/routes/abo.js @@ -10,6 +10,7 @@ import { sendAdminNotice, sendCustomerMail } from '../services/mailer.js' import { ACTIVE_STATUSES, cancelAtPeriodEnd, + cancelSubscriptionAt, constructWebhookEvent, createAboCheckout, createBillingPortalUrl, @@ -27,20 +28,39 @@ const fmtDate = (iso) => const fmtDateTime = (d) => new Date(d).toLocaleString('de-DE', { timeZone: 'Europe/Berlin', dateStyle: 'medium', timeStyle: 'short' }) +function addDays(iso, days) { + const d = new Date(iso) + d.setUTCDate(d.getUTCDate() + days) + return d +} + function publicSubscription(sub) { if (!sub) return null + const active = ACTIVE_STATUSES.has(sub.status) + const withdrawalUntil = sub.startedAt ? addDays(sub.startedAt, config.abo.withdrawalDays) : null return { status: sub.status, - active: ACTIVE_STATUSES.has(sub.status), + active, paymentProblem: sub.status === 'past_due' || sub.status === 'unpaid', startedAt: sub.startedAt, currentPeriodEnd: sub.currentPeriodEnd, cancelAtPeriodEnd: Boolean(sub.cancelAtPeriodEnd), endedAt: sub.endedAt, priceAmount: sub.priceAmount, + startChoice: sub.startChoice || null, + // Beginn nach Ablauf der Widerrufsfrist: Leistung startet mit Ende der Probezeit + serviceStartsAt: sub.status === 'trialing' ? sub.trialEnd : null, + // Widerrufsbutton im Portal nur waehrend der Frist hervorheben + withdrawalOpen: Boolean(active && withdrawalUntil && withdrawalUntil > new Date()), + withdrawalUntil: withdrawalUntil ? withdrawalUntil.toISOString() : null, } } +function isPilotAllowed(customer) { + if (!config.abo.pilotEmails.length) return true + return config.abo.pilotEmails.includes(String(customer?.email || '').toLowerCase()) +} + // --------------------------------------------------------------------------- // Kunde (eingeloggt) // --------------------------------------------------------------------------- @@ -49,11 +69,14 @@ function publicSubscription(sub) { router.get('/', requireSession, async (req, res) => { try { const customerId = getSessionCustomerId(req) - const sub = await getCurrentSubscription(customerId) + const [sub, customer] = await Promise.all([ + getCurrentSubscription(customerId), + getDocument(config.collections.customers, customerId).catch(() => null), + ]) const active = Boolean(sub && ACTIVE_STATUSES.has(sub.status)) const ledger = sub ? await getLedger(customerId, { active }) : null return res.json({ - available: isStripeConfigured(), + available: isStripeConfigured() && isPilotAllowed(customer), termsVersion: config.abo.termsVersion, subscription: publicSubscription(sub), ledger, @@ -69,16 +92,29 @@ router.post('/checkout', requireSession, async (req, res) => { if (req.session.viewAs) { return res.status(403).json({ error: 'Im "Als Kunde ansehen"-Modus kann nicht bestellt werden.' }) } - const { acceptTerms, earlyStart, termsVersion } = req.body || {} - if (acceptTerms !== true || earlyStart !== true) { - return res.status(400).json({ error: 'Bitte bestätigen Sie beide Punkte, um zu bestellen.' }) + const { acceptTerms, startChoice, termsVersion } = req.body || {} + if (acceptTerms !== true) { + return res.status(400).json({ error: 'Bitte stimmen Sie den Vertragsbedingungen zu, um zu bestellen.' }) + } + if (startChoice !== 'sofort' && startChoice !== 'nach_frist') { + return res.status(400).json({ error: 'Bitte wählen Sie, wann wir mit der Leistung beginnen sollen.' }) } if (termsVersion !== config.abo.termsVersion) { return res.status(409).json({ error: 'Die Bedingungen wurden aktualisiert. Bitte Seite neu laden.' }) } const customer = await getDocument(config.collections.customers, getSessionCustomerId(req)) + if (!isStripeConfigured() || !isPilotAllowed(customer)) { + return res.status(403).json({ error: 'Die Online-Bestellung ist noch nicht freigeschaltet.' }) + } + // Nachweis der Zustimmung (§ 305 Abs. 2, § 357a Abs. 2 BGB): Zeitpunkt, Version, Wahl, IP, Browser const now = new Date().toISOString() - const url = await createAboCheckout(customer, { termsAcceptedAt: now, earlyStartConsentAt: now }) + const url = await createAboCheckout(customer, { + termsAcceptedAt: now, + startChoice, + earlyStartConsentAt: startChoice === 'sofort' ? now : '', + consentIp: req.ip, + consentUserAgent: req.get('user-agent') || '', + }) return res.json({ url }) } catch (err) { console.error('[abo] Checkout fehlgeschlagen:', err.message) @@ -105,39 +141,46 @@ router.post('/portal', requireSession, async (req, res) => { async function sendContractConfirmation(subDoc) { if (!subDoc || subDoc.confirmationSentAt || !subDoc.email) return - const terms = await readFile(path.join(publicDir, 'abo-bedingungen.html'), 'utf8').catch(() => null) + const pdfPath = path.join(publicDir, 'WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf') + const pdf = await readFile(pdfPath).catch(() => null) + const lateStart = subDoc.startChoice === 'nach_frist' + const consentLine = lateStart + ? `Sie haben gewählt, dass wir erst nach Ablauf der Widerrufsfrist beginnen. Leistungsbeginn und erste Abbuchung: ${fmtDate(subDoc.trialEnd)}. Bis dahin erbringen wir keine Leistungen und buchen nichts ab.` + : 'Sie haben ausdrücklich verlangt, dass wir vor Ablauf der Widerrufsfrist mit der Leistung beginnen, und wurden darüber informiert, dass Sie bei einem Widerruf einen angemessenen Betrag für die bis dahin erbrachten Leistungen zahlen.' await sendCustomerMail( subDoc.email, - 'Ihr Webklar Wartungs-Abo – Vertragsbestätigung', + 'Ihr WEBklar Wartungs-Abo – Vertragsbestätigung', [ 'Guten Tag,', '', 'vielen Dank für Ihre Bestellung. Hiermit bestätigen wir den Abschluss Ihres Wartungs-Abos:', '', - ' Vertrag: Webklar Wartungs-Abo', - ' Preis: 50,00 € pro Monat (gemäß § 19 UStG ohne Umsatzsteuer)', - ` Vertragsbeginn: ${fmtDate(subDoc.startedAt)}`, - ' Laufzeit: unbestimmt, monatlich zum Ende des bezahlten Monats kündbar', - ' Enthalten: Betrieb & Pflege Ihrer Website/Anwendung, 1 Domain, 1 E-Mail-Postfach,', - ' 1 Stunde Arbeitszeit pro Monat (je 12 Monate gültig)', + ' Vertrag: WEBklar Wartungs-Abo', + ' Preis: 50,00 € pro Monat (gemäß § 19 UStG ohne Umsatzsteuer)', + ` Vertragsschluss: ${fmtDate(subDoc.startedAt)}`, + ` Leistungsbeginn: ${lateStart ? fmtDate(subDoc.trialEnd) : fmtDate(subDoc.startedAt)}`, + ' Laufzeit: unbestimmt, keine Mindestlaufzeit, jederzeit zum Ende des Abrechnungsmonats kündbar', + ' Enthalten: Betrieb und Pflege Ihrer Website bzw. Web-Anwendung, 1 Domain, 1 E-Mail-Postfach,', + ' 1 Stunde Arbeitszeit je bezahltem Monat (12 Monate nutzbar)', '', - `Sie haben am ${fmtDateTime(subDoc.termsAcceptedAt || Date.now())} den Abo-Bedingungen (Stand ${subDoc.termsVersion || config.abo.termsVersion}) zugestimmt`, - 'und ausdrücklich verlangt, dass wir vor Ablauf der Widerrufsfrist mit der Leistung beginnen.', - 'Bei einem Widerruf schulden Sie Wertersatz für die bis dahin erbrachten Leistungen (§ 357a Abs. 2 BGB).', + `Ihre Zustimmung zu den Vertragsbedingungen (Version ${subDoc.termsVersion || config.abo.termsVersion}) haben wir am ${fmtDateTime(subDoc.termsAcceptedAt || Date.now())} erhalten.`, + consentLine, '', - 'Die vollständigen Abo-Bedingungen inkl. Leistungsbeschreibung und Widerrufsbelehrung finden Sie im Anhang', - `sowie unter ${config.publicBaseUrl}/abo-bedingungen.html`, + 'Im Anhang finden Sie die vollständigen Vertragsunterlagen als PDF: Vertragsbedingungen mit Leistungsbeschreibung,', + 'Widerrufsbelehrung mit Muster-Widerrufsformular und Auftragsverarbeitungsvertrag.', '', - `Ihr Stundenkonto sehen Sie jederzeit im Kundenportal: ${config.publicBaseUrl}/dashboard.html`, - `Kündigen: ${config.publicBaseUrl}/kuendigen.html · Widerrufen: ${config.publicBaseUrl}/widerrufen.html`, + `Ihr Stundenkontingent sehen Sie jederzeit im Kundenportal: ${config.publicBaseUrl}/dashboard.html`, + `Vertrag widerrufen: ${config.publicBaseUrl}/widerrufen.html`, + `Verträge hier kündigen: ${config.publicBaseUrl}/kuendigen.html`, '', 'Viele Grüße', - 'Ihr Webklar-Team', + 'Ihr WEBklar-Team', '', - 'WEBklar GbR · Am Schwimmbad 10 · 67722 Winnweiler · kenso.gri@gmail.com', + 'WEBklar GbR · Am Schwimmbad 10 · 67722 Winnweiler · Telefon 0176 23726355 · kenso.gri@gmail.com', + 'Vertreten durch die Gesellschafter Kenso Grimm und Justin Klein', ], - terms - ? [{ filename: `Webklar-Abo-Bedingungen-${config.abo.termsVersion}.html`, content: terms, contentType: 'text/html' }] + pdf + ? [{ filename: 'WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf', content: pdf, contentType: 'application/pdf' }] : [] ) await updateDocument(config.collections.subscriptions, subDoc.$id, { @@ -235,7 +278,7 @@ function validDeclaration(body) { customerNumber: String(body?.customerNumber || '').trim().slice(0, 50), kind: body?.kind === 'ausserordentlich' ? 'ausserordentlich' : 'ordentlich', reason: String(body?.reason || '').trim().slice(0, 2000), - effective: String(body?.effective || '').trim().slice(0, 40), + effective: /^\d{4}-\d{2}-\d{2}$/.test(String(body?.effective || '')) ? String(body.effective) : '', } } @@ -255,10 +298,16 @@ router.post('/public/cancel', async (req, res) => { const receivedAt = new Date() let sub = null + let effectiveAt = null try { sub = await findActiveSubscriptionByEmail(d.email) + if (sub && d.kind === 'ordentlich') { + const requested = d.effective ? new Date(`${d.effective}T12:00:00Z`) : null + const result = await cancelSubscriptionAt(sub.stripeSubscriptionId, requested) + sub = result.subscription + effectiveAt = result.effectiveAt + } if (sub) { - sub = await cancelAtPeriodEnd(sub.stripeSubscriptionId) await updateDocument(config.collections.subscriptions, sub.$id, { cancelRequestedAt: receivedAt.toISOString(), }) @@ -267,9 +316,11 @@ router.post('/public/cancel', async (req, res) => { console.error('[abo] Kuendigung automatisch nicht moeglich:', err.message) } - const effectiveText = sub - ? `Ihr Wartungs-Abo endet zum ${fmtDate(sub.currentPeriodEnd)} (Ende des bezahlten Monats).` - : 'Wir ordnen Ihre Kündigung manuell Ihrem Vertrag zu und bestätigen Ihnen das Vertragsende gesondert.' + const effectiveText = effectiveAt + ? `Ihr Wartungs-Abo endet zum ${fmtDate(effectiveAt)} (Ende des Abrechnungsmonats).` + : d.kind === 'ausserordentlich' + ? 'Ihre außerordentliche Kündigung prüfen wir umgehend und bestätigen Ihnen das Vertragsende gesondert.' + : 'Wir ordnen Ihre Kündigung Ihrem Vertrag zu und bestätigen Ihnen das Vertragsende gesondert.' await sendCustomerMail(d.email, 'Eingangsbestätigung Ihrer Kündigung – Webklar Wartungs-Abo', [ `Guten Tag ${d.name},`, @@ -280,7 +331,7 @@ router.post('/public/cancel', async (req, res) => { ` E-Mail: ${d.email}`, d.customerNumber ? ` Kundennummer: ${d.customerNumber}` : null, ' Vertrag: Webklar Wartungs-Abo', - ` Gewünschter Zeitpunkt: ${d.effective || 'nächstmöglicher Zeitpunkt'}`, + ` Gewünschter Zeitpunkt: ${d.effective ? fmtDate(`${d.effective}T12:00:00Z`) : 'nächstmöglicher Zeitpunkt'}`, d.reason ? ` Grund: ${d.reason}` : null, '', effectiveText, @@ -295,9 +346,11 @@ router.post('/public/cancel', async (req, res) => { `${d.name} <${d.email}> ${d.customerNumber ? `(Kd.-Nr. ${d.customerNumber})` : ''}`, `Art: ${d.kind}, Zeitpunkt: ${d.effective || 'nächstmöglich'}`, d.reason ? `Grund: ${d.reason}` : '', - sub - ? `Automatisch in Stripe zum ${fmtDate(sub.currentPeriodEnd)} gekündigt (${sub.stripeSubscriptionId}).` - : 'KEIN aktives Abo zu dieser E-Mail gefunden -> bitte manuell zuordnen und Vertragsende bestätigen!', + effectiveAt + ? `Automatisch in Stripe zum ${fmtDate(effectiveAt)} gekündigt (${sub.stripeSubscriptionId}).` + : sub + ? `Abo ${sub.stripeSubscriptionId} gefunden, aber NICHT automatisch gekündigt (außerordentlich) -> prüfen und Vertragsende bestätigen!` + : 'KEIN aktives Abo zu dieser E-Mail gefunden -> bitte manuell zuordnen und Vertragsende bestätigen!', d.kind === 'ausserordentlich' ? 'Außerordentliche Kündigung -> Grund prüfen, ggf. sofort beenden.' : '', ]) diff --git a/server/services/stripeBilling.js b/server/services/stripeBilling.js index 12d0c6d..2b0d5a3 100644 --- a/server/services/stripeBilling.js +++ b/server/services/stripeBilling.js @@ -174,6 +174,11 @@ export async function syncSubscription(subscriptionId) { termsVersion: meta.termsVersion || null, termsAcceptedAt: meta.termsAcceptedAt || null, earlyStartConsentAt: meta.earlyStartConsentAt || null, + startChoice: meta.startChoice || null, + trialEnd: toIso(sub.trial_end), + consentIp: meta.consentIp || null, + consentUserAgent: meta.consentUserAgent || null, + consentTextVersion: meta.consentTextVersion || null, }) return doc } @@ -259,7 +264,13 @@ async function getOrCreateStripeCustomer(customer) { return created.id } -export async function createAboCheckout(customer, { termsAcceptedAt, earlyStartConsentAt }) { +/** + * Stripe Checkout fuer das Abo. Der Kunde hat seine Bestellung vorher im Portal + * abgegeben ("Zahlungspflichtig bestellen"); hier hinterlegt er die Zahlungsart. + * startChoice: 'sofort' (Leistung und erste Abbuchung sofort) oder 'nach_frist' + * (15 Tage Probezeit ohne Leistung und ohne Abbuchung, Start nach der Widerrufsfrist). + */ +export async function createAboCheckout(customer, consent) { const current = await getCurrentSubscription(customer.$id) if (current && ACTIVE_STATUSES.has(current.status)) { const err = new Error('Sie haben das Wartungs-Abo bereits abgeschlossen.') @@ -271,35 +282,56 @@ export async function createAboCheckout(customer, { termsAcceptedAt, earlyStartC ensureAboPrice(), getOrCreateStripeCustomer(customer), ]) + const lateStart = consent.startChoice === 'nach_frist' + // Stripe-Metadaten: max. 500 Zeichen je Wert const meta = { webklarCustomerId: customer.$id, email: customer.email || '', termsVersion: config.abo.termsVersion, - termsAcceptedAt, - earlyStartConsentAt, + consentTextVersion: config.abo.termsVersion, + termsAcceptedAt: consent.termsAcceptedAt, + startChoice: consent.startChoice, + earlyStartConsentAt: consent.earlyStartConsentAt || '', + consentIp: String(consent.consentIp || '').slice(0, 64), + consentUserAgent: String(consent.consentUserAgent || '').slice(0, 300), } - const session = await stripe.checkout.sessions.create({ + const params = { mode: 'subscription', customer: stripeCustomerId, client_reference_id: customer.$id, line_items: [{ price: priceId, quantity: 1 }], + payment_method_types: ['card', 'sepa_debit'], locale: 'de', billing_address_collection: 'required', customer_update: { address: 'auto', name: 'auto' }, subscription_data: { metadata: meta, - description: 'Webklar Wartungs-Abo', + description: config.stripe.productName, + ...(lateStart ? { trial_period_days: config.abo.lateStartTrialDays } : {}), }, metadata: meta, custom_text: { submit: { - message: - 'Der Vertrag ist mit Ihrer Bestellung im Kundenportal bereits geschlossen. Hier hinterlegen Sie nur noch die Zahlungsart. 50,00 € monatlich, monatlich kündbar.', + message: lateStart + ? 'Ihre Bestellung haben Sie im Kundenportal abgegeben. Hier hinterlegen Sie die Zahlungsart; mit dem Abschluss kommt der Vertrag zustande. Wie gewählt beginnen wir nach Ablauf der Widerrufsfrist – bis dahin erbringen wir keine Leistungen und buchen nichts ab. Danach 50,00 € monatlich, monatlich kündbar.' + : 'Ihre Bestellung haben Sie im Kundenportal abgegeben. Hier hinterlegen Sie die Zahlungsart; mit der ersten Zahlung kommt der Vertrag zustande. 50,00 € monatlich, monatlich kündbar.', }, }, success_url: `${config.publicBaseUrl}/dashboard.html?abo=success`, cancel_url: `${config.publicBaseUrl}/dashboard.html?abo=cancel`, - }) + } + let session + try { + session = await stripe.checkout.sessions.create(params) + } catch (err) { + // SEPA-Lastschrift noch nicht im Stripe-Konto aktiviert -> nur Karte anbieten + if (/sepa_debit|payment_method_types/i.test(err.message || '')) { + console.warn('[stripe] SEPA-Lastschrift nicht verfuegbar, Checkout nur mit Karte:', err.message) + session = await stripe.checkout.sessions.create({ ...params, payment_method_types: ['card'] }) + } else { + throw err + } + } return session.url } @@ -326,6 +358,33 @@ export async function cancelAtPeriodEnd(subscriptionId) { return syncSubscription(subscriptionId) } +/** + * Kuendigung zu einem Wunschtermin: wirksam zum Ende des Abrechnungsmonats, in dem + * der Wunschtermin liegt (ohne Wunschtermin: Ende des laufenden Monats). + * Liefert das Abo-Dokument und den Beendigungszeitpunkt (ISO). + */ +export async function cancelSubscriptionAt(subscriptionId, requestedDate = null) { + const stripe = getStripe() + const sub = await stripe.subscriptions.retrieve(subscriptionId) + const periodEnd = periodEndOf(sub) + const requested = requestedDate ? Math.floor(requestedDate.getTime() / 1000) : null + if (!requested || !periodEnd || requested <= periodEnd) { + await stripe.subscriptions.update(subscriptionId, { cancel_at_period_end: true }) + const doc = await syncSubscription(subscriptionId) + return { subscription: doc, effectiveAt: toIso(periodEnd) } + } + let boundary = new Date(periodEnd * 1000) + for (let i = 0; i < 36 && boundary.getTime() / 1000 < requested; i += 1) { + boundary = addMonths(new Date(periodEnd * 1000), i + 1) + } + await stripe.subscriptions.update(subscriptionId, { + cancel_at: Math.floor(boundary.getTime() / 1000), + proration_behavior: 'none', + }) + const doc = await syncSubscription(subscriptionId) + return { subscription: doc, effectiveAt: boundary.toISOString() } +} + export function constructWebhookEvent(rawBody, signature) { if (!config.stripe.webhookSecret) { const err = new Error('STRIPE_WEBHOOK_SECRET fehlt')