Kundenzahlungsmethoden
Das Zahlungsmethoden-System ermoglicht es Kunden, ihre Zahlungskarten fur die Nutzung von Levy Fleets-Diensten zu speichern und zu verwalten. Diese Anleitung behandelt, wie Administratoren Zahlungsmethoden im Namen von Kunden uber das Dashboard verwalten konnen, sowie wie das System Karten im Hintergrund behandelt.
Funktionsweise von Zahlungsmethoden
Speicherarchitektur
Zahlungsmethoden werden aus Sicherheits- und Effizienzgrunden an zwei Orten gespeichert:
- Stripe - Die tatsachlichen Zahlungsmethodendaten (Kartennummer, Ablaufdatum, CVC) werden sicher von Stripe gespeichert
- Levy-Datenbank - Nur nicht-sensible Metadaten werden lokal gespeichert:
- Stripe-Zahlungsmethoden-ID
- Kartenmarke (Visa, Mastercard, etc.)
- Letzte 4 Ziffern
- Kartentyp
- Standardstatus
Diese Architektur gewahrleistet PCI-Konformitat bei gleichzeitiger Ermoglichung effizienter lokaler Abfragen.
PCI-Konformitat
Levy Fleets verarbeitet oder speichert niemals rohe Kartendaten. Die gesamte Kartenerfassung erfolgt uber Stripe Elements oder das Stripe Mobile SDK, was das hochste Mass an Zahlungssicherheit gewahrleistet.
Zahlungsmethoden-Ablauf
Wenn ein Kunde eine Karte hinzufugt:
Kunde initiiert
Der Kunde fugt eine Karte in der mobilen App hinzu oder ein Administrator fugt sie uber das Dashboard hinzu
SetupIntent erstellt
Ein Stripe SetupIntent wird erstellt, um Kartendetails sicher zu erfassen
Kartendetails erfasst
Kartendetails werden von Stripe Elements erfasst (beruhren niemals unsere Server)
Stripe validiert
Stripe validiert und tokenisiert die Karte
SetupIntent abgeschlossen
SetupIntent wird erfolgreich abgeschlossen
Zahlungsmethode angehangt
Zahlungsmethode wird an den Stripe-Kunden angehangt
Metadaten gespeichert
Kartenmetadaten (Marke, last4, etc.) werden in der payment_methods-Tabelle gespeichert
Datenbankschema
Zahlungsmethoden-Tabelle
| Spalte | Typ | Beschreibung |
|---|---|---|
id | uuid | Primarschlussel |
customer_uuid | uuid | Referenz zur customers-Tabelle |
stripe_payment_method_id | text | Stripes Zahlungsmethoden-ID (pm_xxx) |
type | text | Zahlungsmethodentyp (normalerweise "card") |
brand | text | Kartenmarke (visa, mastercard, amex, etc.) |
last4 | text | Letzte 4 Ziffern der Kartennummer |
is_default | boolean | Ob dies die Standard-Zahlungsmethode ist |
created_at | timestamptz | Wann die Karte hinzugefugt wurde |
updated_at | timestamptz | Zeitpunkt der letzten Anderung |
Zahlungsmethoden im Dashboard verwalten
Zugriff auf Zahlungsmethoden
- Navigieren Sie zu Dashboard > Kunden
- Klicken Sie auf einen Kunden, um sein Profil anzuzeigen
- Finden Sie den Abschnitt Zahlungsmethoden
Karten anzeigen
Der Abschnitt Zahlungsmethoden zeigt an:
- Kartenmarke und letzte 4 Ziffern (z.B. "VISA **** 4242")
- Datum, an dem die Karte hinzugefugt wurde
- Standard-Badge fur die primare Karte
- Loschen-Button fur jede Karte
Eine Karte hinzufugen
Auf Karte hinzufugen klicken
Klicken Sie auf den Button + Karte hinzufugen im Abschnitt Zahlungsmethoden
Stripe-Formular offnet sich
Ein Modal offnet sich mit dem Stripe Elements-Formular zur sicheren Karteneingabe
Kartendetails eingeben
Geben Sie Kartendetails direkt in das sichere Stripe-Formular ein
Karte speichern
Klicken Sie auf Karte speichern, um die Zahlungsmethode zu validieren und zu speichern
Karte hinzugefugt
Das Modal schliesst sich und die Kartenliste aktualisiert sich, um die neue Karte anzuzeigen
Testmodus-Anzeige
Beim Hinzufugen von Karten fur Testkonten:
- Ein gelbes Banner zeigt "Testmodus aktiv"
- Verwenden Sie Stripe-Testkartennummern (siehe unten)
- Es werden keine echten Abbuchungen vorgenommen
Eine Karte loschen
- Klicken Sie auf das Papierkorb-Symbol neben der Karte
- Bestatigen Sie die Loschung im Dialog
- Die Karte wird sowohl aus Stripe als auch aus der Datenbank entfernt
Loschverhalten
Wenn Sie eine Zahlungsmethode loschen, wird sie sowohl aus Stripe als auch aus der lokalen Datenbank entfernt. Wenn die geloschte Karte die Standard-Karte war, wird die alteste verbleibende Karte automatisch zur neuen Standard-Karte.
Testmodus
Wann der Testmodus aktiv ist
Der Testmodus wird automatisch aktiviert, wenn:
- Super-Admin-Benutzer - Jeder Benutzer mit der Rolle
super_admin - Interne Test-E-Mails - Kunden mit
@levyelectric.com-E-Mail
Testmodus-Verhalten
Im Testmodus:
- Verwendet Test-Stripe-API-Schlussel
- Karten werden in Stripes Testumgebung gespeichert
- Es werden keine echten Abbuchungen vorgenommen
- Setup Intents verwenden Test-Endpunkte
- Das Dashboard zeigt "Testmodus aktiv" an
Test-Kartennummern
| Kartennummer | Beschreibung |
|---|---|
4242 4242 4242 4242 | Erfolg |
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).
Standard-Zahlungsmethode
Automatische Standardauswahl
Wenn ein Kunde seine erste Zahlungsmethode hinzufugt, wird sie automatisch zum Standard. Dies stellt sicher, dass immer eine verwendbare Zahlungsmethode vorhanden ist fur:
- Wallet-Aufladungen
- Auto-Aufladeabbuchungen
- Zahlungswiederholungen
Wie der Standard bestimmt wird
- Erste hinzugefugte Karte ist Standard
- Wenn Standard-Karte geloscht wird, wird alteste verbleibende Karte zum Standard
Wie der Standard verwendet wird
Die Standard-Zahlungsmethode wird verwendet fur:
- Auto-Aufladung - Automatische Wallet-Auffullung
- Zahlungswiederholungen - Wiederherstellung negativer Wallet-Guthaben
- Off-Session-Abbuchungen - Jede Abbuchung, die ohne Kundenanwesenheit initiiert wird
Integration mit dem Zahlungswiederholungs-System
Zahlungsmethoden spielen eine kritische Rolle im automatischen Zahlungswiederholungs-System zur Wiederherstellung negativer Wallet-Guthaben.
Wie Zahlungsmethoden fur Wiederholungen verwendet werden
Wenn das Wallet eines Kunden negativ wird, erstellt das System einen Zahlungswiederholungs-Job, der:
- Zuerst die Standard-Zahlungsmethode versucht
- Durch andere Karten rotiert geordnet nach Erstellungsdatum (alteste zuerst)
- Verfolgt, welche Methoden versucht wurden, um doppelte Versuche innerhalb desselben Planungsfensters zu vermeiden
- Den Zyklus zurucksetzt, wenn zu einem neuen Tag oder einer neuen Woche gewechselt wird
Zahlungsmethoden-Rotationsreihenfolge
1. Standard-Zahlungsmethode (is_default = true)
2. Alteste Nicht-Standard-Karte
3. Zweitalteste Nicht-Standard-Karte
4. ... setzt sich durch alle Karten fort
Bedeutung mehrerer Karten
Kunden mit mehreren Zahlungsmethoden haben hohere Zahlungswiederherstellungsraten, weil:
- Wenn eine Karte abgelehnt wird, werden andere automatisch versucht
- Verschiedene Karten konnen unterschiedliche Kreditlimits haben
- Bankspezifische Probleme (temporare Sperren, Betrugsalarme) blockieren die Zahlung nicht vollstandig
Backup-Karten fordern
Ermutigen Sie Kunden, Backup-Zahlungsmethoden hinzuzufugen. Zeigen Sie Aufforderungen in der mobilen App nach einer abgelehnten Transaktion an oder bieten Sie kleine Wallet-Boni fur das Hinzufugen einer zweiten Karte.
Webhook-Integration
Zahlungsmethoden konnen auch uber Stripe-Webhooks erstellt werden, wenn Kunden Karten uber die mobile App hinzufugen:
setup_intent.succeeded
Wenn ein SetupIntent von der mobilen App abgeschlossen wird:
- System sucht den Kunden nach Stripe-ID
- Ruft Zahlungsmethodendetails von Stripe ab
- Speichert Kartenmetadaten in der Datenbank
- Setzt als Standard, wenn es die erste Karte ist
payment_intent.succeeded
Wenn eine Zahlung mit einer neuen Zahlungsmethode abgeschlossen wird:
- System pruft, ob Zahlungsmethode bereits existiert
- Falls nicht, speichert die neue Zahlungsmethode
- Aktualisiert bei Bedarf den Standard des Kunden
Mobile App-Integration
Karten aus der App hinzufugen
Die mobile App verwendet Stripes natives SDK:
- App fordert Ephemeral-Key vom Server an
- Stripe CustomerSheet oder PaymentSheet wird prasentiert
- Kunde gibt Kartendetails in nativer Stripe-UI ein
- Bei Erfolg wird
setup_intent.succeeded-Webhook ausgelost - Zahlungsmethode wird in der Datenbank gespeichert
Mobile Zahlungsaktionen
| Aktion | Beschreibung |
|---|---|
add-funds | Wallet manuell mit ausgewahltem Betrag aufladen |
redeem-promo | Aktionscode fur Wallet-Guthaben anwenden |
toggle-auto-topup | Automatische Wallet-Aufladung aktivieren/deaktivieren |
update-auto-topup-amount | Auto-Aufladebetrag andern |
Sicherheitsuberlegungen
PCI-Konformitat
Das Zahlungsmethoden-System wahrt PCI-Konformitat durch:
- Niemals rohe Kartendaten verarbeiten - Alle Kartenerfassung verwendet Stripe Elements/SDK
- Nur Tokens speichern - Nur Stripe-Zahlungsmethoden-IDs werden gespeichert
- Kartennummern maskieren - Nur letzte 4 Ziffern werden gespeichert
- Sichere Ubertragung - Alle API-Aufrufe verwenden HTTPS
- Webhook-Verifizierung - Alle Stripe-Webhooks werden signaturverifiziert
Zugriffskontrolle
Zahlungsmethodenoperationen erfordern authentifizierte Benutzer mit entsprechenden Rollen:
| Operation | Erforderliche Rollen |
|---|---|
| Auflisten | Alle Admin-Rollen |
| Hinzufugen | Alle Admin-Rollen |
| Loschen | Alle Admin-Rollen |
Loschverhalten
Beim Loschen einer Zahlungsmethode:
- Stripe-Trennung - Karte wird vom Stripe-Kunden getrennt
- Lokale Loschung - Datensatz aus Datenbank entfernt
- Standard-Neuzuweisung - Wenn Standard geloscht wurde, wird nachstalteste zum Standard
- Beide Umgebungen versucht - System versucht sowohl Live- als auch Test-Stripe fur Bereinigung
Fehlerbehebung
Haufige Probleme
"Stripe-Formular konnte nicht initialisiert werden"
Ursache: Setup Intent-Erstellung fehlgeschlagen
Losungen:
- Prufen Sie, ob Stripe-API-Schlussel korrekt sind
- Uberprufen Sie, ob Kunde eine Stripe-Kunden-ID hat
- Prufen Sie das Stripe-Dashboard auf Ratenlimits
Karte erscheint nach dem Hinzufugen nicht
Ursache: Registrierung nach SetupIntent fehlgeschlagen
Losungen:
- Prufen Sie die Browser-Konsole auf Fehler
- Uberprufen Sie, ob Webhook
setup_intent.succeededempfangt - Prufen Sie die Datenbank auf verwaiste Zahlungsmethoden
"Keine Zahlungsmethode hinterlegt" bei Auto-Aufladung
Ursache: Kunde hat keine Zahlungsmethoden oder keinen Standard
Losungen:
- Prufen Sie
payment_methods-Tabelle fur den Kunden - Uberprufen Sie, dass mindestens eine Karte
is_default = truehat - Fugen Sie eine Zahlungsmethode hinzu, wenn keine existiert
Testmodus funktioniert nicht
Ursache: Test-Schlussel nicht konfiguriert
Losungen:
- Uberprufen Sie, ob
STRIPE_TEST_SECRET_KEYgesetzt ist - Uberprufen Sie, ob
STRIPE_TEST_PUBLISHABLE_KEYgesetzt ist - Stellen Sie sicher, dass Benutzer super_admin ist oder Kunde @levyelectric.com-E-Mail hat
Diagnoseabfragen
Zahlungsmethoden eines Kunden auflisten
SELECT
pm.id,
pm.brand,
pm.last4,
pm.is_default,
pm.created_at,
c.email
FROM payment_methods pm
JOIN customers c ON c.id = pm.customer_uuid
WHERE c.id = 'kunden-uuid-hier'
ORDER BY pm.created_at;
Kunden ohne Zahlungsmethoden finden
SELECT
c.id,
c.email,
c.full_name,
c.stripe_customer_id
FROM customers c
LEFT JOIN payment_methods pm ON pm.customer_uuid = c.id
WHERE pm.id IS NULL
AND c.stripe_customer_id IS NOT NULL
ORDER BY c.created_at DESC
LIMIT 50;
Auf doppelte Zahlungsmethoden prufen
SELECT
stripe_payment_method_id,
COUNT(*) as count
FROM payment_methods
GROUP BY stripe_payment_method_id
HAVING COUNT(*) > 1;
Bewahrte Praktiken
Fur Betreiber
- Mehrere Karten fordern - Kunden mit Backup-Karten haben weniger Zahlungsausfalle
- Abgelehnte Karten uberwachen - Mit Kunden nachfassen, deren Karten fehlschlagen
- Testmodus verwenden - Immer Kartenablaufe mit Testkarten testen, bevor in Produktion
Fur den Kundensupport
- Vor dem Hinzufugen verifizieren - Kundenidentitat vor dem Hinzufugen von Zahlungsmethoden bestatigen
- Den Prozess erklaren - Kunden helfen zu verstehen, warum Karten benotigt werden
- Probleme dokumentieren - Kartenbezogene Probleme zur Fehlerbehebung aufzeichnen
Nachste Schritte
- Stripe-Einrichtung - Stripe-Integration konfigurieren
- Automatische Ruckerstattungen - Wie automatische Ruckerstattungen funktionieren
- Schadensgebuhren - Kunden fur Schaden belasten
Zahlungsmethoden bereit
Mit ordnungsgemas konfigurierten Zahlungsmethoden konnen Kunden nahtlos fur Fahrten bezahlen und ihre Wallets aufladen. Uberwachen Sie Ihre Zahlungserfolgsraten und wenden Sie sich an Kunden mit Zahlungsproblemen, um einen gesunden Einnahmestrom aufrechtzuerhalten.