diff --git a/PAYPAL-EINRICHTEN.md b/PAYPAL-EINRICHTEN.md index 0a5a2c6c..132492f9 100644 --- a/PAYPAL-EINRICHTEN.md +++ b/PAYPAL-EINRICHTEN.md @@ -16,34 +16,30 @@ 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 dieselben zwei Werte -(`PAYPAL_CLIENT_ID` und `PAYPAL_CLIENT_SECRET`). Wenn das Abo live -funktioniert, sind sie bereits eingetragen. +läuft über dasselbe PayPal-Konto und benutzt dieselbe Client ID und +dasselbe Secret. Wenn das Abo live funktioniert, sind sie bereits da. -Prüf es mit diesem Befehl. Er zeigt nur **ob** ein Wert da ist, nie den -Wert selbst: +So siehst du es — ohne Konsole: -```bash -ssh dogi@ -sudo -u dogiintern grep -cE '^PAYPAL_CLIENT_ID=.+' \ - /home/dogiintern/dogfather-universe/server-internal/.env -sudo -u dogiintern grep -cE '^PAYPAL_CLIENT_SECRET=.+' \ - /home/dogiintern/dogfather-universe/server-internal/.env -sudo -u dogiintern grep -E '^PAYPAL_ENV=' \ - /home/dogiintern/dogfather-universe/server-internal/.env -``` +1. Verwaltung öffnen: `https://dogfather-universe.com/webdesign/verwaltung.html` +2. Reiter **Zahlungen** -| Ergebnis | Bedeutung | +Oben steht der Stand, bei jedem Feld eine Marke: + +| Was dort steht | Bedeutung | |---|---| -| beide `1`, `PAYPAL_ENV=live` | **Du brauchst nur Schritt 4** (Webhook). Springe direkt dorthin. | -| beide `1`, `PAYPAL_ENV=sandbox` | Zugangsdaten sind Testdaten. Schritt 2–4 nötig. | -| `0` | Noch nichts da. Alle Schritte durchgehen. | +| *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 der andere -> Bereich weg. +> mühsam — und beim Erneuern eines Secrets bricht womöglich das +> DogiCrew-Abo weg. --- @@ -101,11 +97,12 @@ Du siehst jetzt zwei Werte: | **Client ID** | eine lange Zeichenkette, sofort sichtbar | | **Secret** | daneben ein Link **Show** — draufklicken | -**Beide brauche ich.** Kopiere sie zunächst irgendwohin, wo du sie -gleich wiederfindest. +**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. -> Wie du es sicher hinterlegst, steht in Schritt 6. +> **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. --- @@ -155,68 +152,75 @@ Das kannst du auch später nachholen — die Einmalzahlungen laufen ohne. --- -## Schritt 6 — Werte sicher hinterlegen +## Schritt 6 — Werte in der Verwaltung eintragen -Die Zugangsdaten gehören in eine Datei auf dem Server, **nicht** in den -Chat und **nicht** ins Git. +**Kein SSH, kein Texteditor, kein Neustart.** -Du hast zwei Möglichkeiten: +1. Verwaltung öffnen: `https://dogfather-universe.com/webdesign/verwaltung.html` +2. Reiter **Zahlungen** +3. Die Felder ausfüllen: -### Möglichkeit A — du trägst sie selbst ein +| 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 | -```bash -ssh dogi@ -sudo -u dogiintern nano /home/dogiintern/dogfather-universe/server-internal/.env -``` +4. **Speichern** -Diese Zeilen ergänzen bzw. ausfüllen: +> **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. -``` -PAYPAL_ENV=live -PAYPAL_CLIENT_ID= -PAYPAL_CLIENT_SECRET= -PAYPAL_WD_WEBHOOK_ID= -PAYPAL_WD_PLAN_BASIS= -``` +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. -Speichern (`Strg+O`, `Enter`, `Strg+X`), dann: - -```bash -sudo systemctl restart dogiintern.service -``` - -### Möglichkeit B — über Bitwarden - -Leg die vier Werte in Bitwarden ab und sag mir Bescheid. Ich sage dir -dann, welche Zeile wohin gehört — die Werte selbst brauche ich nicht zu -sehen. +**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 — Prüfen, ob es angekommen ist +## Schritt 7 — Verbindung testen -Melde dich in der Verwaltung an und öffne den Bereich **Zahlungen**. -Oben steht der Einrichtungsstand: +Gleich daneben steht der Knopf **Verbindung testen**. Draufklicken. -- **„PayPal ist eingerichtet"** → fertig -- **„Es fehlt noch: …"** → dort steht, welcher Wert leer ist +| 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 +## Schritt 8 — Der erste echte Test mit 1 Euro -**Mach die erste Zahlung mit einem kleinen Betrag an dich selbst.** +**Das ist der wichtigste Schritt.** Mach ihn, bevor ein echter Kunde +zahlt. -1. Leg in der Verwaltung ein Testprojekt mit **1,00 €** Preis an -2. Erzeuge dazu eine Zahlung -3. Bezahle sie im Portal mit einem anderen PayPal-Konto - (z. B. dem von VanVan) oder mit Karte als Gast -4. Prüfe: Kommt das Geld an? Steht die Zahlung auf „bezahlt"? -5. Erstatte den Betrag in PayPal wieder zurück +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 -> Ein Testlauf mit echtem Geld ist der einzige Weg, der wirklich etwas -> beweist. Die Sandbox verhält sich in Kleinigkeiten anders — und diese -> Kleinigkeiten fallen sonst beim ersten echten Kunden auf. +> 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. --- @@ -242,7 +246,7 @@ wird sie nur einmal verbucht. | Anzeichen | Ursache | Abhilfe | |---|---|---| -| „noch nicht freigeschaltet" | Werte fehlen oder Dienst nicht neu gestartet | Schritt 6 wiederholen, Dienst neu starten | +| „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 |