PayPal Integration

PayPal-Zahlung im Buchungsformular einrichten

Zahlungen PayPal Online-Zahlung

PayPal Integration

Uebersicht

Mit der PayPal-Integration koennen Ihre Kunden Kursbuchungen direkt mit ihrem PayPal-Konto bezahlen.

Sprint 43 Feature

Feature Beschreibung
Zahlungsart PayPal Checkout mit Redirect
Umgebungen Sandbox (Test) + Live (Produktion)
Webhook Automatische Zahlungsbestaetigung
Rueckerstattung Manuell ueber PayPal Dashboard

Voraussetzungen

  1. PayPal Business-Konto (oder Developer-Konto fuer Tests)
  2. PayPal REST API Zugangsdaten (Client ID + Secret)
  3. Aktiviertes PayPal-Modul im Plugin

PayPal Developer-Konto erstellen

Sandbox-Zugangsdaten (Test)

  1. Gehen Sie zu developer.paypal.com
  2. Loggen Sie sich ein oder erstellen Sie ein Developer-Konto
  3. Unter Apps & CredentialsSandboxCreate App
  4. App-Name eingeben (z.B. "Kurs-Booking Test")
  5. Client ID und Secret notieren

Live-Zugangsdaten (Produktion)

  1. Bei developer.paypal.com einloggen
  2. Unter Apps & CredentialsLiveCreate App
  3. App-Name eingeben (z.B. "Kurs-Booking")
  4. Client ID und Secret notieren

Modul aktivieren

Pfad: Einstellungen → Module

┌─ Zahlungs-Module ───────────────────────────┐
│                                             │
│  [x] PayPal                                 │
│      Zahlung mit PayPal-Konto.              │
│      Konfiguration unter Zahlungen.         │
│                                             │
└─────────────────────────────────────────────┘

API-Keys konfigurieren

Pfad: Einstellungen → Zahlungen

Sandbox-Modus (Test)

┌─ PayPal Konfiguration ──────────────────────┐
│                                             │
│  Umgebung:      [x] Sandbox (Test)          │
│                                             │
│  Sandbox Client ID:                         │
│  [ASjBla7f2kN...                      ]     │
│                                             │
│  Sandbox Secret:                            │
│  [EHT8kj...                          ]     │
│                                             │
│  [ Verbindung testen ]                      │
│                                             │
└─────────────────────────────────────────────┘

Live-Modus (Produktion)

┌─ PayPal Konfiguration ──────────────────────┐
│                                             │
│  Umgebung:      [ ] Sandbox (Test)          │
│                                             │
│  Live Client ID:                            │
│  [AZprod7f2kN...                      ]     │
│                                             │
│  Live Secret:                               │
│  [EProd8kj...                         ]     │
│                                             │
│  [ Verbindung testen ]                      │
│                                             │
└─────────────────────────────────────────────┘

Webhook einrichten

Der Webhook wird automatisch unter folgender URL erreichbar:

https://ihre-domain.de/wp-json/kurs-booking/v1/webhook/paypal

Webhook in PayPal registrieren (optional)

Fuer automatische Zahlungsbenachrichtigungen:

  1. developer.paypal.com → Ihre App oeffnen
  2. WebhooksAdd Webhook
  3. URL eingeben: https://ihre-domain.de/wp-json/kurs-booking/v1/webhook/paypal
  4. Events auswaehlen:
  5. CHECKOUT.ORDER.APPROVED
  6. PAYMENT.CAPTURE.COMPLETED
  7. PAYMENT.CAPTURE.REFUNDED
  8. Save

Zahlungsablauf

Kunde im Buchungsformular

1. Kunde waehlt Tickets
   ↓
2. Kunde gibt Daten ein
   ↓
3. Kunde waehlt "PayPal" als Zahlungsart
   ↓
4. Kunde klickt "Zahlungspflichtig buchen"
   ↓
5. Weiterleitung zu PayPal
   ↓
6. Kunde loggt sich bei PayPal ein
   ↓
7. Kunde bestaetigt Zahlung
   ↓
8. Rueckleitung zur Website (Erfolgsseite)

Technischer Ablauf

Buchung erstellt (Status: pending)
        ↓
PayPal Order erstellt
        ↓
Redirect zu PayPal Approval URL
        ↓
Kunde bestaetigt bei PayPal
        ↓
PayPal leitet zurueck + Token
        ↓
REST API captured Order
        ↓
Webhook: PAYMENT.CAPTURE.COMPLETED
        ↓
