Files
dogfather-universe/PAYPAL-EINRICHTEN.md
T
DogFatherGitandClaude Opus 5 497c576d1c Anleitung auf den neuen Weg umgestellt -- ohne Konsole
Die Anleitung war nach dem Einbau des Formulars veraltet und haette
Filipe weiter in die Konsole geschickt.

Schritt 0 (nachsehen, was schon da ist) ging ueber SSH und grep. Das
zeigt jetzt die Verwaltung selbst an: "hinterlegt (auf dem Server)",
"hinterlegt" oder "fehlt". Kein Terminal noetig, um zu erfahren, was
noch fehlt.

Schritt 6 war "nano .env + systemctl restart". Jetzt: Verwaltung ->
Zahlungen -> Felder ausfuellen -> Speichern. Mit dem Hinweis, dass ein
leeres Feld "nicht anfassen" bedeutet und nicht "loeschen" -- ohne den
traut sich niemand, ein einzelnes Feld nachzutragen.

Schritt 7 ist neu: der Knopf "Verbindung testen" mit einer Tabelle, was
die drei moeglichen Meldungen bedeuten.

Beim Umstellen ist mir Schritt 8 (der 1-Euro-Test) aus der Datei
gefallen -- der Ersetzungsbereich reichte zu weit. Wieder eingesetzt und
gleich vervollstaendigt: jetzt mit Testkunde anlegen, Einladungslink im
eigenen Browser oeffnen und Aufraeumen danach. Vorher stand dort nur
"Zahlung erzeugen und bezahlen", was den halben Weg ausliess.

Auch die Formulierung "Beide brauche ICH" korrigiert -- ich brauche die
Werte gar nicht, er traegt sie selbst ein.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-23 16:53:52 +02:00

9.3 KiB

PayPal für den Webdesign-Bereich einrichten

Das ist der einzige Schritt, den ich nicht selbst machen kann: PayPal lässt Zugangsdaten nur über dein eingeloggtes Konto erzeugen.

Alles andere steht bereits — Bestellungen, Einzug, Webhook mit Signaturprüfung, Schutz gegen Doppelverbuchung, die gesetzlich nötige Zustimmung vor der Anzahlung. Sobald die vier Werte eingetragen sind, funktionieren die Bezahlknöpfe.

Zeitbedarf: etwa 20 Minuten. Kosten: keine — ein PayPal-Geschäftskonto ist kostenlos, Gebühren fallen nur pro Zahlung an.


Schritt 0 — Zuerst nachsehen, was schon da ist

Du hast wahrscheinlich schon die Hälfte. Das DogiCrew-Supporter-Abo läuft über dasselbe PayPal-Konto und benutzt dieselbe Client ID und dasselbe Secret. Wenn das Abo live funktioniert, sind sie bereits da.

So siehst du es — ohne Konsole:

  1. Verwaltung öffnen: https://dogfather-universe.com/webdesign/verwaltung.html
  2. Reiter Zahlungen

Oben steht der Stand, bei jedem Feld eine Marke:

Was dort steht Bedeutung
hinterlegt (auf dem Server) kommt aus der .env, du musst nichts tun
hinterlegt schon über dieses Formular eingetragen
fehlt musst du eintragen

Steht bei Client ID und Secret schon hinterlegt, brauchst du nur Schritt 4 (Webhook) und danach Schritt 6.

Warum das wichtig ist: Wenn du eine zweite App anlegst, obwohl schon eine läuft, hast du zwei Sätze Zugangsdaten für dasselbe Konto. Das funktioniert zwar, macht aber später jede Fehlersuche doppelt so mühsam — und beim Erneuern eines Secrets bricht womöglich das DogiCrew-Abo weg.


Bevor du anfängst

Du brauchst ein PayPal-Geschäftskonto (kein privates). Falls du noch keins hast: Auf paypal.com anmelden → Einstellungen → Kontoart ändern → auf Geschäftskonto umstellen. Das geht mit demselben Konto und kostet nichts.

Wichtig: Das Geld landet direkt auf deinem PayPal-Konto. Es geht zu keinem Zeitpunkt über einen Vermittler oder über mich.


