Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Finanzautomatisierung
Plattformen und Marktplätze
Geldmanagement
Entwickler-Tools
Jetzt starten
Zahlungen
Finanzautomatisierung
Jetzt starten
Zahlungen
Finanzautomatisierung
Plattformen und Marktplätze
Geldmanagement
Übersicht
Informationen zu Stripe Payments
Aktualisieren Sie Ihre Integration
Zahlungsanalysefunktionen
Online-Zahlungen
ÜbersichtIhren Use case findenZahlungen verwalten
Payment Links verwenden
Bezahlseite erstellen
Erweiterte Integration erstellen
In-App-Integration erstellen
Zahlungsmethoden
Zahlungsmethoden hinzufügen
    Übersicht
    Optionen für die Integration von Zahlungsmethoden
    Standardzahlungsmethoden im Dashboard verwalten
    Arten von Zahlungsmethoden
    Karten
    Lastschriften
      ACH Direct Debit
      BACS-Lastschriftverfahren
      Vorab autorisierte Lastschriften in Kanada
        Zahlung annehmen
        Bankverbindung speichern
        Benutzerdefinierte Mandatsvereinbarungen
      BECS-Lastschriftverfahren (Australien)
      BECS-Lastschriftverfahren in Neuseeland
      SEPA-Lastschrift
    Bank Redirect
    Banküberweisungen
    Überweisungen (Sources)
    Jetzt kaufen, später bezahlen
    Zahlungen in Echtzeit
    Gutscheine
    Geldbörsen
    Lokale Zahlungsmethoden nach Land aktivieren
    Nutzerdefinierte Zahlungsmethoden
Zahlungsmethoden verwalten
Schnellerer Bezahlvorgang mit Link
Zahlungsschnittstellen
Payment Links
Checkout
Web Elements
In-App-Elements
Zahlungsszenarien
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Präsenzzahlungen
Terminal
Andere Stripe-Produkte
Financial Connections
Krypto
Climate
StartseiteZahlungenAdd payment methodsBank debitsPre-authorized debit in Canada

Angaben zur Zahlungsmethode für künftige Zahlungen per vorab autorisierter Abbuchung in Kanada speichern

Speichern Sie die Angaben zur Zahlungsmethode für zukünftige Zahlungen per vorab autorisierter Abbuchung in Kanada.

Seite kopieren

Sie können die Setup Intents API verwenden, um Details zur 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 Geldbörse, um künftige Käufe zu optimieren
  • Einziehen von Zuschlägen nach Erbringung einer Dienstleistung
  • Neue Testversion eines Abonnements starten

Die meisten Bankkonten in Kanada werden in kanadischen Dollar (CAD) geführt, während nur sehr wenige andere Währungen wie den US-Dollar (USD) unterstützen. PAD-Zahlungen können sowohl in CAD als auch in USD angenommen werden, wobei es zur Vermeidung von Zahlungsfehlschlägen wichtig ist, die korrekte Währung für Ihre Kund/innen zu wählen.

Im Gegensatz zu den meisten kartenbasierten Zahlungsmethoden können Sie ein CAD-Konto ggf. nicht erfolgreich in USD belasten und umgekehrt ein USD-Konto nicht in CAD belasten. In den meisten Fällen kommt es bei einem solchen Versuch noch nach bis zu fünf Werktagen zu einem verzögerten Fehlschlagen der Zahlung.

Um das zu vermeiden, sollten Sie PAD-Zahlungen möglichst in CAD einrichten, sei denn, Sie sind sicher, dass das Kundenkonto Lastschriften in USD akzeptiert.

Stripe einrichten
Serverseitig

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:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Kund/innen erstellen oder abrufen
Serverseitig

Um ein Bankkonto für zukünftige Zahlungen zu verwenden, muss es 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.

Legen Sie neue Kund/innen an oder rufen Sie bestehende Kund/innen ab, um sie mit diesen Kartendaten zu verknüpfen. Fügen Sie den folgenden Code auf Ihrem Server ein, um neue Kund/innen zu erstellen.

Command Line
cURL
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

SetupIntent erstellen
Serverseitig

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.

Um vorab autorisierte Lastschriftzahlungen in Kanada verwenden zu können, müssen Sie mithilfe einer vorab autorisierten Lastschriftvereinbarung (siehe PAD-Mandate) die Zustimmung Ihrer Kundin/Ihres Kunden für einmalige und wiederkehrende Lastschriften einholen. Das Mandate-Objekt zeichnet diese Vereinbarung und Autorisierung auf.

