Stripe-Datensynchronisation
Die Stripe-Datensynchronisationsfunktion ermöglicht die Synchronisation von Zahlungsdaten zwischen Stripe und Levy Fleets. Dies umfasst den Import historischer Zahlungen aus CSV-Exporten und Echtzeit-Synchronisation über die Stripe-API. Diese Anleitung behandelt alle Aspekte der Stripe-Integration für das Zahlungsdatenmanagement.
Zugriff auf Stripe-Import
Navigieren Sie zu Admin > Stripe-Import, um auf die Stripe-Datensynchronisationsoberfläche zuzugreifen.
Voraussetzungen:
- Admin-Zugriff auf das System
- Konfigurierte Stripe-Integration
- Gültige Stripe-API-Zugangsdaten (für API-Sync)
Übersicht
Synchronisationsmethoden
| Methode | Beschreibung | Anwendungsfall |
|---|---|---|
| CSV-Import | Stripe-Zahlungsexport hochladen | Historische Daten, Massenimport |
| API-Sync | Von Stripe-API abrufen | Aktuelle Zahlungen, Echtzeit |
| Webhooks | Automatischer Push von Stripe | Laufende Live-Updates |
Erfasste Daten
Bei der Synchronisation von Stripe-Zahlungen werden folgende Daten gespeichert:
Zahlungsdetails:
- Zahlungs-ID, Betrag, Währung, Status
- Erstellungszeitstempel, Erfassungsstatus
- Erstattungsinformationen (Betrag, Datum)
- Payment Intent ID
Karteninformationen:
- Karten-ID, Marke, letzte 4 Ziffern
- Ablaufmonat/-jahr
- Kartenfingerabdruck, Finanzierungstyp
- AVS- und CVC-Verifizierungsstatus
Kundeninformationen:
- Stripe-Kunden-ID
- Kunden-E-Mail und Telefon
- Kundenbeschreibung
Fahrtenmetadaten (aus Zahlungsmetadaten):
- Fahrten-ID, Benutzer-ID, Kunden-ID
- Start-/Endkoordinaten
- Distanz und Dauer
- Zahlungstyp und verwendete Guthaben
Dashboard-Statistiken
Die Stripe-Import-Seite zeigt vier Metrikkarten:
| Metrik | Beschreibung |
|---|---|
| Gesamtzahlungen | Anzahl aller synchronisierten Zahlungsdatensätze |
| Heutige Zahlungen | Heute erstellte Zahlungen |
| Letzte Zahlung | Zeitstempel der aktuellsten Zahlung |
| Webhook-Ereignisse | Gesamt protokollierte Webhook-Ereignisse |
Diese Metriken werden nach jeder Synchronisationsoperation aktualisiert.
CSV-Import
Aus Stripe exportieren
Im Stripe-Dashboard anmelden
Navigieren Sie zu dashboard.stripe.com und melden Sie sich bei Ihrem Konto an.
Zu Zahlungen navigieren
Gehen Sie in der Seitenleiste zu Zahlungen > Alle Zahlungen.
Exportieren klicken
Klicken Sie auf die Schaltfläche Exportieren in der oberen rechten Ecke.
Datumsbereich auswählen
Wählen Sie den Datumsbereich für die zu exportierenden Zahlungen.
CSV-Format wählen
Wählen Sie CSV als Exportformat.
Datei herunterladen
Laden Sie die exportierte Datei auf Ihren Computer herunter.
CSV importieren
- Gehen Sie in Levy Fleets zu Admin > Stripe-Import
- Suchen Sie den Bereich "CSV importieren"
- Ziehen Sie Ihre CSV-Datei per Drag-and-Drop oder klicken Sie zum Durchsuchen
- Klicken Sie auf "CSV importieren (Hintergrund)"
- Der Import-Job beginnt mit der Verarbeitung
Dateigrößenhandhabung
| Dateigröße | Verarbeitungsmethode |
|---|---|
| < 10 MB | Standard-Hintergrundimport |
| 10+ MB | Client-seitiges Parsen mit Stapel-Upload |
Für sehr große Dateien (10+ MB):
- Datei wird im Browser geparst
- Daten werden in 500-Zeilen-Stapeln an den Server gesendet
- Fortschritt wird für jeden Stapel angezeigt
Importfortschritt
Der Import läuft im Hintergrund:
- Fortschrittsbalken zeigt Prozent der Fertigstellung
- Statusaktualisierungen alle 2 Sekunden (Polling)
- Benachrichtigung bei Abschluss
- Fehleranzahl wird angezeigt, falls Probleme auftreten
Zugeordnete CSV-Spalten
Wichtige Spalten aus Stripe-Export:
| Stripe-Spalte | Datenbankfeld |
|---|---|
| id | charge_id |
| Created date (UTC) | created_at |
| Amount | amount |
| Amount Refunded | amount_refunded |
| Currency | currency |
| Status | status |
| Captured | captured |
| Card Last4 | card_last4 |
| Card Brand | card_brand |
| Customer ID | customer_id |
| Customer Email | customer_email |
| ride_number (metadata) | metadata_ride_number |
| user_id (metadata) | metadata_user_id |
| customerId (metadata) | metadata_customer_number |
Plus 40+ zusätzliche Spalten für vollständige Zahlungsdaten.
API-Sync
Manuelle Synchronisation
- Finden Sie auf der Stripe-Import-Seite den Bereich "Manuelle Synchronisation"
- Klicken Sie auf "Letzte 24 Stunden synchronisieren"
- Das System ruft Zahlungen von der Stripe-API ab
- Ergebnisse werden angezeigt: importiert, aktualisiert, Fehler
Was synchronisiert wird
- Alle in den letzten 24 Stunden erstellten Zahlungen
- Paginiertes Abrufen (100 pro Anfrage)
- Automatische Handhabung großer Ergebnismengen
- Upserts (fügt neue ein, aktualisiert bestehende)
Synchronisationsergebnisse
Nach Abschluss der Synchronisation:
- Importiert: Neue hinzugefügte Zahlungen
- Aktualisiert: Bestehende aktualisierte Zahlungen
- Fehler: Zahlungen, die nicht synchronisiert werden konnten
Webhook-Integration
Wie Webhooks funktionieren
Stripe sendet Echtzeit-Benachrichtigungen an Levy Fleets:
- Ereignis tritt in Stripe auf (Zahlung, Bezahlung usw.)
- Stripe sendet POST an
/api/webhooks/stripe - Levy Fleets validiert die Signatur
- Ereignis wird verarbeitet und Daten werden aktualisiert
- Antwort wird an Stripe gesendet
Unterstützte Webhook-Ereignisse
Zahlungsereignisse:
| Ereignistyp | Aktion |
|---|---|
charge.succeeded | Zahlung einfügen/aktualisieren, Risikoscore von Stripe Radar verarbeiten |
charge.failed | Fehlgeschlagene Zahlung aufzeichnen |
charge.captured | Erfassungsstatus aktualisieren |
charge.updated | Zahlungsdatensatz aktualisieren |
charge.refunded | Erstattungsinfo aktualisieren |
charge.expired | Zahlungsstatus aktualisieren |
charge.pending | Zahlungsstatus aktualisieren |
Dispute-Ereignisse:
| Ereignistyp | Aktion |
|---|---|
charge.refund.updated | Erstattungsaktualisierungen protokollieren |
charge.dispute.created | Dispute-Erstellung protokollieren |
charge.dispute.updated | Dispute-Aktualisierungen protokollieren |
charge.dispute.closed | Dispute-Abschluss protokollieren |
charge.dispute.funds_withdrawn | Entzogene Mittel protokollieren |
charge.dispute.funds_reinstated | Wiederhergestellte Mittel protokollieren |
Payment Intent-Ereignisse:
| Ereignistyp | Aktion |
|---|---|
payment_intent.succeeded | Wallet-Guthaben aktualisieren, Zahlungsmethode speichern, Fahrtenzahlung aktualisieren |
setup_intent.succeeded | Zahlungsmethode speichern |
Kundenereignisse:
| Ereignistyp | Aktion |
|---|---|
customer.created | Stripe-Kunde mit Kundendatensatz verknüpfen |
Identitätsverifizierungsereignisse:
| Ereignistyp | Aktion |
|---|---|
identity.verification_session.requires_input | Verifizierungsstatus aktualisieren, Benachrichtigungs-E-Mail senden |
identity.verification_session.processing | Verifizierungsstatus aktualisieren |
identity.verification_session.canceled | Verifizierungsstatus aktualisieren |
identity.verification_session.verified | Verifizierungsstatus aktualisieren, Verifizierungsanforderung aufheben |
Webhooks konfigurieren
Stripe-Entwicklereinstellungen öffnen
Gehen Sie in Ihrem Stripe-Dashboard zu Entwickler > Webhooks
Endpunkt hinzufügen
Klicken Sie auf Endpunkt hinzufügen
Webhook-URL eingeben
Geben Sie die URL ein: https://ihre-domain.com/api/webhooks/stripe
Ereignisse auswählen
Wählen Sie die Ereignisse aus, die Sie empfangen möchten (siehe Liste oben)
Signaturgeheimnis kopieren
Kopieren Sie das Signaturgeheimnis aus den Webhook-Details
Umgebungsvariable hinzufügen
Fügen Sie es Ihren Umgebungsvariablen als STRIPE_WEBHOOK_SECRET hinzu
Import-Job-Verfolgung
Bereich aktive Jobs
Die Seite zeigt aktuell verarbeitete Imports an:
Job-Karte zeigt:
- Dateiname und Größe
- Startzeit
- Fortschrittsbalken (verarbeitet/Gesamtzeilen)
- Status-Badge
Statusindikatoren:
| Status | Badge | Beschreibung |
|---|---|---|
| Verarbeitung | Blauer Spinner | Läuft gerade |
| Abgeschlossen | Grünes Häkchen | Erfolgreich beendet |
| Mit Fehlern abgeschlossen | Gelbe Warnung | Mit einigen Fehlern beendet |
| Fehlgeschlagen | Rotes X | Kritischer Fehler hat Import gestoppt |
Zeilenanzahlen:
- Importiert: Neue erstellte Datensätze
- Aktualisiert: Bestehende aktualisierte Datensätze
- Übersprungen: Übersprungene Zeilen (Duplikate, ungültig)
- Fehler: Fehlgeschlagene Zeilen
Vergangene Jobs anzeigen
Die Import-Jobs-API verfolgt:
- Job-ID und Typ
- Dateiname und Größe
- Start- und Abschlusszeiten
- Zeilenverarbeitungsstatistiken
- Fehlerdetails (JSONB)
Konfliktbehandlung
Duplikatvermeidung
Zahlungen werden durch Stripe-Zahlungs-ID identifiziert:
stripe_charges.idist der PrimärschlüsselON CONFLICT (id) DO UPDATEverhindert Duplikate- Aktualisierungen aktualisieren bestehende Datensätze mit neuen Daten
Kundenabgleich
Bei der Synchronisation werden Kunden abgeglichen nach:
- Stripe-Kunden-ID
- E-Mail-Adresse
- Metadaten customer_id
Datenzusammenführung
Bei Konflikt (bestehende Zahlung):
- Betragsfelder werden aktualisiert
- Status wird aktualisiert
- Erstattungsinfo wird aktualisiert
- Zeitstempel werden beibehalten
- Metadaten werden zusammengeführt
Konfiguration
Erforderliche Umgebungsvariablen
# Stripe-API-Schlüssel
STRIPE_SECRET_KEY=sk_live_... # Live-Geheimschlüssel
STRIPE_WEBHOOK_SECRET=whsec_... # Webhook-Signaturgeheimnis
# Optional
STRIPE_TEST_SECRET_KEY=sk_test_... # Testmodus-Schlüssel
API-Version
Das System verwendet Stripe-API-Version 2023-10-16. Diese ist in der Konfiguration festgelegt und sollte mit Ihren Stripe-Dashboard-Einstellungen übereinstimmen.
Speichern von Zahlungsmethoden
Wenn payment_intent.succeeded- oder setup_intent.succeeded-Ereignisse verarbeitet werden:
- Zahlungsmethoden-ID und Stripe-Kunden-ID werden extrahiert
- Kunde wird über
stripe_customer_idgesucht - Neue Zahlungsmethode wird in
payment_methods-Tabelle gespeichert mit:customer_uuid- Verknüpfung zum Kundendatensatzstripe_payment_method_id- Stripes Zahlungsmethoden-IDtype- Kartentyp (normalerweise 'card')last4- Letzte 4 Ziffern zur Anzeigebrand- Kartenmarke (Visa, Mastercard usw.)
Wallet-Aufladungen
Wenn ein payment_intent.succeeded-Ereignis eine Wallet-Aufladung anzeigt:
Payment Intent-Typen (aus metadata.type):
wallet_topup- Manuelle Wallet-Aufladung durch Kundenauto_topup- Automatische Aufladung bei niedrigem Guthaben ausgelöstride_payment- Direkte Fahrtenzahlung
Verarbeitungsschritte für wallet_topup:
- Kunde wird über Metadaten aufgelöst (
customer_uuid,customer_numberoderuser_id) - Aktuelles Wallet-Guthaben wird aus Kundendatensatz abgerufen
- Zahlungsbetrag wird zum Guthaben addiert
wallet_transactions-Datensatz wird mit Typcrediterstellt- Kundenguthaben wird aktualisiert
Auto-Topup-Behandlung
Bei auto_topup wurden Guthaben und Transaktion bereits vom Client aufgezeichnet, sodass während der Webhook-Verarbeitung keine zusätzliche Wallet-Aktualisierung durchgeführt wird.
Transaktionstypen:
credit- Geld zum Wallet hinzugefügtdebit- Geld vom Wallet ausgegeben
Fahrtzahlungsaktualisierungen
Wenn eine Fahrtenzahlung abgeschlossen wird:
ride_uuidwird aus Metadaten extrahiert- Fahrtendatensatz wird gesucht
total_costwird mit Zahlungsbetrag aktualisiert- Fahrt wird als bezahlt markiert
Risikoscore-Verarbeitung
Aus Zahlungsergebnissen werden Risikodaten erfasst:
| Feld | Beschreibung |
|---|---|
stripe_risk_score | 0-100 Risikoscore |
stripe_risk_level | normal, elevated, highest |
Risikostufen-Zuordnung:
normal= Score 10elevated= Score 50highest= Score 75
Kunden mit hohem Risiko können zur Identitätsverifizierung markiert werden.
Sicherheit
Webhook-Validierung
Alle Webhooks werden validiert:
- Signatur-Header wird extrahiert
stripe.webhooks.constructEvent()verifiziert die Signatur- Ungültige Signaturen geben 400-Fehler zurück
- Verhindert gefälschte Ereignisse
API-Schlüssel-Sicherheit
STRIPE_SECRET_KEYniemals im Client-Code offenlegen- Nur Umgebungsvariablen verwenden
- Schlüssel bei Kompromittierung rotieren
- Wenn möglich eingeschränkte Schlüssel verwenden
Datenspeicherung
- Kartennummern werden nicht gespeichert (nur letzte 4)
- Sensible Daten werden im Ruhezustand verschlüsselt
- PCI-Compliance wird durch Stripe gewährleistet
Sicherheits-Best-Practice
Committen Sie niemals Stripe-API-Schlüssel in die Versionskontrolle. Verwenden Sie immer Umgebungsvariablen und stellen Sie sicher, dass Ihre .env-Dateien in .gitignore stehen.
Fehlerbehebung
CSV-Import schlägt fehl
Mögliche Ursachen:
- Ungültiges CSV-Format
- Falsche Spaltenüberschriften
- Datei zu groß
- Netzwerk-Timeout
Lösungen:
- Überprüfen, ob Export von Stripe ist
- Prüfen, ob Datei nicht beschädigt ist
- Große Dateien in kleinere Teile aufteilen
- Mit stabiler Verbindung erneut versuchen
API-Sync gibt keine Daten zurück
Mögliche Ursachen:
- Keine Zahlungen in den letzten 24 Stunden
- API-Schlüssel ungültig oder abgelaufen
- Stripe-Konto hat keine Daten
Lösungen:
- Datumsbereich erweitern
- API-Schlüssel in Umgebung überprüfen
- Stripe-Dashboard auf Zahlungen prüfen
Webhooks werden nicht verarbeitet
Mögliche Ursachen:
- Webhook-Geheimnis stimmt nicht überein
- Endpunkt-URL falsch
- Server nicht erreichbar
- Ereignistyp nicht abonniert
Lösungen:
STRIPE_WEBHOOK_SECRETüberprüfen- Endpunkt-URL im Stripe-Dashboard prüfen
- Sicherstellen, dass Server erreichbar ist
- Erforderliche Ereignistypen hinzufügen
Doppelte Zahlungen erscheinen
Ursache: Gleiche Zahlung mehrfach verarbeitet
Hinweis: Dies sollte aufgrund der Upsert-Logik nicht passieren. Falls doch:
- Unique-Constraint auf Zahlungs-ID prüfen
- Überprüfen, ob Datenbank-Migrationen aktuell sind
Bewährte Praktiken
Regelmäßige Synchronisation
- Tägliche manuelle Synchronisation: API-Sync jeden Morgen ausführen
- Wöchentlicher CSV-Export: Historische Daten wöchentlich importieren
- Webhook-Überwachung: Webhook-Logs regelmäßig prüfen
Datenverifizierung
Nach der Synchronisation:
- Anzahlen mit Stripe-Dashboard vergleichen
- Aktuelle Zahlungen stichprobenartig prüfen
- Überprüfen, ob Kundenabgleich funktioniert
Leistung
- Imports außerhalb der Spitzenzeiten: Große CSV-Imports bei geringem Verkehr ausführen
- Webhooks überwachen: Webhook-Verarbeitung schnell halten
- Datenbankindizes: Sicherstellen, dass richtige Indizes existieren
Nächste Schritte
- Super-Admin-Funktionen - Erfahren Sie mehr über Plattformadministration
- Datenimport-Tools - Andere Datentypen importieren
- Kontoeinrichtung - Zahlungseinstellungen konfigurieren
Stripe-Integration bereit
Mit konfigurierter Stripe-Datensynchronisation haben Sie vollständige Transparenz über Zahlungsaktivitäten in Ihrer Flotte. Verwenden Sie Webhooks für Echtzeit-Updates und periodische CSV-Imports, um vollständige historische Daten sicherzustellen.