docs: Bienenpatenschaft mit SEPA-Schutz, Stripe-Einrichtung und Abo-Stufen je Monat
Docker Image bauen und veroeffentlichen / lint (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / typecheck (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / test (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / build-and-push (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / lint (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / typecheck (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / test (push) Canceled after 0s
Docker Image bauen und veroeffentlichen / build-and-push (push) Canceled after 0s
Abo-Stufen 1 bis 24 je bezahltem Monat, danach VIP. SEPA fuer Abos mit Neukunden-Frist, Verzug und Sperre nach Rueckbuchung. Stripe-Einrichtung erst im Testmodus per Skript, Livemodus nur nach Freigabe. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
4bcf90a8d9
commit
86f2145115
1 file changed
+70
-20
@@ -318,11 +318,10 @@ Das betrifft nur die digitale Darstellung, nicht den Druck.
|
||||
|
||||
### 3. Abo-Stufen und VIP (Teilprojekt 5)
|
||||
|
||||
- Grundlage: ununterbrochen bezahlte Abo-Dauer.
|
||||
- Vorgabe des Inhabers: Stufen bis 24, danach eine Stufe ohne Zahl, „VIP“,
|
||||
als Zeichen besonders hoher Wertschätzung. Ob die 24 Jahre oder Monate
|
||||
meint, ist offen (siehe „Offene Fragen“). Die Schwellen sind im Admin
|
||||
pflegbar, damit sich das ohne Codeänderung anpassen lässt.
|
||||
- Grundlage: ununterbrochen bezahlte Abo-Monate.
|
||||
- Vorgabe: Stufe 1 bis 24, je bezahltem Monat eine Stufe, danach eine Stufe
|
||||
ohne Zahl, „VIP“, als Zeichen besonders hoher Wertschätzung. Die Schwellen
|
||||
sind im Admin pflegbar und lassen sich ohne Codeänderung anpassen.
|
||||
- VIP bekommt eine eigene Medaille und eine VIP-Kennzeichnung im Konto. Weitere
|
||||
Vorteile (Rabatt, Versand) gehören nicht zum Umfang und lassen sich später
|
||||
über die bestehenden Rabattcodes ergänzen.
|
||||
@@ -453,10 +452,8 @@ hat:
|
||||
- Nach der Ernte: Der Inhaber legt im Admin die Erntefenster fest. Geliefert
|
||||
wird im nächsten Fenster, sobald seit der letzten Lieferung mindestens sechs
|
||||
Monate bezahlt sind.
|
||||
- Bezahlt heißt: Stripe meldet die Rechnung als bezahlt. Bei SEPA-Lastschrift
|
||||
ist eine Rückbuchung bis acht Wochen möglich. Empfehlung: Abos zuerst nur mit
|
||||
Karte und Wallets (Apple Pay, Google Pay) anbieten. SEPA ist eine
|
||||
Entscheidung des Inhabers.
|
||||
- Bezahlt heißt: Stripe meldet die Rechnung als bezahlt, bei SEPA zusätzlich
|
||||
die Regeln unter „SEPA-Lastschrift und Rückbuchungen“.
|
||||
- Fehlgeschlagene Zahlung: Stripe versucht es automatisch erneut. Solange das
|
||||
Abo im Verzug ist, entsteht keine Lieferung. Scheitern alle Versuche, endet
|
||||
das Abo wie bei einer Kündigung.
|
||||
@@ -466,6 +463,59 @@ hat:
|
||||
- Widerruf innerhalb von 14 Tagen: Bis dahin ist kein Honig verschickt, es
|
||||
entsteht kein Warenverlust.
|
||||
|
||||
### SEPA-Lastschrift und Rückbuchungen
|
||||
|
||||
Abos lassen sich mit Karte, Apple Pay, Google Pay und SEPA-Lastschrift
|
||||
bezahlen.
|
||||
|
||||
Grenze, die keine Einstellung aufhebt: Bei einer SEPA-Lastschrift kann der
|
||||
Kunde acht Wochen lang ohne Angabe von Gründen bei seiner Bank die Erstattung
|
||||
verlangen, bei einer nicht autorisierten Lastschrift 13 Monate lang. Das ist
|
||||
Bankrecht. Stripe kann es nicht verhindern und solche Rückbuchungen nicht
|
||||
anfechten. Stripe berechnet dafür außerdem eine Gebühr. Der Schutz liegt
|
||||
deshalb in der Lieferlogik von Wabenhain:
|
||||
|
||||
1. Lieferung nur gegen bezahlte Monate (siehe oben). Eine Rückbuchung kann
|
||||
höchstens Honig betreffen, der schon bezahlt erschien.
|
||||
2. Neukunden-Frist: Bei SEPA zählt die erste Abo-Zahlung eines Kontos erst
|
||||
nach einer Frist für den Lieferanspruch. Vorgabe 56 Tage, also die
|
||||
Acht-Wochen-Frist. Die erste Lieferung kommt dadurch bei SEPA etwas später,
|
||||
alle weiteren normal. Die Frist ist im Admin einstellbar (0 schaltet sie
|
||||
ab). Die Verkaufsseite nennt sie bei der Zahlart.
|
||||
3. Rückbuchung erkannt (`charge.dispute.created`, im Webhook schon
|
||||
abonniert): Das Abo geht sofort auf `IM_VERZUG`, offene Lieferungen werden
|
||||
gestoppt und ihre Reservierung freigegeben, die Abo-Stufe ruht. Der Kunde
|
||||
bekommt eine Mail mit der Bitte, den Betrag zu begleichen. Der Fall
|
||||
erscheint in der Aufmerksamkeitsliste.
|
||||
4. Wird der Betrag nicht binnen 14 Tagen bezahlt, endet das Abo wie bei einer
|
||||
Kündigung. Der Anspruch auf den Betrag bleibt bestehen. Ob er eingefordert
|
||||
wird, entscheidet der Inhaber.
|
||||
5. Ein Konto mit einer Rückbuchung kann neue Abos nur noch mit Karte oder
|
||||
Wallet abschließen. Der Admin kann diese Sperre aufheben.
|
||||
|
||||
### Stripe-Einrichtung
|
||||
|
||||
Die Einrichtung erfolgt in Teilprojekt 4, zuerst im Testmodus, dann
|
||||
identisch im Livemodus. Was per API geht, legt ein Einrichtungsskript im Repo
|
||||
an (wiederholbar, ohne Geheimnisse im Code). Was nur im Dashboard geht,
|
||||
steht als Checkliste in `docs/EINRICHTUNG.md`.
|
||||
|
||||
- Zahlarten für Abo-Checkout: Karte, Apple Pay, Google Pay, SEPA-Lastschrift
|
||||
(Mandat wird im Checkout erteilt).
|
||||
- Billing: Smart Retries für fehlgeschlagene Zahlungen, nach dem letzten
|
||||
Versuch Abo kündigen. Stripe-eigene Kundenmails zu Rechnungen aus, weil
|
||||
Wabenhain eigene Rechnungen und Mails schickt.
|
||||
- Kundenportal: nur Zahlungsart ändern. Kündigung und Tarifwechsel im Portal
|
||||
aus, weil die Kündigung über den eigenen Kündigungsbutton läuft.
|
||||
- Webhook-Endpunkt: bestehende Ereignisse plus
|
||||
`customer.subscription.created`, `customer.subscription.updated`,
|
||||
`customer.subscription.deleted`, `invoice.paid`,
|
||||
`invoice.payment_failed`, `charge.dispute.closed`.
|
||||
- Produkte und Preise der Abo-Angebote legt der Admin über Wabenhain an,
|
||||
nicht von Hand im Stripe-Dashboard.
|
||||
- Tests mit Stripe Test Clocks (Abo über mehrere Monate) und
|
||||
SEPA-Testkonten, darunter eines, das eine Rückbuchung auslöst.
|
||||
|
||||
### Lieferaufträge
|
||||
|
||||
Ein täglicher Lauf im CronJob `wabenhain-certificates` prüft fällige
|
||||
@@ -585,14 +635,16 @@ vorherigen Revision. Medaillen sind ebenso versioniert.
|
||||
(eindeutig), Status (`AKTIV`, `IM_VERZUG`, `GEKUENDIGT`, `BEENDET`),
|
||||
Beginn, Kündigung wirksam zum, Ende
|
||||
- `SubscriptionPayment`: Abo, `stripeInvoiceId` (eindeutig), bezahlt am,
|
||||
Betrag, Wabenhain-Rechnung, zählt für Lieferung (ja/nein)
|
||||
Betrag, Zahlart, zählt für Lieferung ab (Datum, bei SEPA-Neukunden nach
|
||||
der Frist), zurückgebucht am, Wabenhain-Rechnung
|
||||
- `SubscriptionDelivery`: Abo, fällig am, Gläser, Status, erzeugte Bestellung
|
||||
- `HarvestWindow`: Zeitraum, geplante Abo-Gläser je Angebot
|
||||
- `SponsorshipTransfer`: Patenschaft, Token-Hash, gültig bis, erstellt von,
|
||||
eingelöst von, eingelöst am, widerrufen am
|
||||
- `LoyaltyLevel`: Art (`STAMMKUNDE`, `ABO`), Schwelle, Name, Medaillendesign;
|
||||
VIP als Stufe ohne Zahl
|
||||
- `Customer.stripeCustomerId`
|
||||
- `Customer.stripeCustomerId`, `Customer.sepaBlockedAt` (gesetzt nach einer
|
||||
Rückbuchung)
|
||||
|
||||
Statuswerte der Patenschaft: `AUSSTEHEND`, `FEHLER`, `BEREIT`, `GEDRUCKT`.
|
||||
Aktiv, abgelaufen und gekündigt werden aus Daten berechnet.
|
||||
@@ -762,6 +814,9 @@ Originalgröße. 3D-Ansicht auf Desktop, 390 px mobil, mit
|
||||
- Bestand: Einzelverkauf kann reservierte Abo-Gläser nicht kaufen;
|
||||
Kontingent voll stoppt neue Abos
|
||||
- doppelte Stripe-Abo-Ereignisse: eine Rechnung, eine Zahlung
|
||||
- SEPA: erste Zahlung zählt erst nach der Neukunden-Frist; Rückbuchung
|
||||
stoppt Lieferungen, setzt das Abo in Verzug, sperrt SEPA für das Konto;
|
||||
ohne Ausgleich endet das Abo nach 14 Tagen
|
||||
- Treuestufen: Erstattung senkt die Stammkunden-Stufe
|
||||
- E2E (Playwright): Einmalkauf mit Stripe-Testkarte bis zur 3D-Ansicht im
|
||||
Konto; Abo-Abschluss mit Stripe-Testuhr (Test Clock) über drei Monate
|
||||
@@ -783,13 +838,6 @@ Kontrolle und einer Vorführung. Gesamtabnahme:
|
||||
8. Druck- und Korrekturablauf im Admin
|
||||
9. offene geschäftliche Konfiguration (Liste unten)
|
||||
|
||||
## Offene Fragen an den Inhaber
|
||||
|
||||
1. Abo-Stufen „bis 24“: Jahre oder Monate? Die Schwellen sind pflegbar, die
|
||||
Antwort bestimmt nur die Vorgabe.
|
||||
2. SEPA-Lastschrift für Abos anbieten (Rückbuchungsrisiko bis acht Wochen)
|
||||
oder zuerst nur Karte und Wallets?
|
||||
|
||||
## Geschäftliche Konfiguration vor Veröffentlichung
|
||||
|
||||
1. Preise kaufmännisch prüfen: Einmalpakete und Abo-Monatspreise mit Honig,
|
||||
@@ -802,8 +850,10 @@ Kontrolle und einer Vorführung. Gesamtabnahme:
|
||||
„nach bezahlten Monaten“, Übertragung auf eigene Verantwortung. Rechtlich
|
||||
prüfen lassen.
|
||||
5. Datenschutzerklärung: Namen Dritter, Speicherdauer, Stripe Billing.
|
||||
6. Stripe: Billing aktivieren, Kundenportal nur für Zahlungsart einrichten,
|
||||
Webhook-Ereignisse ergänzen.
|
||||
6. Stripe-Livemodus freigeben: Die Einrichtung (siehe „Stripe-Einrichtung“)
|
||||
läuft erst im Testmodus. Den Livemodus stellt das Skript erst nach
|
||||
ausdrücklicher Freigabe des Inhabers um. Neukunden-Frist für SEPA
|
||||
bestätigen (Vorgabe 56 Tage).
|
||||
7. Versandstaffel für Patenschaftspakete anlegen.
|
||||
8. Logo als SVG oder PNG mit mindestens 300 dpi hochladen.
|
||||
9. Material bevorraten: Urkundenpapier (200–250 g/m², matt, naturweiß),
|
||||
|
||||
Reference in new issue
Block a user