Erstellen Sie einen SetupIntent auf Ihrem Server. Setzen Sie dabei payment_method_types auf acss_debit und geben Sie die id der Kundin/des Kunden an. Um einen Zahlungsplan im Mandat für diesen SetupIntent zu definieren, fügen Sie noch die folgenden Parameter hinzu:

ParameterWertErforderlich?
payment_method_options[acss_debit][currency]Währung, die mit dieser Zahlungsmethode für zukünftige Zahlungen verwendet werden soll. Muss mit der Währung des Bankkontos der Kundin/des Kunden übereinstimmen. Akzeptierte Werte sind cad or usd.Ja
payment_method_options[acss_debit][mandate_options][payment_schedule]Der Zahlungsplan des Mandats. Folgende Werte werden unterstützt: interval, sporadic oder combined. In der Übersicht PAD-Mandate können Sie die passende Intervallbeschreibung für Ihr Unternehmen wählen.Ja
payment_method_options[acss_debit][mandate_options][interval_description]Textbeschreibung des Zahlungsplanintervalls. In der Übersicht PAD-Mandate können Sie die passende Intervallbeschreibung für Ihr Unternehmen erstellen.Wenn payment_schedule als interval oder combined festgelegt ist
payment_method_options[acss_debit][mandate_options][transaction_type]Die Art des zu erstellenden Mandats, entweder personal (wenn es sich bei der Kundin/dem Kunden um eine Einzelperson handelt) oder business (wenn es sich um ein Unternehmen handelt).Ja
Command Line
cURL
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "payment_method_types[]"=acss_debit \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_options[acss_debit][currency]"=cad \ -d "payment_method_options[acss_debit][mandate_options][payment_schedule]"=interval \ -d "payment_method_options[acss_debit][mandate_options][interval_description]"="First day of every month" \ -d "payment_method_options[acss_debit][mandate_options][transaction_type]"=personal

Client-Geheimnis abrufen

Im SetupIntent ist ein Client-Geheimnis enthalten, das auf dem Client verwendet wird, um Zahlungen sicher abzuschließen. Es gibt verschiedene Verfahren zum Übergeben des Client-Geheimnisses an den Client.

Rufen Sie das Client-Geheimnis von einem Endpoint auf Ihrem Server ab, indem Sie die Browser-Funktion fetch verwenden. Diese Vorgehensweise funktioniert am besten, wenn es sich bei Ihrer Client-Seite um eine einseitige Anwendung handelt, insbesondere wenn sie mit einem modernen Frontend-Framework wie React erstellt wurde. Erstellen Sie den Server-Endpoint, der das Client-Geheimnis bereitstellt:

main.rb
Ruby
get '/secret' do intent = # ... Create or retrieve the SetupIntent {client_secret: intent.client_secret}.to_json end

Und dann rufen Sie das Client-Geheimnis mit JavaScript auf der Client-Seite ab:

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

Angaben zur Zahlungsmethode und Mandatsbestätigung erfassen
Clientseitig

Wenn Kundinnen/Kunden über das „Click to Pay“-Verfahren mit Canadian pre-authorized debit zahlen, empfehlen wir Ihnen, Stripe.js zu verwenden, um die Zahlung an Stripe zu übermitteln. Stripe.js ist unsere grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Sie übernimmt automatisch komplexe Integrationsaufgaben und ermöglicht es Ihnen, Ihre Integration in Zukunft unkompliziert um andere Zahlungsmethoden zu erweitern.

Binden Sie das Stripe.js-Skript in Ihre Zahlungsseite ein, indem Sie es im head Ihrer HTML-Datei einfügen.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>

Erstellen Sie auf Ihrer Bezahlseite eine Instanz von Stripe.js mit dem folgenden JavaScript.

client.js
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Anstatt das gesamte PaymentIntent-Objekt an den Client zu übermitteln, verwenden Sie dessen Client-Geheimnis aus dem vorherigen Schritt. Dieses unterscheidet sich von Ihren API-Schlüsseln, mit denen Anfragen der Stripe API authentifiziert werden.

Achten Sie aber auf einen vorsichtigen Umgang mit dem Client-Geheimnis, da mit ihm die Zahlung abgeschlossen werden kann. Es darf nicht protokolliert, in URLs eingebettet oder Personen außer den Kund/innen selbst zugänglich gemacht werden.

