Zukünftige Kartenzahlungen einrichten
Verwenden Sie eine manuelle serverseitige Bestätigung oder geben Sie die Zahlungsmethoden separat an.
Achtung
Wir empfehlen Ihnen, den Leitfaden Zukünftige Zahlungen einrichten zu befolgen. Verwenden Sie diesen Leitfaden nur, wenn Sie eine manuelle serverseitige Bestätigung verwenden müssen oder Ihre Integration die separate Angabe von Zahlungsmethoden erfordert. Wenn Sie Elements bereits integriert haben, lesen Sie den Migrationsleitfaden für Payment Element.
Verwenden Sie den Einrichtungsmodus von Checkout, um Zahlungsdaten von Kundinnen/Kunden zu erfassen, die Sie später wiederverwenden können. Der Einrichtungsmodus verwendet die Setup Intents API, um Zahlungsmethoden zu erstellen.
Sehen Sie sich unser vollständiges Arbeitsbeispiel auf GitHub an.
Stripe einrichtenServerseitig
Als Erstes benötigen Sie ein Stripe-Konto. Registrieren Sie sich jetzt.
Verwenden Sie unsere offiziellen Bibliotheken, um von Ihrer Anwendung aus auf die Stripe API zuzugreifen:
Checkout-Sitzung erstellenClientseitigServerseitig
Fügen Sie Ihrer Website eine Checkout-Schaltfläche hinzu, die zum Erstellen einer Checkout-Sitzung einen serverseitigen Endpoint aufruft.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Um eine Sitzung im Setup-Modus zu erstellen, verwenden Sie beim Erstellen der Sitzung den Parameter mode
mit dem Wert setup
. Sie können optional den Kundenparameter angeben, um die erstellte Zahlungsmethode automatisch einem bestehenden Kunden/einer bestehenden Kundin zuzuordnen. Checkout verwendet standardmäßig dynamische Zahlungsmethoden, was bedeutet, dass Sie bei Verwendung der setup
-Methode die Währungs-Parameter übergeben müssen.
Hängen Sie die Vorlagenvariable {CHECKOUT_
an die success_
an, um Zugriff auf die Sitzungs-ID zu erhalten, sobald Ihre Kundin/Ihr Kunde eine Checkout-Sitzung erfolgreich abgeschlossen hat. Leiten Sie Ihren Kunden/Ihre Kundin nach Erstellen der Checkout-Sitzung an die in der Antwort zurückgegebene URL weiter.
Payment methods
By default, Stripe enables cards and other common payment methods. You can turn individual payment methods on or off in the Stripe Dashboard. In Checkout, Stripe evaluates the currency and any restrictions, then dynamically presents the supported payment methods to the customer.
To see how your payment methods appear to customers, enter a transaction ID or set an order amount and currency in the Dashboard.
You can enable Apple Pay and Google Pay in your payment methods settings. By default, Apple Pay is enabled and Google Pay is disabled. However, in some cases Stripe filters them out even when they’re enabled. We filter Google Pay if you enable automatic tax without collecting a shipping address.
Checkout’s Stripe-hosted pages don’t need integration changes to enable Apple Pay or Google Pay. Stripe handles these payments the same way as other card payments.
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.
Webhooks, die ein Session-Objekt enthalten. Hier erfahren Sie mehr über das Einrichten von Webhookssession. completed - Synchron: Rufen Sie die Sitzungs-ID von der
success_
, wenn ein/e Nutzer/in auf Ihre Seite zurückgeleitet wird. Verwenden Sie die Sitzungs-ID, um das Sitzungsobjekt abzurufen.url
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_
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_
. Dabei handelt es sich um die ID des während der Checkout-Sitzung erstellten SetupIntent. Ein SetupIntent ist ein Objekt, mit dem die Bankkontoinformationen von Kundinnen und Kunden für zukünftige Zahlungen eingerichtet werden.
Beispiel-Nutzlast von checkout.
:
{ "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, "client_reference_id": null, "customer": "", "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_
-ID für den nächsten Schritt.
SetupIntent abrufenServerseitig
Verwenden Sie die setup_
-ID, um das SetupIntent-Objekt abzurufen. Das zurückgegebene Objekt enthält eine payment_
-ID, die Sie im nächsten Schritt einem Kunden/einer Kundin zuordnen können.
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.
Charge the payment method laterServerseitig
If you didn’t create the Checkout Session with an existing customer, use the ID of the PaymentMethod to attach the PaymentMethod to a Customer. After you attach the PaymentMethod to a customer, you can make an off-session payment using a PaymentIntent:
- Set customer to the ID of the Customer and payment_method to the ID of the PaymentMethod.
- Set off_session to
true
to indicate that the customer isn’t in your checkout flow during a payment attempt and can’t fulfill an authentication request made by a partner, such as a card issuer, bank, or other payment institution. If, during your checkout flow, a partner requests authentication, Stripe requests exemptions using customer information from a previous on-session transaction. If the conditions for exemption aren’t met, the PaymentIntent might throw an error. - Set the value of the PaymentIntent’s confirm property to
true
, which causes confirmation to occur immediately when you create the PaymentIntent.
When a payment attempt fails, the request also fails with a 402 HTTP status code and the status of the PaymentIntent is requires_payment_method. Notify your customer to return to your application (for example, by sending an email or in-app notification) and direct your customer to a new Checkout Session to select another payment method.