intermediate
stripe
payments
integration

Stripe-Integration einrichten

Vollstandige Anleitung zur Konfiguration der Stripe-Zahlungsabwicklung fur Ihren Levy Fleets-Betrieb, einschliesslich API-Schlussel, Webhooks und Testmodus

Levy Fleets TeamDecember 25, 202520 min read

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:

  1. Ein Stripe-Konto - Erstellen Sie eines unter stripe.com, falls Sie noch keines haben
  2. Admin-Zugang zu Ihrem Levy Fleets Dashboard
  3. Zugang zu Umgebungsvariablen - Vercel-Dashboard oder Serverkonfiguration
  4. Verstandnis Ihres Zahlungsmodells - Wallet-basiert oder Nachzahlung

Umgebungsvariablen

Erforderliche Variablen

Konfigurieren Sie diese Umgebungsvariablen, damit Stripe funktioniert:

VariableBeschreibungBeispiel
STRIPE_SECRET_KEYLive-Modus-Geheimschlusselsk_live_...
STRIPE_WEBHOOK_SECRETWebhook-Signierungsgeheimniswhsec_...
STRIPE_PUBLISHABLE_KEYLive-Modus-offentlicher Schlusselpk_live_...

Optionale Variablen (Testmodus)

Fur Entwicklung und Tests:

VariableBeschreibungBeispiel
STRIPE_TEST_SECRET_KEYTestmodus-Geheimschlusselsk_test_...
STRIPE_TEST_PUBLISHABLE_KEYTestmodus-offentlicher Schlusselpk_test_...

Zusatzliche Variablen

VariableBeschreibungBeispiel
CRON_SECRETAuthentifizierung fur Cron-Job-EndpunkteZufallszeichenkette mit 32+ Zeichen

Ihre Stripe-Schlussel abrufen

1

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.

2

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!

3

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.

4

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 erfassen
  • charge.failed - Fehlgeschlagene Zahlungsversuche verfolgen
  • charge.captured - Erfasste Vorautorisierungen aufzeichnen
  • charge.updated - Abbuchungsaktualisierungen synchronisieren
  • charge.refunded - Ruckerstattungen verfolgen
  • charge.expired - Abgelaufene Abbuchungen behandeln
  • charge.pending - Ausstehende Abbuchungen verfolgen

Streitfall-Ereignisse

  • charge.dispute.created
  • charge.dispute.updated
  • charge.dispute.closed
  • charge.dispute.funds_withdrawn
  • charge.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 verknupfen
  • customer.updated - Kundenanderungen synchronisieren
  • customer.deleted - Kundenloschung behandeln

Identitatsereignisse (bei Verwendung von ID-Verifizierung)

  • identity.verification_session.requires_input
  • identity.verification_session.processing
  • identity.verification_session.canceled
  • identity.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:

  1. Super-Admin-Benutzer - Alle Benutzer mit der Rolle super_admin verwenden automatisch den Testmodus
  2. 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:

KartennummerBeschreibung
4242 4242 4242 4242Erfolgreiche Zahlung
4000 0000 0000 0002Karte abgelehnt
4000 0000 0000 9995Unzureichendes Guthaben
4000 0027 6000 3184Authentifizierung erforderlich
5555 5555 5555 4444Mastercard
3782 822463 10005American 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:

EinstellungBeschreibung
ZahlungssystemWahlen Sie "Wallet" oder "Nachzahlung"
Mindest-Wallet-GuthabenErforderliches Guthaben zum Starten einer Fahrt (z.B. 5,00 $)
AufladeoptionenVerfugbare Betrage mit optionalen Boni
Auto-AufladungAutomatische Wallet-Auffullung aktivieren
Auto-AufladebetragBetrag, der bei Auslosung abgebucht wird
Auto-AufladeausloserGuthabenstand, der Auto-Aufladung auslost

Wallet-System vs. Nachzahlung

