Zahlungsangaben aktualisieren
Führen Sie die folgenden Schritte aus, um eine Checkout-Seite zu erstellen, die die Zahlungsdetails Ihrer Kund/innen erfasst und eine Zahlungsmethode zurückgibt. Verwenden Sie dann die REST-APIs von Stripe, um die für zukünftige Rechnungen verwendete Zahlungsmethode zu aktualisieren.
Notiz
In diesem Leitfaden wird Bezahlvorgang verwendet, um die Zahlungsmethoden für Abonnements zu aktualisieren. Sie können stattdessen das Abrechnungs-Kundenportal implementieren, um Ihren Kund/innen ein von Stripe gehostetes Dashboard zur Verfügung zu stellen, um ihre Abonnements und Rechnungsdetails zu verwalten.
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:
Checkout-Sitzung erstellenServerseitig
Um eine Sitzung im Einrichtungsmodus zu erstellen, verwenden Sie beim Erstellen der Sitzung den Parameter mode
mit dem Wert setup
. Eine vollständige Liste der Parameter, die Sie für die Erstellung einer Sitzung verwenden können, finden Sie in der Dokumentation zur Checkout Session API.
Hängen Sie die Vorlagenvariable {CHECKOUT_SESSION_ID}
an die success_url
an, um Zugriff auf die Sitzungs-ID zu erhalten, sobald Ihre Kundin/Ihr Kunde eine Checkout-Sitzung erfolgreich abgeschlossen hat.
Verwenden Sie abschließend das Wörterbuch setup_intent_data.metadata
, um die bestehende Stripe-subscription_id
Ihrer Kundin/Ihres Kunden an die Checkout-Sitzung zu übergeben. Beachten Sie, dass es auch andere Möglichkeiten gibt, diese Daten an Ihren Server zu übergeben. Für diesen Leitfaden verwenden wir jedoch Metadaten.
Zu Checkout weiterleitenClientseitig
Checkout basiert auf Stripe.js, der grundlegenden JavaScript-Bibliothek von Stripe für die Erstellung von Zahlungsabläufen.
Dieser Code wird in der Regel von einem Ereignis-Handler aufgerufen, der als Reaktion auf eine Aktion Ihrer Kundin/Ihres Kunden ausgelöst wird (z. B. durch Klicken auf eine Zahlungsschaltfläche).
Checkout-Sitzung abrufenServerseitig
Nachdem eine Kundin/ein Kunde die Checkout-Sitzung erfolgreich durchlaufen hat, müssen Sie das Session-Objekt abrufen. Es gibt dafür zwei Möglichkeiten:
- Asynchron: Verarbeiten Sie
checkout.session.completed
Webhooks, die ein Session-Objekt enthalten. Hier erfahren Sie mehr über das Einrichten von Webhooks - Synchron: Rufen Sie die Sitzungs-ID von der
success_url
, wenn ein/e Nutzer/in auf Ihre Seite zurückgeleitet wird. Verwenden Sie die Sitzungs-ID, um das Sitzungsobjekt abzurufen.
Die Wahl hängt von Ihrer Toleranz gegenüber Kaufabbrüchen ab, da Kundinnen/Kunden in manchen Fällen nach erfolgreicher Zahlung nicht zur success_url
weitergeleitet werden. Das passiert zum Beispiel, wenn sie die Registerkarte im Browser schließen, bevor die Weiterleitung erfolgt ist. Die Verarbeitung von Webhooks verhindert diese Form von Kaufabbrüchen in Ihrer Integration.
Nachdem Sie das Session-Objekt abgerufen haben, erfassen Sie den Wert des Schlüssels setup_intent
. Dabei handelt es sich um die ID des während der Checkout-Sitzung erstellten SetupIntent. Eine SetupIntent ist ein Objekt, mit dem die Bankkontoinformationen von Kund/innen für zukünftige Zahlungen eingerichtet werden.
Beispiel-Nutzlast von checkout.session.completed
:
{ "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": "cus_FOsk5sbh3ZQpAU", "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" }
Beachten Sie die setup_intent
-ID für den nächsten Schritt.
SetupIntent abrufenServerseitig
Verwenden Sie die setup_intent
-ID, um das SetupIntent-Objekt mit dem Endpoint /v1/setup_intents/:id abzurufen.
Beispielantwort:
{ "id": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "object": "setup_intent", "application": null, "cancellation_reason": null, "client_secret": null, "created": 1561420781, "customer": "cus_FOsk5sbh3ZQpAU", "description": null, "last_setup_error": null, "livemode": false, "metadata": { "subscription_id": "sub_8epEF0PuRhmltU" }, "next_action": null, "on_behalf_of": null, "payment_method": "pm_1F0c9v2eZvKYlo2CJDeTrB4n", "payment_method_types": [ "card" ], "status": "succeeded", "usage": "off_session" }
Notieren Sie sich die customer
-ID, die subscription_id
und die payment_method
-ID für die nächsten Schritte.
Notiz
Wenn Sie diese Informationen synchron über die Stripe-API anfordern (anstatt Webhooks zu verarbeiten), können Sie den vorherigen Schritt mit diesem Schritt kombinieren, indem Sie das SetupIntent-Objekt in der Anfrage an den Endpoint /v1/checkout/session erweitern. So müssen Sie nicht zwei Netzwerkanforderungen stellen, um auf die neu erstellte PaymentMethod-ID zugreifen zu können.
Standard-Zahlungsmethode festlegenServerseitig
Es gibt zwei Möglichkeiten, um sicherzustellen, dass eine Zahlungsmethode für zukünftige Rechnungen verwendet wird:
- Richten Sie sie als
invoice_settings.default_payment_method
der Kundin/des Kunden ein. - Richten Sie sie als
default_payment_method
des Abonnements ein.
Die Festlegung der invoice_settings.default_payment_method
für die Kundin/den Kunden bewirkt, dass alle zukünftigen Rechnungen für diese Kundin/diesen Kunden mit der angegebenen Zahlungsmethode bezahlt werden.
Die Festlegung der default_payment_method
für das Abonnement bewirkt, dass alle zukünftigen Rechnungen für dieses Abonnement mit der angegebenen Zahlungsmethode bezahlt werden, wobei jede für die zugehörige Kundin bzw. den zugehörigen Kunden festgelegte invoice_settings.default_payment_method
außer Kraft gesetzt wird.
invoice_settings.default_payment_method
für die Kundin/den Kunden festlegen
Verwenden Sie die abgerufene Kunden-ID und die abgerufene PaymentMethod-ID und legen Sie die invoice_settings.default_payment_method
für die Kundin/den Kunden mit dem Endpoint /v1/customers/:id fest.
Alle zukünftigen Rechnungen für diese Kundin/diesen Kunden werden nun mit der neuen PaymentMethod abgerechnet, die mit dem Einrichtungsmodus Checkout-Sitzung erstellt wurde.
default_payment_method
für das Abonnement festlegen
Verwenden Sie die abgerufene Abonnement-ID und die abgerufene PaymentMethod-ID und legen Sie die default_payment_method
für das Abonnement mit dem Endpoint /v1/subscriptions/:id fest.
Alle zukünftigen Rechnungen für dieses Abonnement werden nun mit der neuen PaymentMethod abgerechnet, die mit dem Einrichtungsmodus Checkout-Sitzung erstellt wurde. Dabei wird jede für die zugehörige Kundin bzw. den zugehörigen Kunden festgelegte invoice_settings.default_payment_method
außer Kraft gesetzt.
Siehe auch
Glückwunsch! Sie können jetzt eine Standard-Zahlungsmethode für zukünftige Rechnungen festlegen. Beim Testen Ihrer Integration mit Ihrem Test-API-Schlüssel können Sie eine Testkartennummer verwenden, um die ordnungsgemäße Funktion zu überprüfen.