Details für zukünftige Zahlungen per ACH-Lastschrift speichern
So speichern Sie die Angaben zur Zahlungsmethode für zukünftige SEPA-Lastschriftzahlungen.
Sie können der Setup Intents API verwenden, um die Details der Zahlungsmethode im Voraus zu erfassen, wobei der endgültige Betrag oder das Zahlungsdatum später festgelegt wird. Dies ist nützlich für Folgendes:
- Speichern von Zahlungsmethoden in einer Wallet, um zukünftige Einkäufe zu optimieren
- Einziehen von Zuschlägen nach Abwicklung einer Dienstleistung
- Kostenlosen Testzeitraum für ein Abonnement starten
Notiz
Bei ACH Direct Debit handelt es sich um eine Zahlungsmethode mit verzögerter Benachrichtigung. Dies bedeutet, dass Gelder nicht sofort nach der Zahlung verfügbar sind. Eine Zahlung benötigt in der Regel 4 Werktage bis zum Eingang auf Ihrem Konto.
Das Stripe Android SDK ist Open Source und vollständig dokumentiert.
Um das SDK zu installieren, fügen Sie stripe-android
und financial-connections
to the dependencies
Ihrer app/build.gradle-Datei ein:
Notiz
Details zur aktuellen SDK-Version und zu vorherigen Versionen finden Sie auf der Seite Releases auf GitHub. Um bei Veröffentlichung eines neuen Release eine Benachrichtigung zu erhalten, beobachten Sie Veröffentlichungen für das jeweilige Repository.
Konfigurieren Sie das SDK mit Ihrem veröffentlichbaren Schlüssel von Stripe so, dass dieser Anfragen an die API stellen kann, wie beispielsweise in Ihrer Unterklasse Application
:
Notiz
Verwenden Sie Ihre Testschlüssel beim Testen und Entwickeln Ihrer App und Ihre Live-Modus-Schlüssel beim Veröffentlichen Ihrer App.
Kundinnen/Kunden erstellen oder abrufenEmpfohlenServerseitig
Erstellen Sie ein Kundenobjekt, wenn Ihr/e Nutzer/in ein Konto bei Ihrem Unternehmen erstellt, oder rufen Sie einen bestehenden Kunden/eine bestehende Kundin ab, der/die diesem Nutzer/dieser Nutzerin zugeordnet ist. Wenn Sie die ID des Kundenobjekts mit Ihrer eigenen Darstellung eines Kunden/einer Kundin verknüpfen, können Sie die gespeicherten Angaben zur Zahlungsmethode später abrufen und verwenden. Geben Sie eine E-Mail-Adresse an, um die Optimierung für wiederkehrende Nutzer/innen von Financial Connections zu aktivieren.
SetupIntent erstellenServerseitigClientseitig
Ein SetupIntent ist ein Objekt, mit dem Sie eine Zahlungsmethode eines Kunden/einer Kundin für zukünftige Zahlungen einrichten können. Der SetupIntent
verfolgt die Schritte dieses Einrichtungsvorgangs.
Serverseitig
Erstellen Sie einen SetupIntent auf Ihrem Server, wobei payment_method_types auf us_bank_account gesetzt ist, und geben Sie die id der Kundin/des Kunden an.
Bei der Erfassung von Zahlungsinformationen für Bankkonten wird standardmäßig Financial Connections verwendet, um das Konto Ihres Kunden/Ihrer Kundin sofort zu verifizieren, mit einer Ausweichoption für die manuelle Eingabe der Kontonummer und die Verifizierung von Testeinzahlungen. In der Financial Connections-Dokumentation erfahren Sie, wie Sie Financial Connections konfigurieren und auf zusätzliche Kontodaten zugreifen, um Ihre ACH-Integration zu optimieren. Beispielsweise können Sie Financial Connections verwenden, um den Kontostand zu prüfen, bevor Sie die ACH-Zahlung veranlassen.
Notiz
Um den Zugriff auf zusätzliche Daten auszudehnen, nachdem ein/e Kund/in sein/ihr Konto authentifiziert hat, muss er/sie das Konto mit erweiterten Berechtigungen erneut verknüpfen.
Clientseitig
In dem zurückgegebenen SetupIntent ist ein Client-Geheimnis enthalten, das auf dem Client verwendet wird, um die Einrichtung sicher abzuschließen, ohne das gesamte SetupIntent-Objekt übergeben zu müssen. Es gibt verschiedene Möglichkeiten, das Client-Geheimnis an den Client zu übergeben.
Angaben zur Zahlungsmethode erfassenClientseitig
Damit die Zahlung erfolgreich ist, ist bei ACH Direct Debit ein Kundenname und (optional) eine E-Mail-Adresse erforderlich. Erfassen Sie in Ihrer App die notwendigen Abrechnungsdaten von den Kund/innen:
- Den vollständigen Namen (Vor- und Nachname) des/der Kund/in
- E-Mail-Adresse
Verwenden Sie CollectBankAccountConfiguration.
, um die Parameter zu erstellen, die für den Aufruf von presentWithSetupIntent
erforderlich sind.
Initialisieren Sie eine CollectBankAccountLauncher-Instanz innerhalb von OnCreate Ihrer Checkout-Aktivität und übergeben Sie eine Methode zur Verarbeitung des Ergebnisses. Rufen Sie dann presentWithSetupIntent
auf, um Bankkontodaten zu erfassen, eine PaymentMethod zu erstellen und diese PaymentMethod an den SetupIntent anzuhängen.
Dadurch wird eine Modal-Nutzeroberfläche geladen, um die Erfassung und Überprüfung der Bankkontodaten abzuwickeln. Wenn dies abgeschlossen ist, wird die PaymentMethod automatisch an den SetupIntent angehängt.
Mandatsbestätigung einziehen und übermittelnClientseitig
Bevor Sie den SetupIntent abschließen und die Zahlungsmethodendetails für den/die Kund/in speichern können, müssen Sie eine Zahlungsautorisierung einholen, indem Sie Mandatsbedingungen anzeigen, denen er/sie zustimmen muss.
Um die Nacha-Regeln einzuhalten, müssen Sie eine Autorisierung von Ihrem Kunden/Ihrer Kundin einholen, bevor Sie die Zahlung veranlassen können. Dies erfolgt durch Anzeigen von Mandatsbedingungen, denen der Kunde/die Kundin zustimmen muss. Weitere Informationen finden Sie unter Mandate.
Wenn der/die Kund/in den Mandatsbedingungen zustimmt, müssen Sie den Setup bestätigen. Verwenden Sie confirm
, um die Zahlung abzuschließen, wenn der/die Kund/in das Formular einreicht.
Notiz
Die Ausführung von confirm
kann einige Sekunden dauern. Während dieser Zeit sollten Sie Ihr Formular deaktivieren, damit keine erneute Übermittlung erfolgen kann. Lassen Sie stattdessen ein Wartesymbol einblenden, wie beispielsweise eine Sanduhr. Tritt ein Fehler auf, lassen Sie eine Fehlermeldung für den/die Kund/in anzeigen, aktivieren Sie das Formular erneut und blenden Sie das Wartesymbol aus.
Bei erfolgreicher Ausführung gibt Stripe ein SetupIntent-Objekt mit einem der folgenden möglichen Status zurück:
Status | Beschreibung | Nächste Schritte |
---|---|---|
succeeded | Das Bankkonto wurde sofort verifiziert, oder eine Verifizierung war nicht notwendig. | Keine Aktion erforderlich |
requires_ | Weitere Schritte erforderlich, um die Bankkontoverifizierung abzuschließen. | Schritt 6: Bankkonten mit Testeinzahlungen verifizieren |
Nach erfolgreicher Bestätigung des Setup muss eine Bestätigung des Mandats und der erfassten Bankkontodaten per E-Mail an Ihre Kundinnen/Kunden gesendet werden. Stripe kümmert sich standardmäßig darum, aber Sie können auch nutzerdefinierte Benachrichtigungen senden, wenn Sie dies vorziehen.
Bankkonto mit Testeinzahlungen verifizierenClientseitig
Nicht alle Kund/innen können das Bankkonto sofort verifizieren. Dieser Schritt wird nur ausgeführt, wenn Ihr/e Kund/in die Sofortverifizierung im vorherigen Schritt deaktiviert hat.
In diesen Fällen sendet Stripe eine descriptor_
-Testeinzahlung und greift möglicherweise auf eine amount
-Testeinzahlung zurück, falls weitere Probleme bei der Verifizierung des Bankkontos auftreten. Es dauert 1–2 Werktage, bis diese Einzahlungen auf der Online-Abrechnung des/der Kund/in angezeigt werden.
- Code der Zahlungsbeschreibung: Stripe sendet eine einzelne Testeinzahlung über 0,01 USD an das Bankkonto des/der Kund/in mit einem einmaligen, 6-stelligen
descriptor_
, der mit SM beginnt. Ihr/e Kund/in verwendet diese Zeichenfolge, um sein/ihr Bankkonto zu verifizieren.code - Betrag: Stripe sendet zwei nicht eindeutige Testeinzahlungen an das Kundenbankkonto, wobei
ACCTVERIFY
als Zahlungsbeschreibung in der Abrechnung angegeben ist. Ihre Kundin/Ihr Kunde verwendet die Einzahlungsbeträge zur Verifizierung des Bankkontos.
Das Ergebnis des Aufrufs der Methode confirmSetupIntent
im vorhergehenden Schritt ist ein SetupIntent mit dem Status requires_
. Der SetupIntent enthält ein next_action-Feld, das einige nützliche Informationen zum Abschließen der Verifizierung enthält.
Wenn Sie eine E-Mail-Adresse für die Rechnungsstellung angegeben haben, benachrichtigt Stripe Ihre Kundinnen und Kunden über diese E-Mail-Adresse, wann die Einzahlungen voraussichtlich eingehen werden. Die E-Mail enthält einen Link zu einer von Stripe gehosteten Verifizierungsseite, auf der sie die Beträge der Einzahlungen bestätigen und die Verifizierung abschließen können.
Achtung
Verifizierungsversuche dürfen für beschreibungsbasierte Testeinzahlungen bis zu 10 mal und für betragsbasierte bis zu 3 mal fehlschlagen. Wenn Sie dieses Limit überschreiten, können wir das Bankkonto nicht mehr verifizieren. Darüber hinaus gilt für Verifizierungen von Testeinzahlungen eine Zeitüberschreitung von 10 Tagen. Werden Testeinzahlungen nicht innerhalb dieser Zeit verifiziert, fordert der PaymentIntent wieder neue Angaben zur Zahlungsmethode an. Wenn Sie Ihren Kund/innen genau erläutern, was Testeinzahlungen sind und wie sie verwendet werden, können Sie Probleme bei der Verifizierung vermeiden.
Optional: Nutzerdefinierte E-Mail-Benachrichtigungen senden
Sie können auch personalisierte E-Mail-Benachrichtigungen an Ihren Kunden/Ihre Kundin senden. Nachdem Sie die nutzerspezifischen E-Mails eingerichtet haben, müssen Sie angeben, wie der Kunde/die Kundin auf die Verifizierungs-E-Mail antwortet. Wählen Sie dazu eine der folgenden Optionen aus:
Verwenden Sie die von Stripe gehostete Verifizierungsseite. Verwenden Sie dazu die URL
verify_
im next_action-Objekt, um Ihre Kundinnen/Kunden zum Abschluss des Verifizierungsvorgangs zu leiten.with_ microdeposits[hosted_ verification_ url] Wenn die von Stripe gehostete Verifizierungsseite nicht verwenden möchten, können Sie in Ihrer App ein Formular für Ihre Kund/innen zur Weiterleitung von Mikroeinzahlungen an Sie erstellen und das Bankkonto mit dem Android SDK verifizieren.
- Richten Sie das Formular mindestens so ein, dass es den Parameter
descriptor code
verarbeitet, bei dem es sich um eine 6-stellige Zeichenfolge zu Verifizierungszwecken handelt. - Stripe empfiehlt außerdem, dass Sie Ihr Formular so konfigurieren, dass der Parameter
amounts
verarbeitet wird, da einige der von Ihren Kund/innen verwenden Banken dies möglicherweise verlangen.
Integrationen übergeben nur den
descriptor_
odercode amounts
. Um festzustellen, welchen Parameter Ihre Integration verwendet, prüfen Sie den Wert fürverify_
imwith_ microdeposits[microdeposit_ type] next_
-Objekt.action - Richten Sie das Formular mindestens so ein, dass es den Parameter
Wenn das Bankkonto erfolgreich verifiziert wurde, gibt Stripe das SetupIntent-Objekt mit dem status
succeeded
zurück.
Die Verifizierung kann aus unterschiedlichen Gründen fehlschlagen. Der Fehler tritt synchron als direkte Fehlermeldung auf.
{ "error": { "code": "payment_method_microdeposit_verification_amounts_mismatch", "message": "The amounts provided do not match the amounts that were sent to the bank account. You have {attempts_remaining} verification attempts remaining.", "type": "invalid_request_error" } }
Fehlercode | Nachricht | Änderung des Status |
---|---|---|
payment_ | Die Testeinzahlungen sind fehlgeschlagen. Bitte überprüfen Sie die Kontonummer, die Finanzinstitutsnummer und die bereitgestellte Transitnummer. | status ist requires_ , und last_ ist festgelegt. |
payment_ | Die angegebenen Beträge stimmen nicht mit den Beträgen überein, die auf das Bankkonto eingezahlt wurden. Sie haben noch {attempts_remaining} Verifizierungsversuche. | Unverändert |
payment_ | Anzahl zulässiger Verifizierungsversuche wurde überschritten | status ist requires_ , und last_ ist festgelegt. |
Integration testen
Erfahren Sie, wie Sie Szenarien mit sofortigen Verifizierungen mithilfe von Financial Connections testen können.
Transaktions-E-Mails in einer Sandbox senden
Nachdem Sie die Bankkontodetails erfasst und ein Mandat akzeptiert haben, senden Sie die Mandatsbestätigung und die Verifizierungs-E-Mails mit Testeinzahlungen in einer Sandbox.
If your domain is {domain} and your username is {username}, use the the following email format to send test transaction emails: {username}+test_email@{domain}.
For example, if your domain is example.com and your username is info, use the format info+test_email@example.com for testing ACH Direct Debit payments. This format ensures that emails route correctly. If you don’t include the +test_email suffix, we won’t send the email.
Häufiger Fehler
Sie müssen Ihr Stripe-Konto aktivieren, bevor Sie diese E-Mails beim Testen auslösen können.
Testkontonummern
Stripe stellt mehrere Testkontonummern und dazugehörige Token zur Verfügung, um sicherzustellen, dass Ihre Integration für Bankkonten mit manueller Eingabe für den Einsatz in einer Produktionsumgebung bereit ist.
Kontonummer | Token | Bankleitzahl | Verhalten |
---|---|---|---|
000123456789 | pm_ | 110000000 | Die Zahlung ist erfolgreich. |
000111111113 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil das Konto geschlossen ist. |
000000004954 | pm_ | 110000000 | Die Zahlung wird von Radar aufgrund eines hohen Betrugsrisikos blockiert. |
000111111116 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil kein Konto gefunden wird. |
000222222227 | pm_ | 110000000 | Die Zahlung schlägt aufgrund unzureichender Deckung fehl. |
000333333335 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil die Lastschriften nicht autorisiert sind. |
000444444440 | pm_ | 110000000 | Die Zahlung schlägt aufgrund einer ungültigen Währung fehl. |
000666666661 | pm_ | 110000000 | Die Zahlung sendet keine Testeinzahlungen. |
000555555559 | pm_ | 110000000 | Die Zahlung löst eine Zahlungsanfechtung aus. |
000000000009 | pm_ | 110000000 | Die Zahlung bleibt auf unbestimmte Zeit in Bearbeitung. Dies ist hilfreich beim Testen von PaymentIntent-Stornierungen. |
000777777771 | pm_ | 110000000 | Die Zahlung schlägt aufgrund des Zahlungsbetrags fehl, wodurch das Konto sein wöchentliches Zahlungsvolumenlimit überschreitet. |
Bevor Testtransaktionen abgeschlossen werden können, müssen Sie alle Testkonten verifizieren, auf denen die Zahlung automatisch erfolgreich war oder fehlschlagen ist. Verwenden Sie dazu die nachstehenden Test-Mikroeinzahlungsbeträge oder Beschreibungscodes.
Testen von Mikroeinzahlungen und Beschreibungscodes
Um verschiedene Szenarien zu imitieren, verwenden Sie diese Mikroeinzahlungsbeträge oder 0,01 Beschreibungscodewerte.
Testeinzahlungswerte | 0.01 Beschreibungscodewerte | Szenario |
---|---|---|
32 und 45 | SM11AA | Simuliert die Verifizierung des Kontos. |
10 und 11 | SM33CC | Simuliert das Überschreiten der Anzahl zulässiger Verifizierungsversuche. |
40 und 41 | SM44DD | Simuliert ein Testeinzahlungs-Timeout. |
Abwicklungsverhalten testen
Testtransaktionen werden sofort abgewickelt und Ihrem verfügbaren Testguthaben hinzugefügt. Dieses Verhalten unterscheidet sich vom Live-Modus, bei dem es mehrere Tage dauern kann, bis Transaktionen Ihrem verfügbaren Guthaben gutgeschrieben werden.
Künftige Zahlungen annehmenServerseitig
Ist der SetupIntent erfolgreich, wird eine neue PaymentMethod erstellt, die an ein Kundenobjekt angehängt ist. Damit können künftige Zahlungen eingeleitet werden, ohne dass der Kunde/die Kundin das Bankkonto erneut angeben muss.