PayPal-Zahlungen annehmen
Erfahren Sie, wie Sie PayPal-Zahlungen annehmen, einer bei europäischen Unternehmen beliebten Digital Wallet.
Stripe einrichtenServerseitig
Zunächst benötigen Sie ein Stripe-Konto. Registrieren Sie sich jetzt.
Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung:
Erstellen Sie ein PaymentIntentServerseitig
Stripe verwendet ein Zahlungsobjekt (als PaymentIntent bezeichnet), um sämtliche Status der Zahlung zu dokumentieren und zu verarbeiten, bis sie abgeschlossen ist. Erstellen Sie einen PaymentIntent
auf Ihrem Server und geben Sie den einzuziehenden Betrag und die Währung an. Falls Sie bereits über eine Integration verfügen, die die Payment Intents API verwendet, fügen Sie der Liste der Zahlungsmethoden für Ihren PaymentIntent die Zahlungsmethode paypal
hinzu.
Im zurückgegebenen PaymentIntent ist ein Client-Geheimnis enthalten, das verwendet wird, um Zahlungen sicher abzuschließen, anstatt das gesamte PaymentIntent-Objekt zu übergeben. Senden Sie das Client-Geheimnis zurück an den Client, damit Sie es in späteren Schritten verwenden können.
Nutzerdefinierte Beschreibung einfügen
Standardmäßig wird in den Bestellungsdetails auf der PayPal-Aktivitätsseite der Nutzerin/des Nutzers der Bestellungsbetrag angezeigt. Sie können das ändern, indem Sie eine nutzerdefinierte Beschreibung in der Eigenschaft description
angeben.
Bevorzugtes Gebietsschema anpassen
Standardmäßig wird die PayPal-Autorisierungsseite basierend auf Variablen, wie z. B. dem Land der Händlerin/des Händlers, lokalisiert. Sie können sie mithilfe der Eigenschaft preferred_
an das bevorzugte Gebietsschema Ihrer Kundinnen/Kunden anpassen. Bei dem Wert muss es sich um einen zweistelligen Sprachcode in Kleinbuchstaben handeln, gefolgt von einem Bindestrich (-
) und einem zweistelligen Ländercode in Großbuchstaben. Beispiel: Der Wert für einen/eine französischsprachige/n Nutzer/in in Belgien ist fr-BE
.
Sie können die PayPal-Autorisierung über die Eigenschaft preferred_locale auf das bevorzugte Gebietsschema Ihrer Kundin/Ihres Kunden festlegen. Unterstützte Gebietsschemata finden Sie in der folgenden Tabelle:
Wert | Gebietsschema | Land |
---|---|---|
cs-CZ | Tschechisch | Tschechische Republik |
da-DK | Dänisch | Dänemark |
de-AT | Deutsch | Österreich |
de-DE | Deutsch | Deutschland |
de-LU | Deutsch | Luxemburg |
el-GR | Griechisch | Griechenland |
en-GB | Englisch | Vereinigtes Königreich |
de-DE | Englisch | Vereinigte Staaten |
es-ES | Spanisch | Spanien |
fi-FI | Finnisch | Finnland |
fr-BE | Französisch | Belgien |
fr-FR | Französisch | Frankreich |
fr-LU | Französisch | Luxemburg |
hu-HU | Ungarisch | Ungarn |
it-IT | Italienisch | Italien |
nl-BE | Niederländisch | Belgien |
nl-NL | Niederländisch | Niederlande |
pl-PL | Polnisch | Polen |
pt-PT | Portugiesisch | Portugal |
sk-SK | Slowakisch | Slowakei |
sv-SE | Schwedisch | Schweden |
Zahlungsbeschreibungen bei PayPal
Die Zahlungsbeschreibung auf dem Kontoauszug des Käufers/der Käuferin wird von PayPal festgelegt und lautet standardmäßig PAYPAL *YOUR_
. Wenn Sie das Feld statement_
beim Erstellen des PaymentIntent
festlegen, wird sein Wert bis zu 22 Zeichen an den von PayPal festgelegten angehängt.
Wenn Ihr Unternehmensname in PayPal beispielsweise BUSINESS
lautet und Sie statement_
auf order_
festlegen, sehen die Käufer/innen auf ihrem Kontoauszug die Angabe PAYPAL *BUSINESS order
.
Zahlung an Stripe sendenClientseitig
Wenn Kundinnen/Kunden über das „Click to Pay“-Verfahren mit PayPal bezahlen, verwenden Sie Stripe.js, um die Zahlungen an Stripe zu übermitteln. Stripe.js ist die grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Sie verarbeitet automatisch komplexe Szenarien wie die nachfolgend beschriebene Weiterleitung und ermöglicht die Erweiterung Ihrer Integration durch zusätzliche Zahlungsmethoden. Binden Sie das Stripe.js-Skript in Ihre Bezahlseite ein, indem Sie es im head
Ihrer HTML-Datei einfügen.
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>
Erstellen Sie auf Ihrer Checkout-Seite mit dem folgenden JavaScript eine Instanz von Stripe.js.
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
Um eine Zahlung auf dem Client zu erstellen, übergeben Sie das Client-Geheimnis des in Schritt 2 erstellten PaymentIntent
-Objekts. Das Client-Geheimnis unterscheidet sich von Ihren API-Schlüsseln, die Stripe-API-Anfragen authentifizieren. Achten Sie auf einen vorsichtigen Umgang mit dem Client-Geheimnis, da mit ihm die Zahlung abgeschlossen werden kann. Es darf nicht protokolliert, in URLs eingebettet oder Personen außer der Kundin/dem Kunden selbst zugänglich gemacht werden.
PayPal-Zahlung bestätigen
Rufen Sie stripe.confirmPayPalPayment auf, um Ihre Kundinnen/Kunden zum Abschließen der Zahlung an PayPal weiterzuleiten. Sie müssen ein return_
hinzufügen, um anzugeben, wohin Stripe Ihre Kundinnen/Kunden weiterleiten sollen, nachdem die Zahlung abgeschlossen ist. Sie können auch die return_
für neue PayPal-Zahlungsmethoden hinzufügen. Dies ist jedoch nicht erforderlich, wenn Sie eine zuvor eingerichtete PayPal Zahlungsmethode mit SetupIntent oder eine PaymentIntent verwenden, die setup_
enthält.
// Redirects away from the client const {error} = await stripe.confirmPayPalPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/checkout/complete', } ); if (error) { // Inform the customer that there was an error. }
Wenn Sie Ihre PayPal-Mittel mit PayPal begleichen, hat die mit der Zahlung verknüpfte Saldotransaktion unabhängig vom Zahlungsbetrag einen Betrag von Null, da die Transaktion eingehendes und ausgehendes Geld Ihres Stripe-Saldos darstellt. Bei PayPal werden die Gelder jedoch Ihrem PayPal-Saldo gutgeschrieben und es wird kein Geld auf Ihren Stripe-Saldo übertragen. Die Saldotransaktion umfasst in diesem Fall auch damit verbundene Gebühren. Erfahren Sie mehr über andere wichtige Details im Zusammenhang mit den Abrechnungseinstellungen.
Weiterleitung verarbeiten
Die folgenden URL-Abfrageparameter werden angegeben, wenn Stripe Kund/innen an die return_
weiterleitet.
Parameter | Beschreibung |
---|---|
payment_ | Die eindeutige ID für PaymentIntent . |
payment_ | Das Client-Geheimnis des PaymentIntent -Objekts. |
Bei Angabe der return_
können Sie auch Ihre eigenen Abfrageparameter hinzufügen. Sie bleiben während des gesamten Weiterleitungsvorgangs erhalten. Die return_
sollte einer Seite auf Ihrer Website entsprechen, die den Status der Zahlung angibt. Sie sollten den Status des PaymentIntent
beim Rendern der Rückgabeseite überprüfen. Hierfür können Sie die Funktion retrievePaymentIntent
von Stripe.js verwenden und im payment_
übergeben.
(async () => { const url = new URL(window.location); const clientSecret = url.searchParams.get('payment_intent_client_secret'); const {paymentIntent, error} = await stripe.retrievePaymentIntent(clientSecret); if (error) { // Handle error } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment } })();
Sie finden den Namen, die E-Mail-Adresse, die Zahler-ID und die Transaktions-ID des des Inhabers/der Inhaberin der Zahlung in der Eigenschaft payment_method_details.
Feld | Wert |
---|---|
payer_ | Die E-Mail-Adresse der zahlenden Person in ihrem PayPal-Konto. |
payer_ | Der Name der zahlenden Person in ihrem PayPal-Konto. |
payer_ | Eine eindeutige ID des PayPal-Kontos der zahlenden Person. |
transaction_ | Eine eindeutige, von PayPal generierte Transaktions-ID. |
{ "charges": { "data": [ { "payment_method_details": { "paypal": { "payer_id": "H54KFE9XXVVYJ", "payer_email": "jenny@example.com", "payer_name": "Jenny Rosen", "transaction_id": "89W40396MK104212M" }, "type": "paypal" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU", "created": 1445277809, "currency": "eur", "flow": "redirect",
OptionalEreignisse nach der Zahlung verarbeiten
Stripe übermittelt ein payment_intent.succeeded-Ereignis, wenn die Zahlung abgeschlossen ist. Verwenden Sie im Dashboard einen Webhook oder eine Partnerlösung, um diese Ereignisse zu empfangen und Aktionen auszuführen (Versenden einer Bestellbestätigung per E-Mail an die Kund/innen, Erfassen des Verkaufs in einer Datenbank oder Einleiten des Versandablaufs).
Überwachen Sie diese Ereignisse, statt auf einen Callback vom Client zu warten. Auf dem Client könnte der Kunde/die Kundin das Browserfenster schließen oder die App beenden, bevor der Callback erfolgt ist und böswillige Clients könnten die Antwort manipulieren. Wenn Sie Ihre Integration so einrichten, dass asynchrone Ereignisse überwacht werden, hilft Ihnen dies auch dabei, in Zukunft mehr Zahlungsmethoden zu akzeptieren. Hier erhalten Sie Informationen zu den Unterschieden zwischen allen unterstützten Zahlungsmethoden.
Ereignisse empfangen und Geschäftsaktionen ausführen
Es gibt mehrere Möglichkeiten, Geschäftsaktionen zu empfangen und auszuführen.
Manuell
Verwenden Sie das Stripe-Dashboard, um alle Stripe-Zahlungen anzuzeigen, Zahlungsbelege per E-Mail zu senden, Auszahlungen abzuwickeln oder fehlgeschlagene Zahlungen erneut durchzuführen.
Benutzerdefinierter Code
Erstellen Sie einen Webhook-Handler, um Ereignisse zu überwachen und benutzerdefinierte asynchrone Zahlungsabläufe zu erstellen. Mit der Stripe-CLI können Sie Ihre Webhook-Integration lokal testen und Fehler beheben.
Vorgefertigte Apps
Verarbeiten Sie häufige Geschäftsereignisse, wie Automatisierung oder Marketing und Vertrieb durch Integration einer Partneranwendung.
OptionalPayPal-Weiterleitung manuell handhaben
Wenn Sie Stripe.js verwenden, können Sie Ihre Integration einfacher um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen und Kunden jedoch auch manuell an Ihren Server weiterleiten.
- Erstellen und bestätigen Sie einen PaymentIntent vom Typ
paypal
. Durch Angabe vonpayment_
wird eine PaymentMethod erstellt und sofort mit dem PaymentIntent verwendet.method_ data
Im Feld return_
müssen Sie auch die URL angeben, an die Ihre Kund/innen nach Abschluss ihrer Zahlung weitergeleitet werden. Sie können Ihre eigenen Abfrageparameter in dieser URL angeben. Diese Parameter werden nach Abschluss der Weiterleitung in die endgültige URL aufgenommen.
- Überprüfen Sie, ob der
PaymentIntent
den Statusrequires_
und obaction next_
den Typaction redirect_
hat.to_ url
{ "status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", ... }
- Leiten Sie die Kundinnen/Kunden an die in der Eigenschaft
next_
angegebene URL weiter. Dieses Codebeispiel ist nur eine Annäherung und kann sich vom Weiterleitungsverfahren in Ihrem Web-Framework unterscheiden.action. redirect_ to_ url. url
Bei Abschluss des Bezahlvorgangs werden Ihre Kundinnen/Kunden zu Ihrer return_
weitergeleitet. Die URL-Abfrageparameter payment_
und payment_
sind zusammen mit Ihren eigenen Abfrageparametern enthalten. Stripe empfiehlt, einen Webhook-Endpoint einzurichten, um den Zahlungsstatus programmgesteuert zu bestätigen.
OptionalZahlung autorisieren und später erfassen
PayPal unterstützt die separate Autorisierung und Erfassung. Wenn Sie sich für die Zahlungsabwicklung mit Stripe entschieden haben, sind Ihre Autorisierungen 10 Tage lang gültig. Stripe autorisiert die Zahlung automatisch erneut, um den Autorisierungszeitraum um weitere 10 Tage zu verlängern. Dies ergibt eine Gesamtdauer von 20 Tagen. Wenn die erneute Autorisierung nicht funktioniert, lässt Stripe die Zahlung nach 10 Tagen ablaufen. Überwachen Sie den Webhook charge.expired, um zu erfahren, wann der Autorisierungszeitraum endet.
Wenn Sie sich für die Zahlungsabwicklung mit PayPal entschieden haben, bleibt Ihr Autorisierungszeitraum 3 Tage lang gültig. Für einen erweiterten garantierten Autorisierungszeitraum von bis zu 10 Tagen, bei PayPal als honor period bezeichnet, kontaktieren Sie den PayPal-Support.
Stripe anweisen, nur zu autorisieren
Um anzugeben, dass Sie Autorisierung und Erfassung trennen möchten, legen Sie capture_method beim Erstellen des PaymentIntent auf manual
fest. Dieser Parameter weist Stripe an, nur den Betrag im PayPal-Konto der Kundin/des Kunden zu autorisieren.
Bei erfolgreicher Autorisierung übermittelt Stripe das Ereignis payment_intent.amount_capturable_updated. Lesen Sie in unserem Leitfaden zu Ereignissen mehr dazu.
Die Gelder erfassen
Nach erfolgreicher Autorisierung wechselt der Status des PaymentIntent zu requires_
. Um die autorisierten Gelder zu erfassen, führen Sie eine Erfassungsanfrage für den PaymentIntent durch. Standardmäßig wird der gesamte autorisierte Betrag erfasst. Sie können keinen höheren, aber einen niedrigeren Betrag erfassen.
Optional Autorisierung stornieren
Wenn Sie eine Autorisierung stornieren müssen, können Sie den PaymentIntent stornieren.
OptionalAsynchrone Zahlungsmethoden bei PayPal aktivieren
Standardmäßig lässt Stripe nur synchrone Zahlungsmethoden per PayPal zu. Dadurch wird garantiert, dass Sie über den Erfolg oder das Fehlschlagen einer Zahlung umgehend benachrichtigt werden. Wenn Sie asynchrone Zahlungsmethoden zulassen, erhalten Sie für einige Zahlungen möglicherweise verzögerte Benachrichtigungen. Daher müssen Sie Webhook-Endpoints verwenden, um Benachrichtigungen über den Erfolg oder das Fehlschlagen bestimmter Zahlungen zu erhalten.
Kontaktieren Sie den Stripe-Support, um asynchrone Zahlungen auf PayPal zu aktivieren.
OptionalFehlercodes
Dies sind die häufigsten Fehlercodes und die dazugehörigen Details bei der Integration mit PayPal. Wenn eine PayPal API-Anfrage den Fehler zurückgegeben hat, enthält sie einen PayPal-Problemcode und die zugehörige Debug-ID für die Anfrage. Sie können die Debug-ID verwenden, wenn Sie sich an den PayPal-Support wenden, um Hilfe bei Ihrem Problem zu erhalten.
Fehlercode | Details |
---|---|
country_ | Die angegebene Ländercode in der Versandadresse ist ungültig. |
incorrect_ | Die angegebene Versandadresse ist ungültig. Dieser Fehler tritt auch auf, wenn das angegebene Land zusätzlich entweder eine Stadt oder eine Postleitzahl erfordert. Für weitere Informationen überprüfen Sie bitte die Fehlermeldung und wenden Sie sich mit der Debug ID und dem PayPal issue an den PayPal-Support |
payment_ | Die Zahlungsmethode paypal ist derzeit nicht verfügbar. Dieser Fehler kann durch eine Zeitüberschreitung oder ein Serverproblem beim Herstellen einer Verbindung zur PayPal API entstehen. |
payment_ | Die Transaktion wird von PayPal abgelehnt. Dies erfolgt häufig aufgrund der Betrugsschutzeinstellungen des Händlers bei PayPal, eines Compliance-Verstoßes oder weil die zahlende Person nicht mit der ausgewählten Finanzierungsmethode bezahlen kann. Für weitere Informationen überprüfen Sie bitte die Fehlermeldung und wenden Sie sich mit der Debug ID und dem PayPal issue an den PayPal-Support |
payment_ | Die Anfrage ist bei PayPal abgelaufen. In den meisten Fällen handelt es sich um einen vorübergehenden Fehler, und Sie können die Anfrage nach einem kurzen Moment wiederholen. |
payment_ | Die Zahlungsmethode paypal ist für Ihr Stripe-Konto nicht aktiviert. |
payment_ | Die Anfrage bei PayPal ist fehlgeschlagen. Dies kann vorkommen, wenn das Geschäftskonto des Händlers von PayPal gesperrt, eingeschränkt oder geschlossen wird oder wenn das PayPal-Konto der zahlenden Partei eingeschränkt wird. Für weitere Informationen überprüfen Sie bitte die Fehlermeldung und wenden Sie sich mit der Debug ID und dem PayPal issue an den PayPal-Support. |
OptionalPayPal-Integration testen
Um eine erfolgreiche Zahlung in Ihrer PayPal-Integration zu testen, verwenden Sie Ihre Test-API-Schlüssel und zeigen Sie die Weiterleitungsseite an. Dort sehen Sie die Optionen zum Autorisieren oder Fehlschlagen der Nutzerauthentifizierung als Test-Szenarien. Wenn Sie Testzahlung autorisieren auswählen, geht der PaymentIntent von requires_
zu succeeded
über.
Um den Fall zu testen, in dem Nutzer/innen sich nicht authentifizieren können, verwenden Sie Ihre Test-API-Schlüssel und zeigen Sie die Weiterleitungsseite an. Klicken Sie auf der Weiterleitungsseite auf Fail test payment (Testzahlung fehlschlagen lassen). Der PaymentIntent wechselt dann von requires_
zu requires_
.
Um die häufigsten Integrations- und Fehlerszenarien für Zahlungen mit PayPal zu simulieren, übergeben Sie bei der Erstellung des PaymentIntent als Teil der Abrechnungsdetails email
-Werte, die den unter Test-Szenarien beschriebenen Mustern entsprechen. Bei der Bestätigung des PaymentIntent auf der Serverseite würde eine Anfrage, die eine von PayPal abgelehnte Zahlung simuliert, zum Beispiel wie folgt aussehen:
Test-Szenarien
E-Mail-Muster | Szenario | Erklärung |
---|---|---|
. | Beschränktes Händlerkonto | Die Erfassung oder Autorisierung einer Zahlung schlägt mit dem Fehler payment_ fehl, wenn Ihr Händlerkonto von PayPal eingeschränkt wird. Geben Sie zum Zeitpunkt der Autorisierung eine E-Mail an, die diesem Muster entspricht, damit die Autorisierung fehlschlägt. |
. | Transaktion abgelehnt | Die Erfassung einer Zahlung schlägt mit dem Fehler payment_ fehl, wenn die Transaktion von PayPal abgelehnt wird. |
. | Zahlungsmittel abgelehnt | Die Erfassung einer Zahlung schlägt mit dem Fehler payment_ fehl, wenn das vorgelegte Zahlungsmittel entweder vom Bearbeiter oder der Bank abgelehnt wurde oder für diese Zahlung nicht verwendet werden kann. |
. | Eine autorisierte manuell erfassen | Die Erfassung einer autorisierten Zahlung schlägt mit dem Fehler capture_ fehl, wenn die Autorisierung bereits abgelaufen ist. |