Stripe-Integration einrichten
Levy Fleets verwendet Stripe als primaren Zahlungsabwickler fur alle Finanztransaktionen. Diese umfassende Anleitung behandelt die vollstandige Einrichtung und Konfiguration der Stripe-Integration fur Flottenbetreiber, einschliesslich API-Schlussel, Webhooks, Testmodus und erweiterte Funktionen.
Was Stripe abwickelt
Stripe unterstutzt alle zahlungsbezogenen Funktionen in Levy Fleets:
- Fahrtzahlungen und -einzuge - Abbuchung von Kunden fur Fahrten
- Wallet-Aufladungen - Manuelle und automatische Guthabenaufladungen
- Speicherung von Zahlungsmethoden - Sichere Speicherung von Kundenkarten
- Identitatsverifizierung - KYC uber Stripe Identity
- Ruckerstattungsabwicklung - Ruckzahlung von Geldern an Kunden
- Zahlungswiederholungen - Wiederherstellung fehlgeschlagener Zahlungen
PCI-Konformitat
Durch die Verwendung von Stripe wahrt Levy Fleets die PCI-Konformitat. Kartendaten werden niemals auf unseren Servern gespeichert - nur tokenisierte Referenzen werden aufbewahrt, was das hochste Mass an Zahlungssicherheit gewahrleistet.
Voraussetzungen
Bevor Sie die Stripe-Integration konfigurieren, stellen Sie sicher, dass Sie Folgendes haben:
- Ein Stripe-Konto - Erstellen Sie eines unter stripe.com, falls Sie noch keines haben
- Admin-Zugang zu Ihrem Levy Fleets Dashboard
- Zugang zu Umgebungsvariablen - Vercel-Dashboard oder Serverkonfiguration
- Verstandnis Ihres Zahlungsmodells - Wallet-basiert oder Nachzahlung
Umgebungsvariablen
Erforderliche Variablen
Konfigurieren Sie diese Umgebungsvariablen, damit Stripe funktioniert:
| Variable | Beschreibung | Beispiel |
|---|---|---|
STRIPE_SECRET_KEY | Live-Modus-Geheimschlussel | sk_live_... |
STRIPE_WEBHOOK_SECRET | Webhook-Signierungsgeheimnis | whsec_... |
STRIPE_PUBLISHABLE_KEY | Live-Modus-offentlicher Schlussel | pk_live_... |
Optionale Variablen (Testmodus)
Fur Entwicklung und Tests:
| Variable | Beschreibung | Beispiel |
|---|---|---|
STRIPE_TEST_SECRET_KEY | Testmodus-Geheimschlussel | sk_test_... |
STRIPE_TEST_PUBLISHABLE_KEY | Testmodus-offentlicher Schlussel | pk_test_... |
Zusatzliche Variablen
| Variable | Beschreibung | Beispiel |
|---|---|---|
CRON_SECRET | Authentifizierung fur Cron-Job-Endpunkte | Zufallszeichenkette mit 32+ Zeichen |
Ihre Stripe-Schlussel abrufen
Zugang zum Stripe-Dashboard
Melden Sie sich bei Ihrem Stripe-Konto unter dashboard.stripe.com an. Stellen Sie sicher, dass Sie das richtige Konto uber den Kontowechsler in der oberen linken Ecke anzeigen.
API-Schlussel finden
Navigieren Sie zu Developers in der linken Seitenleiste und klicken Sie dann auf API Keys. Sie sehen sowohl den Publishable key als auch den Secret key. Klicken Sie auf "Reveal", um Ihren Geheimschlussel anzuzeigen - halten Sie diesen vertraulich!
Webhook-Geheimnis einrichten
Navigieren Sie zu Developers > Webhooks. Klicken Sie auf Add endpoint und geben Sie Ihre Webhook-URL ein: https://ihre-domain.com/api/webhooks/stripe. Wahlen Sie die zu uberwachenden Ereignisse aus (siehe Abschnitt Webhook-Ereignisse unten) und klicken Sie dann auf Add endpoint. Klicken Sie auf Ihren neuen Webhook-Endpunkt und klicken Sie auf Reveal unter "Signing secret", um Ihr STRIPE_WEBHOOK_SECRET zu erhalten.
Umgebung konfigurieren
Fugen Sie die Schlussel zu Ihren Umgebungsvariablen in Vercel oder Ihrer Hosting-Plattform hinzu.
Geheimnisse sicher aufbewahren
Committen Sie niemals API-Schlussel in die Versionskontrolle und teilen Sie sie nicht offentlich. Ihr Geheimschlussel bietet vollen Zugriff auf Ihr Stripe-Konto und sollte wie ein Passwort behandelt werden.
Webhook-Konfiguration
Webhooks ermoglichen es Stripe, Levy Fleets uber Zahlungsereignisse zu benachrichtigen. Konfigurieren Sie Ihren Webhook-Endpunkt, um diese Ereignisse zu empfangen:
Erforderliche Webhook-Ereignisse
Abbuchungsereignisse
charge.succeeded- Erfolgreiche Zahlungen erfassencharge.failed- Fehlgeschlagene Zahlungsversuche verfolgencharge.captured- Erfasste Vorautorisierungen aufzeichnencharge.updated- Abbuchungsaktualisierungen synchronisierencharge.refunded- Ruckerstattungen verfolgencharge.expired- Abgelaufene Abbuchungen behandelncharge.pending- Ausstehende Abbuchungen verfolgen
Streitfall-Ereignisse
charge.dispute.createdcharge.dispute.updatedcharge.dispute.closedcharge.dispute.funds_withdrawncharge.dispute.funds_reinstated
Payment Intent-Ereignisse
payment_intent.succeeded- Abgeschlossene Zahlungen verarbeiten
Setup Intent-Ereignisse
setup_intent.succeeded- Neue Zahlungsmethoden speichern
Kundenereignisse
customer.created- Stripe-Kunden mit Ihrer Datenbank verknupfencustomer.updated- Kundenanderungen synchronisierencustomer.deleted- Kundenloschung behandeln
Identitatsereignisse (bei Verwendung von ID-Verifizierung)
identity.verification_session.requires_inputidentity.verification_session.processingidentity.verification_session.canceledidentity.verification_session.verified
Webhook-Sicherheit
Alle Webhooks werden automatisch uber den Signaturmechanismus von Stripe verifiziert. Das System protokolliert auch alle Webhook-Ereignisse in der Tabelle stripe_webhook_logs fur Prufungs- und Debugging-Zwecke.
Testmodus vs. Live-Modus
Automatische Testmodus-Auswahl
Das System verwendet automatisch den Testmodus fur:
- Super-Admin-Benutzer - Alle Benutzer mit der Rolle super_admin verwenden automatisch den Testmodus
- Interne E-Mails - Jeder Kunde mit einer
@levyelectric.com-E-Mail verwendet den Testmodus
Dies ermoglicht sicheres Testen ohne Risiko von Produktionsabbuchungen.
Testmodus-Verhalten
Im Testmodus:
- Alle Stripe-API-Aufrufe verwenden Test-Geheimschlussel
- Zahlungsmethoden verwenden Test-Kartennummern
- Es wird kein echtes Geld abgebucht
- Der Testmodus wird in der Dashboard-Oberflache angezeigt
Test-Kartennummern
Verwenden Sie diese Testkarten fur die Entwicklung:
| Kartennummer | Beschreibung |
|---|---|
4242 4242 4242 4242 | Erfolgreiche Zahlung |
4000 0000 0000 0002 | Karte abgelehnt |
4000 0000 0000 9995 | Unzureichendes Guthaben |
4000 0027 6000 3184 | Authentifizierung erforderlich |
5555 5555 5555 4444 | Mastercard |
3782 822463 10005 | American Express |
Verwenden Sie ein beliebiges gultiges zukunftiges Ablaufdatum und eine beliebige 3-stellige CVC (4 Stellen fur Amex).
Zahlungssystem-Konfiguration
Unterkonto-Zahlungseinstellungen
Jedes Unterkonto kann sein Zahlungssystem unter Einstellungen > Zahlungen konfigurieren:
| Einstellung | Beschreibung |
|---|---|
| Zahlungssystem | Wahlen Sie "Wallet" oder "Nachzahlung" |
| Mindest-Wallet-Guthaben | Erforderliches Guthaben zum Starten einer Fahrt (z.B. 5,00 $) |
| Aufladeoptionen | Verfugbare Betrage mit optionalen Boni |
| Auto-Aufladung | Automatische Wallet-Auffullung aktivieren |
| Auto-Aufladebetrag | Betrag, der bei Auslosung abgebucht wird |
| Auto-Aufladeausloser | Guthabenstand, der Auto-Aufladung auslost |
Wallet-System vs. Nachzahlung
| Funktion | Wallet-System | Nachzahlung |
|---|---|---|
| Vorfinanzierung | Erforderlich | Nicht erforderlich |
| Fahrtabrechnung | Vom Wallet abgezogen | Nach der Fahrt abgebucht |
| Fehlgeschlagene Zahlungen | Wallet wird negativ | Zahlungswiederholungs-Warteschlange |
| Kundenreibung | Hoher (muss aufladen) | Niedriger |
| Cashflow | Besser (vorausbezahlt) | Verzogert |
Empfehlung
Die meisten Betreiber bevorzugen das Wallet-System fur besseren Cashflow und weniger Zahlungsausfalle. Die Bonusstruktur fordert auch grossere Einzahlungen.
Auto-Auflade-System
Die Auto-Aufladung belastet automatisch die Karte eines Kunden, wenn sein Wallet-Guthaben unter einen Schwellenwert fallt.
Anforderungen
Damit die Auto-Aufladung funktioniert:
- Unterkonto-Einstellung - Auto-Aufladung auf dem Unterkonto aktiviert
- Kundenpraferenz - Kunde muss sich fur Auto-Aufladung anmelden
- Zahlungsmethode - Kunde muss eine Standard-Zahlungsmethode haben
- Stripe-Kunde - Kunde muss eine verknupfte Stripe-Kunden-ID haben
Funktionsweise
- Fahrt endet oder periodische Prufung lauft
- System pruft, ob Wallet-Guthaben bei oder unter dem Schwellenwert liegt
- System erwirbt eine Sperre, um doppelte Abbuchungen zu verhindern
- Stripe PaymentIntent wird mit Idempotenzschlussel erstellt
- Bei Erfolg wird Wallet-Guthaben gutgeschrieben
- Sperre wird freigegeben
Verhinderung doppelter Abbuchungen
Das System verwendet zwei Mechanismen zur Verhinderung doppelter Abbuchungen:
- Datenbanksperre - Spalten verfolgen Sperrstatus und Ablauf
- Stripe-Idempotenzschlussel - Eindeutiger Schlussel pro Auto-Aufladeversuch
Zahlungswiederholungs-System
Wenn das Wallet eines Kunden negativ wird, versucht das System automatisch, den ausstehenden Betrag einzuziehen.
Wiederholungszeitplan
| Zeitraum | Wiederholungsfrequenz | Details |
|---|---|---|
| Tag 1 | 3 Versuche | Sofort, +4 Stunden, +8 Stunden |
| Tage 2-7 | 1 Versuch pro Tag | Um 9 Uhr UTC |
| Nach Tag 7 | 1 Versuch pro Woche | Alle 7 Tage |
| Maximum | 6 Monate | Jobs laufen nach 180 Tagen ab |
Zahlungsmethoden-Rotation
Bei Wiederholungen durchlauft das System alle gespeicherten Zahlungsmethoden:
- Zuerst Standard-Zahlungsmethode - Versucht die bevorzugte Karte des Kunden
- Dann andere Karten nach Alter - Alteste Karten werden zuerst versucht
- Zyklus zurucksetzen - Bei jedem neuen Planungsfenster werden alle Methoden erneut versucht
Automatischer Erlass
Guthaben unter 0,50 $ werden automatisch erlassen (Stripe-Minimum ist 0,50 $ fur USD-Abbuchungen).
Identitatsverifizierung (Stripe Identity)
Levy Fleets integriert Stripe Identity fur die Kundenidentitatsverifizierung.
Verifizierungsmodi
Konfigurieren Sie die Identitatsverifizierung auf Unterkonto-Ebene:
| Modus | Beschreibung |
|---|---|
disabled | Keine Identitatsverifizierung erforderlich |
all_users | Alle Kunden mussen ihre Identitat verifizieren |
risk_based | Nur Hochrisiko-Kunden erfordern Verifizierung |
Risikobasierte Verifizierung
Bei Verwendung des risikobasierten Modus:
- Stripe Radar bewertet Zahlungen (0-100)
- Risikostufen:
normal(10),elevated(50),highest(75) - Wenn Punktzahl >= Schwellenwert, ist Verifizierung erforderlich
- Kunde ist bis zur Verifizierung gesperrt
Verifizierungsabbuchungen (temporare Sperren)
Das System kann temporare Autorisierungssperren auf Kundenkarten setzen, um die Gultigkeit der Zahlungsmethode zu verifizieren.
Sperrrichtlinien
| Richtlinie | Beschreibung |
|---|---|
disabled | Keine Verifizierungsabbuchungen |
first_ride | Sperre nur bei der ersten Fahrt des Kunden |
all_rides | Sperre bei jedem Fahrtstart |
Funktionsweise von Sperren
- Autorisierung erstellt - Keine tatsachliche Abbuchung, nur eine Sperre
- Karte validiert - Bestatigt, dass Karte aktiv ist und Guthaben hat
- Sperre freigegeben - Automatisch nach der Fahrt oder innerhalb von 7 Tagen freigegeben
- Nie erfasst - Verifizierungssperren werden nie in tatsachliche Abbuchungen umgewandelt
Datenbankintegration
Wichtige Tabellen
| Tabelle | Zweck |
|---|---|
customers | Speichert stripe_customer_id und Wallet-Guthaben |
payment_methods | Speichert verknupfte Zahlungsmethoden |
stripe_charges | Spiegelt alle Stripe-Abbuchungen |
stripe_webhook_logs | Protokolliert alle Webhook-Ereignisse |
wallet_transactions | Zeichnet alle Wallet-Gutschriften/-Abbuchungen auf |
Cron-Jobs
Mehrere Cron-Jobs unterstutzen das Zahlungssystem:
| Cron | Zeitplan | Zweck |
|---|---|---|
/api/cron/automatic-refunds | Alle 5 Minuten | Automatische Ruckerstattungen verarbeiten |
/api/cron/payment-retries | Alle 5 Minuten | Fehlgeschlagene Zahlungen wiederholen |
/api/cron/bill-active-rides | Jede Minute | Laufende Fahrten abrechnen |
Alle Cron-Endpunkte erfordern den CRON_SECRET-Header zur Authentifizierung.
Lokale Entwicklung
Testen mit Stripe CLI
Stripe CLI installieren
Laden Sie die Stripe CLI von stripe.com/docs/stripe-cli herunter und installieren Sie sie
Bei Stripe anmelden
Fuhren Sie stripe login aus, um sich bei Ihrem Stripe-Konto zu authentifizieren
Webhooks weiterleiten
Fuhren Sie stripe listen --forward-to localhost:3000/api/webhooks/stripe aus, um Webhook-Ereignisse an Ihren lokalen Server weiterzuleiten. Die CLI zeigt ein Webhook-Signierungsgeheimnis fur lokale Tests an.
Testereignisse auslosen
# Ein charge.succeeded-Ereignis auslosen
stripe trigger charge.succeeded
# Ein payment_intent.succeeded-Ereignis auslosen
stripe trigger payment_intent.succeeded
Uberwachung und Debugging
Webhook-Protokolle prufen
Zeigen Sie aktuelle Webhook-Aktivitaten in Ihrer Datenbank an:
SELECT
event_type,
status,
COUNT(*) as count,
MAX(processed_at) as last_seen
FROM stripe_webhook_logs
WHERE processed_at > NOW() - INTERVAL '24 hours'
GROUP BY event_type, status
ORDER BY last_seen DESC;
Analyse fehlgeschlagener Zahlungen
SELECT
decline_reason,
COUNT(*) as count,
SUM(amount) / 100.0 as total_usd
FROM stripe_charges
WHERE status = 'failed'
AND created_at > NOW() - INTERVAL '7 days'
GROUP BY decline_reason
ORDER BY count DESC;
Fehlerbehebung
Haufige Probleme
"Webhook-Signaturverifizierung fehlgeschlagen"
Ursache: Falsches STRIPE_WEBHOOK_SECRET oder Anderung des Anfragetexts
Losung:
- Uberprufen Sie, ob das Geheimnis mit Ihrem Stripe-Dashboard ubereinstimmt
- Stellen Sie sicher, dass keine Middleware den Anfragetext andert
- Prufen Sie den korrekten Header-Namen:
stripe-signature
"Kunde nicht gefunden" in Stripe
Ursache: Kunde wurde in Stripe geloscht oder nie synchronisiert
Losung:
- Prufen Sie
stripe_customer_idin der Kundentabelle - Uberprufen Sie, ob die ID im Stripe-Dashboard existiert
- Loschen Sie die ID und lassen Sie das System sie neu erstellen
Zahlungen werden nicht synchronisiert
Ursache: Webhook-Endpunkt falsch konfiguriert oder fehlerhaft
Losung:
- Prufen Sie
stripe_webhook_logsauf Fehler - Uberprufen Sie die Webhook-URL im Stripe-Dashboard
- Senden Sie fehlgeschlagene Ereignisse vom Stripe-Dashboard erneut
- Prufen Sie Anwendungsprotokolle auf Fehler
Testmodus funktioniert nicht
Ursache: Test-Schlussel nicht konfiguriert
Losung:
- Fugen Sie
STRIPE_TEST_SECRET_KEYundSTRIPE_TEST_PUBLISHABLE_KEYhinzu - Uberprufen Sie, ob Schlussel mit
sk_test_undpk_test_beginnen - Prufen Sie, ob Benutzer eine
@levyelectric.com-E-Mail oder super_admin-Rolle hat
Bewährte Sicherheitspraktiken
- Niemals vollstandige Kartennummern protokollieren - Nur last4 wird gespeichert
- Webhook-Geheimnisse rotieren - Regelmasig andern
- Separate Test-/Live-Schlussel verwenden - Niemals Umgebungen mischen
- Radar aktivieren - Stripes Betrugserkennung
- Auf Anomalien uberwachen - Alarme fur ungewohnliche Aktivitaten einrichten
- PCI-Konformitat - Niemals rohe Kartendaten serverseitig verarbeiten
Nachste Schritte
- Zahlungsmethoden - Kundenzahlungsmethoden verwalten
- Automatische Ruckerstattungen - Wie automatische Ruckerstattungen funktionieren
- Schadensgebuhren - Kunden fur Schaden belasten
Integration abgeschlossen
Sobald Ihre Stripe-Integration konfiguriert und getestet ist, sind Sie bereit, Zahlungen zu verarbeiten. Uberwachen Sie Ihr Stripe-Dashboard und Levy Fleets-Analysen, um die Zahlungsleistung zu verfolgen und Probleme schnell zu identifizieren.