Buchung aktualisiert (Status: completed)
        ↓
Bestaetigungs-E-Mail gesendet

Im Buchungsformular

Wenn PayPal aktiviert ist, erscheint es als Zahlungsoption:

Zahlungsart waehlen
─────────────────────────────────────
○ Ueberweisung
  Zahlung per Ueberweisung nach Erhalt der Rechnung

○ PayPal
  Sichere Zahlung mit Ihrem PayPal-Konto

Buchungs-Metadaten

Nach erfolgreicher PayPal-Zahlung werden folgende Daten gespeichert:

Meta-Feld Beschreibung
_buchung_payment_method paypal
_buchung_payment_status completed
_paypal_order_id PayPal Order-ID
_paypal_capture_id PayPal Capture-ID
_paypal_payer_id PayPal Payer-ID
_paypal_payer_email E-Mail des PayPal-Kontos
_paypal_completed_at Zeitpunkt der Zahlung

Rueckerstattungen

Rueckerstattungen erfolgen manuell ueber das PayPal-Dashboard:

  1. Bei paypal.com einloggen
  2. Transaktion suchen
  3. "Geld zuruecksenden" klicken
  4. Betrag eingeben (Voll oder Teil)
  5. Bestaetigen

Der Webhook aktualisiert automatisch den Buchungsstatus auf "refunded".

Fehlerbehebung

"PayPal-Verbindung fehlgeschlagen"

Moegliche Ursachen: - Falsche Client ID oder Secret - Sandbox-Keys im Live-Modus (oder umgekehrt) - API-Zugang in PayPal deaktiviert

Loesung: 1. Keys in PayPal Developer Dashboard pruefen 2. Richtigen Modus (Sandbox/Live) auswaehlen 3. "Verbindung testen" klicken

"Order konnte nicht erstellt werden"

Moegliche Ursachen: - Ungueltige Preise (z.B. 0,00 EUR) - PayPal-Account nicht verifiziert - API-Limits erreicht

Loesung: 1. Buchungspreis pruefen 2. PayPal-Account Status pruefen 3. PayPal-Support kontaktieren

Webhook-Events kommen nicht an

Moegliche Ursachen: - Webhook-URL falsch - SSL-Zertifikat ungueltig - Firewall blockiert PayPal IPs

Loesung: 1. Webhook-URL in PayPal pruefen 2. SSL-Zertifikat pruefen (muss gueltig sein) 3. PayPal IPs in Firewall erlauben

Sandbox-Test

Test-Accounts

PayPal stellt automatisch Sandbox-Accounts bereit: - Buyer: Simuliert Kunden - Seller: Simuliert Haendler

Diese finden Sie unter developer.paypal.comSandboxAccounts

Test-Zahlung durchfuehren

  1. Testbuchung mit PayPal erstellen
  2. Bei Weiterleitung mit Sandbox-Buyer-Account einloggen
  3. Zahlung bestaetigen
  4. Buchungsstatus pruefen

Preise und Gebuehren

PayPal berechnet Transaktionsgebuehren:

Transaktionstyp Gebuehr (DE)
Inlands-Zahlung 2,49% + 0,35 EUR
EU-Zahlung 3,49% + 0,35 EUR

Aktuelle Gebuehren: paypal.com/de/webapps/mpp/merchant-fees

Vergleich: PayPal vs. Stripe

Aspekt PayPal Stripe
Zahlungsarten PayPal-Konto Kreditkarte
Verbreitung Sehr hoch Hoch
Checkout Redirect zu PayPal Redirect zu Stripe
Mobile PayPal App Integration Responsive Checkout
Gebuehren 2,49% + 0,35 EUR 1,5% + 0,25 EUR

Empfehlung: Beide Zahlungsarten anbieten fuer maximale Flexibilitaet.

Technische Details

REST API Endpoints

Endpoint Zweck
POST /wp-json/kurs-booking/v1/paypal/create-order Order erstellen
POST /wp-json/kurs-booking/v1/paypal/capture-order Zahlung capturen
POST /wp-json/kurs-booking/v1/webhook/paypal Webhook empfangen

PHP-Klassen

Klasse Datei Zweck
Kurs_Booking_PayPal class-paypal.php Haupt-Integration
Kurs_Booking_PayPal_Settings class-paypal-settings.php Settings-UI
Kurs_Booking_PayPal_Webhook class-paypal-webhook.php Webhook-Handler

SDK

Das Plugin nutzt das offizielle PayPal Server SDK:

paypal/paypal-server-sdk: ^2.1