Schritt 1 — Bei den Entwickler-Einstellungen anmelden

  1. Gehe auf https://developer.paypal.com
  2. Oben rechts auf Log in to Dashboard
  3. Melde dich mit deinen ganz normalen PayPal-Zugangsdaten an (denselben wie auf paypal.com)

Du landest im Developer Dashboard.


Schritt 2 — Auf „Live" umschalten

Oben auf der Seite gibt es einen Schalter mit zwei Stellungen:

   Sandbox   |   Live

Stelle ihn auf „Live".

Sandbox ist die Spielwiese mit Testgeld. Solange der Schalter dort steht, erzeugst du Zugangsdaten, mit denen kein echtes Geld fliesst. Das ist der häufigste Fehler bei dieser Einrichtung.


Schritt 3 — App anlegen

  1. Klicke links auf Apps & Credentials
  2. Klicke auf Create App
  3. App Name: Dogfather Webdesign
  4. Type: Merchant (falls gefragt)
  5. Klicke Create App

Du siehst jetzt zwei Werte:

Feld Was du siehst
Client ID eine lange Zeichenkette, sofort sichtbar
Secret daneben ein Link Show — draufklicken

Beide brauchst du gleich. Kopier sie irgendwohin, wo du sie wiederfindest — am besten direkt nach Bitwarden.

Das Secret ist wie ein Passwort. Schick es mir nicht im Chat — dort stuende es dauerhaft im Verlauf, und eintragen koennte ich es trotzdem nicht. In Schritt 6 fuegst du es selbst ein.


Schritt 4 — Webhook einrichten

Der Webhook ist die Leitung, über die PayPal uns meldet: „Die Zahlung ist durch." Ohne ihn würde eine Zahlung nicht als bezahlt erscheinen, wenn der Kunde das Fenster zu früh schliesst.

  1. Auf derselben App-Seite nach unten scrollen zu Webhooks
  2. Klicke Add Webhook
  3. Webhook URL — genau das hier eintragen:
https://postfach.dogfather-universe.com/webdesign/paypal-webhook
  1. Bei Event types wähle diese vier aus:

    • Payment capture completed
    • Payment capture denied
    • Payment capture refunded
    • Billing subscription cancelled

    Nicht „Select all" anklicken. Jedes zusätzliche Ereignis erzeugt Meldungen, die niemand auswertet — das macht die Suche nach einem echten Problem später unnötig schwer.

  2. Save

  3. Danach erscheint in der Liste eine Webhook ID (beginnt meist mit WH-). Die brauche ich auch.


Schritt 5 — Nur falls du die monatliche Betreuung anbieten willst

Für einmalige Zahlungen (Anzahlung, Restbetrag, Zusatzleistungen) bist du hier fertig. Das monatliche Betreuungs-Abo braucht zusätzlich einen Plan:

  1. Links auf Products & Plans (oder direkt unter Subscriptions)
  2. Create Product → Name Dogfather Betreuung, Type Service
  3. Dann Create Plan → monatlich, Preis eintragen
  4. Die Plan ID (beginnt mit P-) notieren

Das kannst du auch später nachholen — die Einmalzahlungen laufen ohne.


Schritt 6 — Werte in der Verwaltung eintragen

Kein SSH, kein Texteditor, kein Neustart.

  1. Verwaltung öffnen: https://dogfather-universe.com/webdesign/verwaltung.html
  2. Reiter Zahlungen
  3. Die Felder ausfüllen:
Feld Woher
Betriebsart Echtbetrieb anklicken
Client ID aus Schritt 4
Secret aus Schritt 4
Webhook-Kennung aus Schritt 5
Plan für die Betreuung aus Schritt 5b — sonst leer lassen
  1. Speichern

Ein leeres Feld bedeutet „nicht anfassen", nicht „löschen". Du kannst also einzeln nachtragen, ohne den Rest zu verlieren. Steht bei einem Feld schon „hinterlegt (auf dem Server)", kommt der Wert aus der .env und du brauchst dort nichts einzugeben.

Die Werte werden verschlüsselt gespeichert und wirken sofort. Nach dem Speichern leeren sich die Felder von selbst — ein Secret soll nicht stehen bleiben, wenn jemand anders auf den Bildschirm schaut.

