5.8 KiB
Webshop – Livegang
Reihenfolge für den Inhaber. Jeder Schritt braucht seine Freigabe; nichts davon hat Claude gegen Produktion oder das
Live-Stripe-Konto ausgeführt. Code: Portal feature/webshop (Worktree dev-webshop), WOMS feature/webshop
(Worktree ticket.webklar.com/dev-webshop). Beide Zweige bauen auf feature/terminplaner-tp2 auf.
0. Voraussetzung
- TP2 (Terminplaner-Verkauf) ist live. Der Webshop nutzt das Funktionen-Register aus TP2. Erst TP2 nach
main(Portal) bzw.test(WOMS), dann diesen Zweig darauf mergen (git merge origin/mainim Worktree, Tests laufen lassen). - Der Zweig
feature/oeffnungszeitenbaut ebenfalls auf TP2 auf. Wer zuerst live geht, ist egal; der zweite merged den ersten nach (Konflikte erwartbar inserver/config.jsfeatures,public/app.js,public/funktionen.js,test/mailTemplates.test.js(Vorlagen-IDs),server/index.js).
1. Stripe-Dashboard (WEBklar-Konto, live)
- Connect aktivieren: Einstellungen → Connect → Plattformprofil ausfüllen: „Plattform/Software, deren Nutzer an eigene Kunden verkaufen“, Geldfluss Direct Charges, keine Plattformgebühr, Konten mit eigenem vollen Stripe-Dashboard (Standard-Konten). Danach unter Connect → Branding Name „WEBklar“, Icon und Farbe für das Onboarding.
- Connect-Webhook anlegen: Entwickler → Webhooks → Endpunkt hinzufügen, „Ereignisse in verbundenen Konten“,
URL
https://project.webklar.com/api/shop/stripe-webhook, Ereignisse:account.updated,checkout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed,checkout.session.expired,charge.refunded. Das Signatur-Geheimnis (whsec_…) kommt in Schritt 2 in die.env. - Nichts weiter: Händler-Konten legt das Portal selbst an, wenn ein Händler „Stripe-Konto einrichten“ klickt.
2. Server-Konfiguration
In /home/webklar/apps/.env:
SHOP_ENABLED=pilot
SHOP_PILOT_EMAILS=kenso.gri@gmail.com
STRIPE_CONNECT_WEBHOOK_SECRET=whsec_…
In /home/webklar/apps/docker-compose.yml beim Dienst kundenbereich-server die drei Variablen durchreichen
(SHOP_ENABLED=${SHOP_ENABLED:-off}, SHOP_PILOT_EMAILS=${SHOP_PILOT_EMAILS:-},
STRIPE_CONNECT_WEBHOOK_SECRET=${STRIPE_CONNECT_WEBHOOK_SECRET:-}) und danach
docker compose -f /home/webklar/apps/docker-compose.yml up -d --no-deps kundenbereich-server
(ein docker restart liest die .env nicht neu). Artikelbilder liegen unter build/upload-data/shop/ (gitignored,
überleben Deploys wie die News-Fotos).
3. Datenbank und Stripe-Preis (vor dem Deploy)
cd /home/webklar/apps/kundenbereich.webklar.com/build
docker exec -w /app webklar-kundenbereich-server node scripts/shop-setup.mjs --check
docker exec -w /app webklar-kundenbereich-server node scripts/shop-setup.mjs
docker exec -w /app webklar-kundenbereich-server node scripts/stripe-products.mjs --pruefen
docker exec -w /app webklar-kundenbereich-server node scripts/stripe-products.mjs --anlegen # legt shopSetup 299 € an
shop-setup.mjs legt fünf Collections an (shopConfig, shopProducts, shopOrders, shopWiderrufe,
shopRechtstexteArchiv). Die Käufer-Mails laufen über termineOutbox; die Collection kommt aus dem TP2-Livegang
(scripts/termine-setup.mjs). Die Skripte müssen aus dem neuen Code laufen (nach Schritt 4 oder vorher aus dem Worktree
mit derselben Umgebung).
4. Deploy
- Portal:
feature/webshop→mainpushen (Webhook deployt). - WOMS:
feature/webshop→testpushen; danach im WOMS „Rechtliches“:scripts/setup-legal.mjslaufen lassen (neue Karten „Leistungsbeschreibung Webshop“, „AVV Webshop“) und die Fassungen 2026-10-05 hochladen (public/rechtliches/leistungsbeschreibung-webshop-2026-10-05.pdf,avv-webshop-2026-10-05.pdf). - Prüfen:
https://project.webklar.com/rechtliches/leistungsbeschreibung-webshop.htmlund…/avv-webshop.htmlantworten 200;https://project.webklar.com/embed/shop.jsantwortet 200.
5. Pilot mit dem Testkonto
- Im Portal als Testkunde: Funktionen → Webshop → Anfrage stellen (Projekt
test-website). - WOMS → Kunde → Funktionen → Webshop → „Anfrage annehmen“ (Mail K24 kommt an).
- Einrichtung: entweder bestellen (299 €, danach in Stripe erstatten) oder im WOMS „Aktivieren (ohne Zahlung)“ (Pilot-Adressen brauchen keine Textform).
- Einbau nach
docs/funktionen/shop-einbau.mdauf der Test-Website, Ticket schließen → Freischaltung, Mail K16. - Portal → Webshop → Übersicht → „Stripe-Konto einrichten“ (echtes Onboarding mit den Daten von WEBklar oder einem Testbetrieb; Stripe prüft Identität und Bankkonto).
- Einstellungen ausfüllen (Steuerart wählen!), einen Artikel für 1,00 € anlegen, Rechtstexte: Muster einsetzen, Platzhalter ersetzen, Impressum-/Datenschutz-URL, bestätigen, „Shop öffnen“.
- Testkauf auf der Website mit echter Karte → Mails G09 (Käufer) und K25 (Händler) prüfen → im Portal „Versendet“ (G10) → „Erstatten“ (G13) → im Stripe-Dashboard des Händlers sichtbar.
- Widerruf über den Fußzeilen-Link testen (G12 mit Datum und Uhrzeit, K26 an den Händler).
6. Freigabe für alle
- Kanzlei-Paket
docs/rechtliches/webshop-kanzlei-paket.mdan die Kanzlei, Befund einarbeiten (neue Fassung, falls sich Texte ändern; ausgelieferte Fassungen werden nie überschrieben). - Checkliste in Abschnitt 7 des Kanzlei-Pakets abhaken.
SHOP_ENABLED=on, Compose neu anwenden (wie Schritt 2).
Zurück
SHOP_ENABLED=off blendet die Kachel aus und stoppt neue Bestellungen. Bestehende Shops (Zustand aktiv oder
abgeschaltet) behalten ihre Widerrufsfunktion, ihre Fristen und die Löschjobs laufen weiter. Einzelne Shops schaltet das
Team im WOMS ab (Funktionen → Webshop → „Abschalten“), die Daten werden 90 Tage danach gelöscht.