Verwenden Sie stripe.confirmAcssDebitSetup, um Bankkontodaten und Verifizierungen zu erfassen, das Mandat zu bestätigen und die Einrichtung abzuschließen, wenn der/die Nutzer/in das Formular übermittelt. Die Angabe der E-Mail-Adresse der Kundinnen/Kunden und des Namens der Kontoinhaber/innen in der Eigenschaft billing_details des Parameters payment_method ist erforderlich, um eine Zahlungsmethode für vorab autorisierte Lastschriften (PAD) zu erstellen.

const form = document.getElementById('payment-form'); const accountholderName = document.getElementById('accountholder-name'); const email = document.getElementById('email'); const submitButton = document.getElementById('submit-button'); const clientSecret = submitButton.dataset.secret; form.addEventListener('submit', async (event) => { event.preventDefault(); const {setupIntent, error} = await stripe.confirmAcssDebitSetup( clientSecret, { payment_method: { billing_details: { name: accountholderName.value, email: email.value, }, }, } ); if (error) { // Inform the customer that there was an error. console.log(error.message); } else { // Handle next step based on SetupIntent's status. console.log("SetupIntent ID: " + setupIntent.id); console.log("SetupIntent status: " + setupIntent.status); } });

Stripe.js lädt anschließend eine modale On-Page-Nutzeroberfläche, um die Erfassung und Überprüfung der Bankkontodaten abzuwickeln, eine gehostete Mandatsvereinbarung anzuzeigen und die Autorisierung einzuholen.

Notiz

Die Ausführung von stripe.confirmAcssDebitSetup 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 die Kundin/den Kunden 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:

StatusBeschreibungNächster Schritt
succeededDas Bankkonto wurde sofort verifiziert oder eine Verifizierung war nicht notwendig.Keine weiteren Schritte erforderlich
requires_actionWeitere Schritte erforderlich, um die Bankkontoverifizierung abzuschließen.Schritt 5: Bankkonten mit Testeinzahlungen verifizieren

Nach erfolgreicher Bestätigung des SetupIntent muss eine Bestätigung des Mandats und der erfassten Bankkontodaten per E-Mail an Ihre Kundinnen/Kunden gesendet werden. Standardmäßig übernimmt Stripe diesen Schritt, allerdings können Sie bei Bedarf auch nutzerdefinierte Benachrichtigungen versenden.

Notiz

Beim Testen der Integration werden keine E-Mails zur Mandatsbestätigung an die E-Mail-Adresse der Kund/innen gesendet.

Wenn Kund/innen das Modal schließen, ohne den Verifizierungsablauf abzuschließen, gibt Stripe.js den folgenden Fehler zurück:

{ "error": { "type": "validation_error", "code": "incomplete_payment_details", "message": "Please provide complete payment details." } }

Bankkonten mit Testeinzahlungen verifizieren
Clientseitig

Nicht alle Kund/innen können das Bankkonto sofort verifizieren. Dieser Schritt wird nur ausgeführt, wenn Ihre Kundin/Ihr Kunde die Sofortverifizierung im vorherigen Schritt deaktiviert hat.

In this case, Stripe automatically sends two micro-deposits to the customer’s bank account. These deposits take 1–2 business days to appear on the customer’s online statement and have statement descriptors that include ACCTVERIFY.

Das Ergebnis des Aufrufs der Methode stripe.confirmAcssDebitSetup ist ein SetupIntent mit dem Status requires_action. Der SetupIntent enthält das Feld next_action, das einige nützliche Informationen zum Abschließen der Verifizierung enthält.

Stripe benachrichtigt Ihre Kundinnen/Kunden über die E-Mail-Adresse für die Rechnungsstellung, 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.

Es besteht eine Grenze von drei fehlgeschlagenen Verifizierungsversuchen. Wenn diese Grenze überschritten wird, kann das Bankkonto nicht mehr verifiziert werden. Zusätzlich gibt es für Verifizierungen von Testeinzahlungen eine Frist von 10 Tagen. Werden Testeinzahlungen nicht innerhalb dieser Zeit verifiziert, fordert die 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-Mails und Verifizierungsseite

Wenn Sie nutzerdefinierte Benachrichtigungen versenden möchten, müssen Sie stattdessen E-Mails an Ihre Kundinnen/Kunden senden. Dafür können Sie die URL verify_with_microdeposits[hosted_verification_url] im Objekt next_action verwenden, um Ihre Kundinnen/Kunden aufzufordern, den Verifizierungsvorgang abzuschließen.

Wenn Sie nutzerdefinierte E-Mails versenden und nicht die von Stripe gehostete Verifizierungsseite verwenden möchten, können Sie auf Ihrer Website ein Formular für Ihre Kundinnen/Kunden zur Weiterleitung dieser Beträge an Sie erstellen und das Bankkonto mit Stripe.js verifizieren.

stripe.verifyMicrodepositsForSetup(clientSecret, { amounts: [32, 45], });

Wenn das Bankkonto erfolgreich verifiziert wurde, gibt Stripe das SetupIntent-Objekt mit dem status succeeded zurück und übermittelt das Webhook-Ereignis setup_intent.succeeded.

Die Verifizierung kann aus unterschiedlichen Gründen fehlschlagen. Der Fehler kann synchron als direkte Fehlermeldung oder asynchron über das Webhook-Ereignis setup_intent.payment_failed auftreten (wie in den folgenden Beispielen dargestellt).

{ "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" } }
FehlercodeSynchron oder asynchronMeldungenÄnderung des Status
payment_method_microdeposit_failedSynchron oder asynchron über ein Webhook-EreignisDie Testeinzahlungen sind fehlgeschlagen. Bitte überprüfen Sie die Kontonummer, die Finanzinstitutsnummer und die bereitgestellte Transitnummer.status ist requires_payment_method und last_setup_error ist festgelegt.
payment_method_microdeposit_verification_amounts_mismatchSynchronDie 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_method_microdeposit_verification_attempts_exceededSynchron und asynchron über ein Webhook-EreignisAnzahl zulässiger Verifizierungsversuche wurde überschrittenstatus ist requires_payment_method und last_setup_error ist festgelegt.
payment_method_microdeposit_verification_timeoutAsynchron über ein Webhook-EreignisZeitüberschreitung bei der Testeinzahlung. Die Kundin/der Kunde hat das Bankkonto nicht innerhalb der Frist von 10 Tagen verifiziert.status ist requires_payment_method und last_setup_error ist festgelegt.

Integration testen

E-Mail zur Verifizierung der Testeinzahlung erhalten

To receive the micro-deposit verification email in a sandbox after collecting the bank account details and accepting a mandate, provide an email in the payment_method[billing_details][email] field in the form of {any_prefix}+test_email@{any_domain} when confirming the payment method details.

Testkontonummern

Stripe stellt mehrere Testnummern zur Verfügung, um sicherzustellen, dass Ihre Integration für manuell eingegebene Bankkontodaten produktionsbereit ist. Alle Testkonten, die eine Zahlung automatisch ausführen oder fehlschlagen lassen, müssen vor dem Zahlungsabschluss anhand der unten aufgeführten Testeinzahlungen überprüft werden.

InstitutsnummerTransitnummerKontonummerSzenario
00011000000123456789Die Zahlung ist sofort nach Prüfung der Testeinzahlungen erfolgreich.
00011000900123456789Die Zahlung ist mit einer Verzögerung von drei Minuten nach Prüfung der Testeinzahlungen erfolgreich.
00011000000222222227Die Zahlung schlägt sofort nach Prüfung der Testeinzahlungen fehl.
00011000900222222227Die Zahlung schlägt mit einer Verzögerung von drei Minuten nach Prüfung der Testeinzahlungen fehl.
00011000000666666661Die Testeinzahlungen zur Verifizierung schlagen fehl.
00011000000777777771Fails the payment due to the payment amount causing the account to exceed its weekly payment volume limit.
00011000000888888881Fails the payment due to the payment amount exceeding the account’s transaction limit.

To mimic successful or failed bank account verifications in a sandbox, use these meaningful amounts for micro-deposits:

Werte für TesteinzahlungenSzenario
32 und 45Die Verifizierung des Kontos ist erfolgreich.
10 und 11Simuliert das Überschreiten der Anzahl zulässiger Verifizierungsversuche.
Jede andere ZahlenkombinationDie Verifizierung des Kontos schlägt fehl.

OptionalKünftige Zahlungen annehmen
Serverseitig

OptionalNur Sofortverifizierung
Serverseitig

OptionalVerifizierung nur per Testeinzahlung
Serverseitig

Siehe auch

  • Zahlungen per vorab autorisierter Abbuchung in Kanada annehmen
War diese Seite hilfreich?
JaNein
Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
Nehmen Sie an unserem Programm für frühzeitigen Zugriff teil.
Schauen Sie sich unser Änderungsprotokoll an.
Fragen? Sales-Team kontaktieren.
LLM? Lesen Sie llms.txt.
Unterstützt von Markdoc