Angezeigt wird ein gespeicherter Wert nie wieder. Nur: hinterlegt · 80 Zeichen. Wer ihn verliert, erzeugt bei PayPal einen neuen — das ist sicherer, als ihn dauerhaft abrufbar zu halten.


Schritt 7 — Verbindung testen

Gleich daneben steht der Knopf Verbindung testen. Draufklicken.

Meldung Bedeutung
„Anmeldung bei PayPal erfolgreich — Echtbetrieb." Alles richtig, weiter zu Schritt 8
„…aber im TESTMODUS" Betriebsart auf Echtbetrieb stellen
„PayPal hat die Anmeldung abgelehnt" Client ID und Secret stammen aus verschiedenen Apps oder aus dem Testbereich — beide aus derselben App neu kopieren

Der Test meldet sich probeweise bei PayPal an. Es fließt kein Geld. Aber erst er beweist, dass die Werte stimmen — „hinterlegt" heißt nur, dass etwas dasteht, nicht dass es richtig ist.


Schritt 8 — Der erste echte Test mit 1 Euro

Das ist der wichtigste Schritt. Mach ihn, bevor ein echter Kunde zahlt.

  1. Verwaltung → Reiter Kunden → Testkunde anlegen (deine eigene E-Mail genügt)
  2. Dazu ein Projekt mit Preis 1,00 €
  3. Im Projekt eine Zahlung erzeugen
  4. Den Einladungslink im eigenen Browser öffnen, Passwort setzen, ins Portal gehen und bezahlen — mit VanVans PayPal oder per Karte als Gast
  5. Prüfen: Kommt das Geld auf deinem Konto an? Steht die Zahlung in der Verwaltung auf „bezahlt"?
  6. In PayPal wieder erstatten
  7. Testkunde und Testprojekt löschen

Der Testmodus verhält sich in Kleinigkeiten anders als der Echtbetrieb. Ein Durchlauf mit einem echten Euro ist der einzige Nachweis, der wirklich zählt — und er kostet dich nichts, weil du ihn zurückholst.


Was passiert, wenn ein Kunde zahlt

  1. Kunde klickt im Portal auf Jetzt bezahlen
  2. Bei der Anzahlung muss er zuerst bestätigen, dass sofort begonnen werden darf und er dadurch sein Widerrufsrecht verliert (§ 356 Abs. 4 BGB — der genaue Wortlaut wird mit Zeitstempel gespeichert, weil im Streit du beweisen musst, dass er zugestimmt hat)
  3. Er wird zu PayPal geleitet und bezahlt
  4. Das Geld geht sofort auf dein Konto — es gibt keine Zwischenstufe
  5. Die Zahlung erscheint als „bezahlt", das Projekt vermerkt Anzahlung bzw. Restbetrag als eingegangen

Schliesst der Kunde das Fenster zu früh, meldet der Webhook die Zahlung trotzdem. Kommt dieselbe Meldung doppelt — was bei PayPal normal ist — wird sie nur einmal verbucht.


Wenn etwas nicht klappt

Anzeichen Ursache Abhilfe
„noch nicht freigeschaltet" Werte fehlen Verwaltung → Zahlungen, dort steht welcher
Zahlung bleibt auf „freigegeben" Webhook-Adresse falsch Schritt 4 prüfen — die Adresse muss exakt stimmen
Kein echtes Geld Schalter stand auf Sandbox Schritt 2, dann neue Zugangsdaten erzeugen
PayPal meldet „invalid client" Client ID und Secret aus verschiedenen Apps beide aus derselben App neu kopieren

Zwei Dinge, die dauerhaft gelten

Das Secret ist ein Passwort. Es gehört nach Bitwarden, nicht in eine Notiz, nicht in eine Nachricht, nicht ins Git. Wenn es je irgendwo auftaucht, wo es nicht hingehört: in der App Manage Credentials → new secret erzeugen und das alte löschen.

Prüfe nach dem Umstellen auf Live einmal deinen Kontoauszug. Nicht weil zu erwarten wäre, dass etwas schiefgeht — sondern weil der Moment, in dem zum ersten Mal echtes Geld fliessen kann, der richtige ist, um einmal genau hinzusehen.