Zahlungsdaten bei einer In-App-Zahlung speichern
Speichern Sie Zahlungsdaten während einer Zahlung in Ihrer mobilen App.
Verwenden Sie die Payment Intents API, um Zahlungsdetails aus einem Einkauf zu speichern. Es gibt mehrere Anwendungsszenarien:
- Belasten Sie das Konto eines Kunden/einer Kundin für eine E-Commerce-Bestellung und speichern Sie die Details für zukünftige Einkäufe.
- Leiten Sie die erste Zahlung einer Reihe wiederkehrender Zahlungen ein.
- Buchen Sie eine Anzahlung ab und speichern Sie die Details, um den vollen Betrag später abzubuchen.
Transaktionen mit vorhandener Karte
Card-Present-Transaktionen, wie zum Beispiel Zahlungen über Stripe Terminal, verwenden ein anderes Verfahren zum Speichern der Zahlungsmethode. Weitere Informationen finden Sie in der Terminal-Dokumentation.
Konformität
Sie sind dafür verantwortlich, dass Sie alle geltenden Gesetze, Vorschriften und Netzwerkregeln einhalten, wenn Sie Zahlungsdetails auf Kundenseite speichern. Diese Anforderungen gelten in der Regel, wenn Sie Zahlungsmethoden Ihrer Kundinnen und Kunden für die zukünftige Verwendung speichern möchten. Ein Beispiel wäre, wenn Sie die kundenseitig bevorzugte Zahlungsmethode im Bezahlvorgang für einen zukünftigen Kauf anzeigen oder das Kundenkonto belasten möchten, wenn Kundinnen und Kunden Ihre Website oder App zu dem Zeitpunkt nicht aktiv nutzen. Fügen Sie Nutzungsbedingungen zu Ihrer Website oder App hinzu, aus denen hervorgeht, wie Sie die Zahlungsdetails speichern möchten, und lassen Sie Kundinnen und Kunden aktiv zu diesen zustimmen.
Wenn Sie eine Zahlungsmethode speichern, können Sie diese nur für die in Ihren Konditionen vereinbarte Nutzung verwenden. Um eine Zahlungsmethode belasten zu können, wenn Kundinnen und Kunden offline sind, und diese Option auch für zukünftige Einkäufe zu speichern, müssen Sie explizit die kundenseitige Zustimmung einholen. Fügen Sie beispielsweise ein Kontrollkästchen mit dem Titel „Meine Zahlungsmethode für die zukünftige Verwendung speichern“ ein, um die Einwilligung zu erhalten.
Um Zahlungen Ihrer Kundinnen und Kunden zu akzeptieren, wenn diese offline sind, fügen Sie unbedingt Folgendes in Ihre Konditionen ein:
- Die kundenseitige Zustimmung, eine Zahlung oder mehrere Zahlungen für bestimmte Transaktionen in deren Namen einzuleiten.
- Der erwartete Zeitpunkt und die voraussichtliche Häufigkeit von Zahlungen (z. B. Zahlungen für geplante Raten- oder Abonnementzahlungen oder für außerplanmäßige Aufstockungen).
- Wie Sie den Zahlbetrag ermitteln.
- Ihre Stornorichtlinie, wenn die Zahlungsmethode für einen Abonnementdienst ist.
Dokumentieren Sie unbedingt die schriftliche Zustimmung Ihrer Kundinnen und Kunden zu diesen Bedingungen.
Stripe einrichtenServerseitigClientseitig
Zunächst benötigen Sie ein Stripe-Konto. Registrieren Sie sich jetzt.
Serverseitig
Diese Integration erfordert Endpoints auf Ihrem Server, die mit der Stripe API kommunizieren können. Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe API von Ihrem Server aus:
Clientseitig
Das Stripe iOS SDK ist Open Source, vollständig dokumentiert und kompatibel mit Apps, die iOS 13 oder höher unterstützen.
Notiz
Details zur aktuellen SDK-Version und zu vorherigen Versionen finden Sie auf der Seite Releases auf GitHub. Um bei Veröffentlichung einer neuen Version eine Benachrichtigung zu erhalten, achten Sie auf die Releases zum jeweiligen Repository.
Zahlungsmethoden aktivieren
Kartenzahlungen sind standardmäßig aktiviert. Zeigen Sie Ihre Einstellungen für Zahlungsmethoden an, um weitere Zahlungsmethoden zu aktivieren, die Sie unterstützen möchten.
Endpoint hinzufügenServerseitig
Hinweis
Um das PaymentSheet vor dem Erstellen eines PaymentIntent anzuzeigen, finden Sie weitere Informationen unter Erfassen von Zahlungsdetails vor dem Erstellen eines Intent.
Diese Integration verwendet drei Stripe-API-Objekte:
PaymentIntent: Stripe verwendet diesen, um Ihre Absicht darzustellen, Zahlungen von Ihren Kundinnen/Kunden anzufordern, wobei Abbuchungsversuche und Zahlungsstatusänderungen im gesamten Vorgang dokumentiert werden.
Kunde/Kundin: Um eine Zahlungsmethode für zukünftige Zahlungen einzurichten, müssen Sie sie einem Kunden/einer Kundin zuordnen. Erstellen Sie ein Customer-Objekt, wenn Ihre Kundin/Ihr Kunde ein Konto bei Ihrem Unternehmen anlegt. Wenn eine Zahlung als Gast durchgeführt wird, können Sie vor der Zahlung ein Customer-Objekt erstellen und es zu einem späteren Zeitpunkt mit Ihrer eigenen internen Darstellung des Kundenkontos verknüpfen.
Temporärer Kundenschlüssel: Informationen auf dem Kundenobjekt sind vertraulich und können nicht direkt über die App abgerufen werden. Ein temporärer Schlüssel gewährt dem SDK vorübergehenden Zugriff auf den/die Kund/in.
Aus Sicherheitsgründen kann Ihre App diese Objekte nicht erstellen. Fügen Sie stattdessen einen Endpoint auf Ihrem Server hinzu, der:
- Ruft den Kunden/die Kundin ab oder erstellt einen neuen/eine neue.
- Erstellt einen temporären Schlüssel für den Kunden/die Kundin.
- Erstellt einen PaymentIntent mit dem Betrag, der Währung und dem Kunden/der Kundin, setup_future_usage . Den Parameter
automatic_
können Sie optional ebenfalls einfügen. Stripe aktiviert seine Funktionalität standardmäßig in der neuesten Version der API.payment_ methods - Gibt das Client-Geheimnis des PaymentIntent, das
secret
des temporären Schlüssels, die ID des Kundenobjekts und Ihren veröffentlichbaren Schlüssel an Ihre App zurück.
Notiz
Das mobile Payment Element unterstützt nur setup_
mit Karten und US-Bankkonten.
Die Zahlungsmethoden, die Kund/innen während des Bezahlvorgangs angezeigt werden, sind ebenfalls in der PaymentIntent enthalten. Sie können Stripe Zahlungsmethoden aus Ihren Dashboard-Einstellungen abrufen lassen oder sie manuell auflisten. Gleich welche Option Sie wählen, die in der PaymentIntent übergebene Währung filtert die Zahlungsmethoden, die dem/r Kund/in angezeigt werden. Wenn Sie beispielsweise eur
für den PaymentIntent übergeben und OXXO im Dashboard aktiviert ist, wird dem/r Kund/in OXXO nicht angezeigt, da OXXO eur
-Zahlungen nicht unterstützt.
Sofern Ihre Integration keine codebasierte Option zum Anbieten von Zahlungsmethoden erfordert, empfiehlt Stripe die automatisierte Option, da Stripe die Währung, Einschränkungen für Zahlungsmethoden und andere Parameter auswertet, um die Liste der unterstützten Zahlungsmethoden zu ermitteln. Zahlungsmethoden, die die Konversion steigern und die für die Währung und den Standort des/r Kund/in am relevantesten sind, erhalten Priorität.
Zahlungsdetails erfassenClientseitig
Um das mobile Payment Element auf Ihrem Checkout-Bildschirm anzuzeigen, stellen Sie bitte Folgendes sicher:
- Zeigen Sie vom Kunden/von der Kundin gekaufte Produkte und den Gesamtbetrag an
- Verwenden Sie das Address Element, um alle benötigten Versanddaten des Kunden/der Kundin zu erfassen
- Fügen Sie eine Checkout-Schaltfläche ein, um die Nutzeroberfläche von Stripe anzuzeigen
Wenn das Ergebnis von PaymentSheetResult
.
lautet, informieren Sie den/die Nutzer/in, (zum Beispiel durch die Anzeige einer Bestellbestätigung).
Wenn Sie allowsDelayedPaymentMethods
auf true festlegen, werden Zahlungsmethoden mit verzögerter Benachrichtigung wie US-Bankkonten zugelassen. Für diese Zahlungsmethoden ist der endgültige Zahlungsstatus nicht bekannt, wenn das PaymentSheet
abgeschlossen wird. Stattdessen ist sie erfolgreich oder schlägt fehl. Wenn Sie diese Art von Zahlungsmethoden unterstützen, informieren Sie den Kunden/die Kundin darüber, dass seine/ihre Bestellung bestätigt ist, und führen seine/ihre Bestellung erst aus (z. B. das Produkt versenden), wenn die Zahlung erfolgreich ist.
Rückgabe-URL einrichtenClientseitig
Der Kunde/Die Kundin verlässt ggf. Ihre App, um sich zu authentifizieren (z. B. in Safari oder einer Banking-App). Damit sie nach der Authentifizierung automatisch zu Ihrer App zurückkehren können, konfigurieren Sie ein benutzerdefiniertes URL-Schema und richten Sie Ihren App-Delegate so ein, dass die URL an das SDK weitergeleitet wird. Stripe unterstützt keine universellen Links.
Legen Sie zusätzlich die returnURL in Ihrem PaymentSheet.Configuration-Objekt auf die URL für Ihre App fest.
var configuration = PaymentSheet.Configuration() configuration.returnURL = "your-app://stripe-redirect"
Ereignisse nach Zahlung verarbeitenServerseitig
Stripe sendet ein payment_intent.succeeded-Ereignis, wenn die Zahlung abgeschlossen ist. Verwenden Sie Webhook-Tool im Dashboard oder folgen Sie der Webhook-Anleitung, um diese Ereignisse zu empfangen und führen Sie Aktionen aus, wie beispielsweise das Senden einer Bestellbestätigung per E-Mail, das Protokollieren des Verkaufs in der Datenbank oder das Starten eines Versand-Workflows.
Überwachen Sie diese Ereignisse, statt auf einen Callback vom Client zu warten. Auf dem Client könnten die Kund/innen das Browserfenster schließen oder die App beenden, bevor der Callback erfolgt ist. Bösartige Clients könnten dann die Antwort manipulieren. Wenn Sie Ihre Integration so einrichten, dass sie asynchrone Ereignisse überwacht, können Sie verschiedene Arten von Zahlungsmethoden mit einer einzelnen Integration akzeptieren.
Neben der Abwicklung des payment_
-Ereignisses empfehlen wir die Abwicklung von diesen weiteren Ereignissen, wenn Sie Zahlungen mit dem Payment Element erfassen:
Ereignis | Beschreibung | Aktion |
---|---|---|
payment_intent.succeeded | Wird gesendet, wenn Kundinnen und Kunden eine Zahlung erfolgreich abgeschlossen haben. | Senden Sie den Kund/innen eine Auftragsbestätigung und wickeln Sie die Bestellung ab. |
payment_intent.processing | Wird gesendet, wenn eine/e Kund/in eine Zahlung erfolgreich veranlasst hat, die Zahlung aber noch nicht abgeschlossen ist. Dieses Ereignis wird am häufigsten gesendet, wenn der Kunde/die Kundin eine Bankabbuchung veranlasst. In Zukunft folgt darauf entweder ein payment_ - oder ein payment_ -Ereignis. | Senden Sie eine Bestellbestätigung an die Kund/innen, in der angegeben ist, dass die Zahlung noch aussteht. Bei digitalen Waren können Sie die Bestellung abwickeln, bevor Sie darauf warten, dass die Zahlung erfolgt. |
payment_intent.payment_failed | Wird gesendet, wenn ein Kunde/eine Kundin einen Zahlungsversuch durchführt, die Zahlung jedoch fehlschlägt. | Wenn eine Zahlung von processing zu payment_ übergeht, bieten Sie der Kundin/dem Kunden einen weiteren Zahlungsversuch an. |
Die gespeicherte Zahlungsmethode später belastenServerseitig
Compliance
Sie sind für die Einhaltung aller geltenden Gesetze, Vorschriften und Netzwerkregeln verantwortlich, wenn Sie die Zahlungsdaten von Kundinnen und Kunden speichern. Wenn Sie Ihren Endkundinnen und Endkunden zuvor genutzte Zahlungsmethoden für zukünftige Einkäufe anzeigen, dürfen Sie nur Zahlungsmethoden auflisten, für die Sie bereits eine kundenseitige Zustimmung eingeholt haben, dank der Sie die Details der Zahlungsmethode für diese spezifische zukünftige Verwendung speichern können. Verwenden Sie den Parameter allow_redisplay, um zwischen Zahlungsmethoden zu unterscheiden, die mit Kundinnen und Kunden verknüpft sind und Ihren Endkundinnen und Endkunden als gespeicherte Zahlungsmethode für zukünftige Einkäufe angezeigt werden können oder nicht.
Wenn Sie eine Kundenzahlung per Off-Session vornehmen möchten, erstellen Sie anhand der Kunden-ID und der PaymentMethod-ID einen PaymentIntent. Um eine geeignete Zahlungsmethode zu finden, listen Sie die mit Ihrer Kundin/Ihrem Kunden verbundenen Zahlungsmethoden auf. In diesem Beispiel sind Karten aufgeführt, Sie können aber auch alle anderen unterstützten Zahlungsmethoden verwenden.
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:
- Legen Sie off_session auf
true
fest, um anzugeben, dass die Kundin/der Kunde sich während eines Zahlungsversuchs nicht in Ihrem Bezahlvorgang befindet und somit eine Authentifizierungsanfrage eines Partners, wie z. B. eines Kartenausstellers, einer Bank oder eines anderen Zahlungsinstituts nicht erfüllen kann. Wenn ein Partner während Ihres Bezahlvorgangs eine Authentifizierung anfordert, fordert Stripe Ausnahmen unter Verwendung von Kundeninformationen aus einer vorherigen On-Session-Transaktion an. Wenn die Bedingungen für eine Ausnahme nicht erfüllt sind, gibt der PaymentIntent möglicherweise einen Fehler zurück. - Legen Sie den Wert der Eigenschaft confirm des PaymentIntent auf
true
fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie payment_method auf die ID der PaymentMethod und Kunde/Kundin auf die ID des Kunden/der Kundin.