Bitte beachte, dass sich diese Dokumentation auf die neuste Version dieser Erweiterung bezieht. Wenn eine ältere Version eingesetzt wird, kann diese abweichen. Die jeweils passende Dokumentation befindet sich im Dokumentation-Verzeichnis der Erweiterung.
PayPal Checkout (ehemals PayPal-Plus) konfigurieren
Mit dem modernen PayPal Checkout hast du alle wichtigen Zahlungsmethoden in einem Widget, eine einzige API und eine einheitliche Nutzererfahrung – für dich und deine Kund:innen deutlich komfortabler und konversionsstärker.
Achtung:
Der PayPal-Checkout Checkout erfordert der die Pro-Version der Shop-Erweiterung!
Achtung:
Der PayPal-Checkout Checkout erfordert der den Eintrag der vollen URL in der Site-Konfiguration Deiner TYPO3-Instanz!
Achtung:
Die Bezahloptionen des PayPalCheckout Checkout sind nicht konfigurierbar. Abhängig vom Käuferland werden die verfügbaren Bezahloptionen angezeigt!
PayPal-Checkout Account
Zuerst benötigst Du einen PayPal-Account. Logge Dich damit ein und öffne https://developer.paypal.com
. Hier musst Du nun unter dem Menüpunkt My Apps & Credentials eine neue App erstellen. Dabei musst Du im ersten Schritt darauf achten, ob Du einen Live oder Sandbox Account erstellen möchtest. Nach dem Erstellen solltest Du folgende Informationen erhalten haben:
- (Sandbox) Account: Dies ist eine E-Mailadresse.
- Client ID: Dies ist ein Hashwert, der den Client identifiziert.
- Secret: Dies ist ebenfalls ein Hashwert. Diesen solltest Du auf jeden Fall geheim halten!
Zum Testen benötigst Du einen weiteren Account, welchen Du unter https://developer.paypal.com/developer/accounts/ anlegen kannst.
Checkout Konfiguration
- active Hier kann der Checkout aktiviert/deaktiviert werden
- checkoutPid Hier muss die Page-Uid der Checkout-Seite angegeben werden.
- successPid Hier muss die Page-Uid der Erfolgs-Seite angegeben werden. Dies ist die Seite, auf die man weitergeleitet wird, wenn die Zahlung erfolgreich war.
- service Hier wird die Checkout-Service PHP-Klasse zugewiesen. Diese kann angepasst werden, wenn etwas am Prozess verändert werden muss.
- sandbox Hier kann die Sandbox zum Testen aktiviert/deaktiviert werden.
- payPalCheckoutClientId Hier muss die Client ID des (Sandbox) Accounts eingetragen werden, welche bei PayPal erstellt wurde
- payPalCheckoutSecret Hier muss das Secret des (Sandbox) Accounts eingetragen werden, welche bei PayPal erstellt wurde
Aktionen nach erfolgreicher Bezahlung
Wenn Du nach der erfolgreichen Bezahlung weitere Aktionen durchführen möchtest, kannst Du dazu den PayPalCheckoutPaid
Event Listener nutzen.
- Dazu muss ein Event Listener erstellt werden:
<?php namespace YourVendor\YourExtension\EventListener; use CodingMs\ShopPro\Event\BasketOrder\PayPalCheckoutPaidEvent; class DoSomeThingEventListener { public function __invoke(PayPalCheckoutPaidEvent $event): void { /* Do something */ } }
- Dieser Event Listener muss anschließend in der
Configuration/Services.yaml
registriert werden:services: YourVendor\YourExtension\EventListener\DoSomeThingEventListener: tags: - name: event.listener identifier: 'myListener' event: CodingMs\ShopPro\Event\BasketOrder\PayPalCheckoutPaidEvent
Debugging
Für den Fall, dass der Callback-Aufruf nicht funktioniert, kannst Du ein Debugging aktivieren. Wie dies funktioniert, kannst Du im Abschnitt HowTo/Debugging lesen.
Interner Ablauf
Du durchläufst drei Hauptphasen:
Bestellung anlegen & Order-ID abrufen Im PayPalCheckoutCheckoutService → getPaymentResource():
- Du übermittelst alle Bestelldaten serverseitig an PayPal und erhältst die zugehörige Order-ID (Payment-Resource).
- Vor dem Abruf speicherst du die gesendeten Parameter in
basketOrder.callbackParameter
, damit du im Fehlerfall nachvollziehen kannst, welche Werte übertragen wurden. - Nach erfolgreichem Abruf legst du die Antwort von PayPal ebenfalls in
basketOrder.callbackParameter
ab. So findest du später über diebasketOrder.uid
jederzeit die passende Order-ID und kannst die Zahlung validieren.
Frontend: PayPal-Buttons initialisieren & Zahlung auslösen In deiner
ConfirmOrder.html
:- Du holst dir die zuvor gespeicherte Order-ID und übergibst sie bei der Initialisierung der PayPal-Buttons.
- Mit dem PayPal-Widget führst du den Bezahlvorgang im Checkout durch.
- Sobald das Widget über
onApprove
signalisiert, dass der Käufer autorisiert hat, aktivierst du den „Bestellung bestätigen“-Button. Ein Klick darauf startet die finale Confirm-Order-Action im Backend.
Zahlung validieren & Bestellung abschließen Im BasketOrderController → confirmOrderAction:
- Du lädst anhand der
basketOrder.uid
den Datensatz und liest die Order-ID ausbasketOrder.callbackParameter
aus. - Mit dieser Order-ID fragst du bei PayPal den aktuellen Status ab (GET
/v2/checkout/orders/{orderId}
) oder führst bei Bedarf einen Capture durch. - Die Antwort speicherst du erneut in
basketOrder.callbackParameter
. - Erhält dein Request den Status COMPLETED, markierst du die Bestellung als bezahlt und leitest alle weiteren Prozesse ein (Versand, Rechnung etc.). Bei jedem anderen Status brichst du ab und informierst entsprechend.
- Du lädst anhand der
PayPal-Plus IPN konfigurieren
Wenn Du noch die alte PayPal-Plus (bis Shop-Version 5.2.0) verwendest, musst du im PayPal-Konto IPN aktivieren. Dies ist in der PayPal-Oberfläche nicht mehr zu finden, da es veraltet ist und der neue PayPal-Checkout verwendet werden soll.
Bei PayPal einloggen Melde dich auf https://www.paypal.com mit deinem Live-Konto an.
Kontoeinstellungen öffnen Klicke oben rechts auf das Zahnrad-Icon und wähle „Kontoeinstellungen“.
Website-Zahlungseinstellungen aufrufen Scrolle zum Menüpunkt „Website-Zahlungseinstellungen“ oder öffne direkt:
https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify
IPN aktivieren
- Wähle „IPN-Einstellungen bearbeiten“.
- Aktiviere „Instant Payment Notifications (IPN)“.
- Trage als URL eine gültige HTTPS-Adresse ein (z. B. deine Callback-URL).
- Speichere die Einstellung.
Hinweis: Die URL muss nicht deine finale notify_url sein, sondern kann eine beliebige gültige HTTPS-Adresse sein.
IPN-Historie prüfen
- Öffne im Dashboard „Aktivitäten → Alle Transaktionen“, wähle eine Transaktion aus und klicke unten auf „IPN-Verlauf anzeigen“ oder rufe direkt auf:
https://www.paypal.com/cgi-bin/webscr?cmd=_display-ipns-history
- Dort siehst du, ob PayPal Benachrichtigungen gesendet hat und welchen HTTP-Status dein Server zurückgegeben hat.
- Öffne im Dashboard „Aktivitäten → Alle Transaktionen“, wähle eine Transaktion aus und klicke unten auf „IPN-Verlauf anzeigen“ oder rufe direkt auf: