Zukünftige PayPal-Zahlungen einrichten
Aktivieren Sie Unterstützung für wiederkehrende Zahlungen vom Stripe Dashboard aus
Sie können den Zugriff auf wiederkehrende Zahlungen direkt über das Stripe-Dashboard anfordern. Rufen Sie dazu die Seite mit Einstellungen für Zahlungsmethoden auf, suchen Sie nach PayPal und klicken Sie neben dem Abschnitt „Wiederkehrende Zahlungen“ auf Aktivieren. Ihnen wird der Status ausstehend angezeigt. In der Regel dauert es bis zu 5 Werktage, bis Sie Zugriff auf die wiederkehrenden Zahlungen für PayPal erhalten. Wenn der Zugriff gewährt wird, sehen Sie wiederkehrende Zahlungen auf der Seite mit Ihren PayPal-Einstellungen.
Sie können Stripe Checkout verwenden, um PayPal-Zahlungsinformationen vorab zu erfassen. Der endgültige Betrag bzw. das Zahlungsdatum wird dabei später festgelegt. Mögliche Anwendungsszenarien:
- Speichern von Zahlungsmethoden in einer Geldbörse, um künftige Käufe zu optimieren.
- Gebühreneinzug nach der Leistungserbringung.
- Einrichtung kostenloser Probeabonnements.
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:
Kund/innen vor Einrichtung erstellen oder abrufenServerseitig
Um eine PayPal-Zahlungsmethode für zukünftige Zahlungen zu wiederzuverwenden, muss sie einem Customer-Objekt zugeordnet werden.
Sie sollten ein Customer-Objekt erstellen, wenn Ihre Kund/innen ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung einer Kundin/eines Kunden verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn Ihre Kund/innen noch kein Konto erstellt haben, können Sie jetzt trotzdem ein Customer-Objekt erstellen und es zu einem späteren Zeitpunkt mit Ihrer eigenen internen Darstellung des Kundenkontos verknüpfen.
curl -X POST https://api.stripe.com/v1/customers \ -u "
:"sk_test_4eC39HqLyjWDarjtT1zdp7dc
Checkout-Sitzung erstellenClientseitigServerseitig
Bevor Sie Zahlungen per PayPal annehmen können, müssen Ihre Kund/innen Sie zum Verwenden ihrer PayPal-Konten für künftige Zahlungen über Stripe Checkout autorisieren.
Fügen Sie Ihrer Website eine Schaltfläche zum Bezahlen hinzu, über die ein serverseitiger Endpoint aufgerufen wird, um eine Checkout-Sitzung zu erstellen.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Erstellen Sie eine Checkout-Sitzung im setup
-Modus, um die erforderlichen Informationen zu erfassen. Leiten Sie Ihre Kund/innen nach dem Erstellen der Checkout-Sitzung an die in der Antwort zurückgegebene URL weiter.
curl https://api.stripe.com/v1/checkout/sessions \ -u
: \ -d "payment_method_types[]"="paypal" \ -d mode=setup \ -d customer=sk_test_4eC39HqLyjWDarjtT1zdp7dc\ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ -d cancel_url="https://example.com/cancel"{{CUSTOMER_ID}}
Wenn Ihre Kund/innen ihre Angaben zur Zahlungsmethode machen, werden sie an die success_url
weitergeleitet. Hierbei handelt es sich um eine Seite auf Ihrer Website, auf der Ihre Kund/innen darüber informiert werden, dass ihre Zahlungsmethode erfolgreich gespeichert wurde. Stellen Sie die Sitzungs-ID auf Ihrer Erfolgsseite zur Verfügung, indem Sie die Vorlagenvariable {CHECKOUT_SESSION_ID}
wie im obigen Beispiel in die success_url
einfügen.
Wenn Ihre Kund/innen in einer Checkout-Sitzung auf Ihr Logo klicken, ohne Angaben zur Zahlungsmethode zu machen, leitet Checkout sie über die cancel_url
zurück zu Ihrer Website. In der Regel ist das die Seite auf Ihrer Website, die die Kund/innen vor der Weiterleitung zu Stripe Checkout besucht haben.
Vorsicht
Verlassen Sie sich beim Erkennen von initiierten Zahlungen nicht allein auf die Weiterleitung auf die success_url
:
- Böswillige Nutzer/innen könnten, ohne zu bezahlen, direkt auf die
success_url
zugreifen und sich so unberechtigt Zugang zu Waren und Dienstleistungen verschaffen. - In manchen Fällen werden Kund/innen nach erfolgreicher Zahlung nicht zur
success_url
weitergeleitet. Möglicherweise haben sie die Registerkarte im Browser geschlossen, bevor die Weiterleitung erfolgt ist.
Zahlungsmethode abrufenServerseitig
Nachdem ein Kunde/eine Kundin seine/ihre Zahlungsdetails übermittelt hat, rufen Sie das PaymentMethod-Objekt ab. Eine PaymentMethod speichert die PayPal account-Informationen der Kundinnen und Kunden für spätere Zahlungen. Sie können die PaymentMethod synchron mit der success_url
oder asynchron mithilfe von Webhooks abrufen.
Ob Sie die PaymentMethod synchron oder asynchron abrufen, hängt von Ihrer Toleranz gegenüber Kaufabbrüchen ab, da Kund/innen in manchen Fällen nach erfolgreicher Zahlung nicht zur success_url
weitergeleitet werden. (Sie können beispielsweise die Registerkarte im Browser schließen, bevor die Weiterleitung erfolgt ist.) Die Verarbeitung von Webhooks verhindert diese Form von Kaufabbrüchen in Ihrer Integration.
Verarbeiten Sie checkout.session.completed
-Webhooks, die ein Session-Objekt enthalten. Hier erfahren Sie mehr über das Einrichten von Webhooks. Beim folgenden Beispiel handelt es sich um eine checkout.session.completed
-Antwort.
{ "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "cancel_url": "https://example.com/cancel", "client_reference_id": null, "customer": null, "customer_email": null, "display_items": [], "mode": "setup", "setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" }
Notieren Sie den Wert des Schlüssels setup_intent
, bei dem es sich um die ID für den mit der Checkout-Sitzung erstellten SetupIntent handelt. Ein SetupIntent ist ein Objekt, das verwendet wird, um die PayPal account-Informationen des Kunden/der Kundin für zukünftige Zahlungen einzurichten. Rufen Sie das SetupIntent-Objekt mit der ID ab.
curl https://api.stripe.com/v1/setup_intents/seti_1EzVO3HssDVaQm2PJjXHmLlM \ -u "
:"sk_test_4eC39HqLyjWDarjtT1zdp7dc
Ereignisse nach Einrichtung verarbeitenServerseitig
Verwenden Sie eine Methode wie Webhooks, um zu bestätigen, dass die Abrechnungsvereinbarung kundenseitig ordnungsgemäß autorisiert wurde, statt sich darauf zu verlassen, dass Ihre Kunden und Kundinnen zur Zahlungsstatusseite zurückkehren. Wird eine Abrechnungsvereinbarung erfolgreich autorisiert, so gibt der SetupIntent das Webhook-Ereignis setup_intent.succeeded aus. Wenn Kund/innen die Abrechnungsvereinbarung nicht erfolgreich autorisieren, gibt der SetupIntent das Webhook-Ereignis setup_intent.setup_failed aus und wechselt wieder in den Status requires_payment_method
. Wenn ein Kunde/eine Kundin die Abrechnungsvereinbarung von seinem/ihren PayPal-Konto widerruft, wird mandate.updated ausgegeben.
Integration testen
Testen Sie Ihre PayPal-Integration mit Ihren Test-API-Schlüsseln, indem Sie die Weiterleitungsseite anzeigen. Sie können die erfolgreiche Zahlung testen, indem Sie die Zahlung auf der Weiterleitungsseite authentifizieren. Der PaymentIntent wechselt von requires_action
zu succeeded
.
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 von requires_action
zu requires_payment_method
.
Zahlungsmethode für künftige Zahlungen verwendenServerseitig
Wenn Sie bereit sind, Kund/innen Off-Session abzurechnen, verwenden Sie die Customer- und PaymentMethod-IDs, um einen PaymentIntent zu erstellen.
Um ein paypal
-Instrument zu finden, das belastet werden soll, listen Sie die Ihren Kund/innen zugeordneten PaymentMethods auf.
curl -G https://api.stripe.com/v1/payment_methods \ -u "
:" \ -d customer={{CUSTOMER_ID}} \ -d type=paypalsk_test_4eC39HqLyjWDarjtT1zdp7dc
Wenn Ihnen die Kunden-ID und die PaymentMethod-ID vorliegen, erstellen Sie eine PaymentIntent mit dem Betrag und der Währung der Zahlung. Legen Sie einige weitere Parameter fest, um die Off-Session-Zahlung durchzuführen:
- Setzen Sie off_session auf
true
, um anzugeben, dass sich der/die Kund/in während dieses Zahlungsversuchs nicht in Ihrem Bezahlvorgang befindet. Dies hat zur Folge, dass die PaymentIntent einen Fehler ausgibt, wenn eine Authentifizierung erforderlich ist. - Setzen Sie den Wert der confirm-Eigenschaft der PaymentIntent auf
true
. Dies hat zur Folge, dass die Bestätigung sofort nach Erstellung der PaymentIntent erfolgt. - Setzen Sie payment_method auf die ID der PaymentMethod und Kunde auf die ID des/der Kund/in.
curl https://api.stripe.com/v1/payment_intents \ -u "
:" \ -d amount=1099 \ -d currency=eur \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=paypal \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ -d confirm=truesk_test_4eC39HqLyjWDarjtT1zdp7dc
Abbruch einer nutzerinitiierten ZahlungsmethodeServerseitig
Ein Kunde/eine Kundin kann das Abonnement (Abrechnungsvereinbarung) über sein/ihr PayPal-Konto kündigen. Wenn dies geschieht, gibt Stripe den Webhook mandate.updated aus. Alle nachfolgenden Payment Intents, die die gespeicherte Zahlungsmethode verwenden, schlagen fehl, bis Sie zu einer Zahlungsmethode mit aktiven Mandaten wechseln. Wenn Abonnementzahlungen fehlschlagen, ändert sich der Status in den Abonnementstatus, der in Ihren Einstellungen für den automatischen Einzug konfiguriert ist. Benachrichtigen Sie die Kundinnen/Kunden, wenn die Zahlung fehlgeschlagen ist und belasten Sie sie mit einer anderen Zahlungsmethode.