FunktionWallet-SystemNachzahlung
VorfinanzierungErforderlichNicht erforderlich
FahrtabrechnungVom Wallet abgezogenNach der Fahrt abgebucht
Fehlgeschlagene ZahlungenWallet wird negativZahlungswiederholungs-Warteschlange
KundenreibungHoher (muss aufladen)Niedriger
CashflowBesser (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:

  1. Unterkonto-Einstellung - Auto-Aufladung auf dem Unterkonto aktiviert
  2. Kundenpraferenz - Kunde muss sich fur Auto-Aufladung anmelden
  3. Zahlungsmethode - Kunde muss eine Standard-Zahlungsmethode haben
  4. Stripe-Kunde - Kunde muss eine verknupfte Stripe-Kunden-ID haben

Funktionsweise

  1. Fahrt endet oder periodische Prufung lauft
  2. System pruft, ob Wallet-Guthaben bei oder unter dem Schwellenwert liegt
  3. System erwirbt eine Sperre, um doppelte Abbuchungen zu verhindern
  4. Stripe PaymentIntent wird mit Idempotenzschlussel erstellt
  5. Bei Erfolg wird Wallet-Guthaben gutgeschrieben
  6. Sperre wird freigegeben

Verhinderung doppelter Abbuchungen

Das System verwendet zwei Mechanismen zur Verhinderung doppelter Abbuchungen:

  1. Datenbanksperre - Spalten verfolgen Sperrstatus und Ablauf
  2. 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

ZeitraumWiederholungsfrequenzDetails
Tag 13 VersucheSofort, +4 Stunden, +8 Stunden
Tage 2-71 Versuch pro TagUm 9 Uhr UTC
Nach Tag 71 Versuch pro WocheAlle 7 Tage
Maximum6 MonateJobs laufen nach 180 Tagen ab

Zahlungsmethoden-Rotation

Bei Wiederholungen durchlauft das System alle gespeicherten Zahlungsmethoden:

  1. Zuerst Standard-Zahlungsmethode - Versucht die bevorzugte Karte des Kunden
  2. Dann andere Karten nach Alter - Alteste Karten werden zuerst versucht
  3. 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:

ModusBeschreibung
disabledKeine Identitatsverifizierung erforderlich
all_usersAlle Kunden mussen ihre Identitat verifizieren
risk_basedNur Hochrisiko-Kunden erfordern Verifizierung

Risikobasierte Verifizierung

Bei Verwendung des risikobasierten Modus:

  1. Stripe Radar bewertet Zahlungen (0-100)
  2. Risikostufen: normal (10), elevated (50), highest (75)
  3. Wenn Punktzahl >= Schwellenwert, ist Verifizierung erforderlich
  4. 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

RichtlinieBeschreibung
disabledKeine Verifizierungsabbuchungen
first_rideSperre nur bei der ersten Fahrt des Kunden
all_ridesSperre bei jedem Fahrtstart

Funktionsweise von Sperren

  1. Autorisierung erstellt - Keine tatsachliche Abbuchung, nur eine Sperre
  2. Karte validiert - Bestatigt, dass Karte aktiv ist und Guthaben hat
  3. Sperre freigegeben - Automatisch nach der Fahrt oder innerhalb von 7 Tagen freigegeben
  4. Nie erfasst - Verifizierungssperren werden nie in tatsachliche Abbuchungen umgewandelt

Datenbankintegration

Wichtige Tabellen

TabelleZweck
customersSpeichert stripe_customer_id und Wallet-Guthaben
payment_methodsSpeichert verknupfte Zahlungsmethoden
stripe_chargesSpiegelt alle Stripe-Abbuchungen
stripe_webhook_logsProtokolliert alle Webhook-Ereignisse
wallet_transactionsZeichnet alle Wallet-Gutschriften/-Abbuchungen auf

Cron-Jobs

Mehrere Cron-Jobs unterstutzen das Zahlungssystem:

CronZeitplanZweck
/api/cron/automatic-refundsAlle 5 MinutenAutomatische Ruckerstattungen verarbeiten
/api/cron/payment-retriesAlle 5 MinutenFehlgeschlagene Zahlungen wiederholen
/api/cron/bill-active-ridesJede MinuteLaufende Fahrten abrechnen

Alle Cron-Endpunkte erfordern den CRON_SECRET-Header zur Authentifizierung.

Lokale Entwicklung

Testen mit Stripe CLI

1

Stripe CLI installieren

Laden Sie die Stripe CLI von stripe.com/docs/stripe-cli herunter und installieren Sie sie

2

Bei Stripe anmelden

Fuhren Sie stripe login aus, um sich bei Ihrem Stripe-Konto zu authentifizieren

3

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:

  1. Uberprufen Sie, ob das Geheimnis mit Ihrem Stripe-Dashboard ubereinstimmt
  2. Stellen Sie sicher, dass keine Middleware den Anfragetext andert
  3. Prufen Sie den korrekten Header-Namen: stripe-signature

"Kunde nicht gefunden" in Stripe

Ursache: Kunde wurde in Stripe geloscht oder nie synchronisiert

Losung:

  1. Prufen Sie stripe_customer_id in der Kundentabelle
  2. Uberprufen Sie, ob die ID im Stripe-Dashboard existiert
  3. Loschen Sie die ID und lassen Sie das System sie neu erstellen

Zahlungen werden nicht synchronisiert

Ursache: Webhook-Endpunkt falsch konfiguriert oder fehlerhaft

Losung:

  1. Prufen Sie stripe_webhook_logs auf Fehler
  2. Uberprufen Sie die Webhook-URL im Stripe-Dashboard
  3. Senden Sie fehlgeschlagene Ereignisse vom Stripe-Dashboard erneut
  4. Prufen Sie Anwendungsprotokolle auf Fehler

Testmodus funktioniert nicht

Ursache: Test-Schlussel nicht konfiguriert

Losung:

  1. Fugen Sie STRIPE_TEST_SECRET_KEY und STRIPE_TEST_PUBLISHABLE_KEY hinzu
  2. Uberprufen Sie, ob Schlussel mit sk_test_ und pk_test_ beginnen
  3. Prufen Sie, ob Benutzer eine @levyelectric.com-E-Mail oder super_admin-Rolle hat

Bewährte Sicherheitspraktiken

  1. Niemals vollstandige Kartennummern protokollieren - Nur last4 wird gespeichert
  2. Webhook-Geheimnisse rotieren - Regelmasig andern
  3. Separate Test-/Live-Schlussel verwenden - Niemals Umgebungen mischen
  4. Radar aktivieren - Stripes Betrugserkennung
  5. Auf Anomalien uberwachen - Alarme fur ungewohnliche Aktivitaten einrichten
  6. PCI-Konformitat - Niemals rohe Kartendaten serverseitig verarbeiten

Nachste Schritte

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.