53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
|
|
AZA – Stripe Vorbereitung (Webhook Skeleton)
|
|||
|
|
|
|||
|
|
Ziel
|
|||
|
|
- Stripe Webhooks sicher empfangen (Signaturprüfung)
|
|||
|
|
- Events auditieren (admin_audit)
|
|||
|
|
- Noch KEINE Plan/Status-Automatik
|
|||
|
|
|
|||
|
|
Voraussetzung
|
|||
|
|
1) Stripe Python SDK installieren:
|
|||
|
|
pip install stripe
|
|||
|
|
|
|||
|
|
2) Umgebungsvariablen setzen:
|
|||
|
|
- AZA_STRIPE_SECRET_KEY="sk_live_..."
|
|||
|
|
- AZA_STRIPE_WEBHOOK_SECRET="whsec_..."
|
|||
|
|
|
|||
|
|
Webhook Endpoint
|
|||
|
|
- POST /stripe/webhook
|
|||
|
|
|
|||
|
|
Was passiert aktuell
|
|||
|
|
- Signatur wird geprüft
|
|||
|
|
- Event wird in admin_audit geloggt:
|
|||
|
|
action = "stripe:<event_type>"
|
|||
|
|
token = "<event_id>"
|
|||
|
|
old_value = "received"
|
|||
|
|
new_value = "ok"
|
|||
|
|
|
|||
|
|
Wichtig
|
|||
|
|
- Der Server muss öffentlich erreichbar sein, damit Stripe den Webhook callen kann.
|
|||
|
|
- Im Stripe Dashboard muss ein Webhook mit deiner URL auf /stripe/webhook zeigen.
|
|||
|
|
|
|||
|
|
Nächster Schritt
|
|||
|
|
- Stripe Events auswerten und daraus users.status / users.plan setzen.
|
|||
|
|
(z.B. invoice.payment_succeeded -> active, invoice.payment_failed -> suspended)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Test (lokal / dev)
|
|||
|
|
1) Stripe CLI installieren und einloggen:
|
|||
|
|
stripe login
|
|||
|
|
|
|||
|
|
2) Webhook lokal weiterleiten (Port/Host anpassen):
|
|||
|
|
stripe listen --forward-to http://localhost:9000/stripe/webhook
|
|||
|
|
|
|||
|
|
Die CLI zeigt dabei einen Webhook-Secret an (whsec_...), den du als
|
|||
|
|
AZA_STRIPE_WEBHOOK_SECRET setzen musst.
|
|||
|
|
|
|||
|
|
3) Test-Event auslösen:
|
|||
|
|
stripe trigger invoice.payment_succeeded
|
|||
|
|
|
|||
|
|
4) Prüfen:
|
|||
|
|
- Server sollte HTTP 200 {"ok": true} zurückgeben
|
|||
|
|
- Audit-Eintrag erscheint über:
|
|||
|
|
POST /admin/audit/list
|