Ein Abonnement per ACH Direct Debit einrichten
Erfahren Sie, wie Sie ein Abonnement mit US-Bankkonto erstellen und abrechnen.
Verwenden Sie diesen Leitfaden, um ein Abonnement mit ACH-Lastschriftverfahren einzurichten.
Notiz
Wenn Sie ein neuer Nutzer/eine neue Nutzerin sind, verwenden Sie das Payment Element, statt wie in diesem Leitfaden beschrieben Stripe Elements zu nutzen. Das Payment Element bietet einen Low-Code-Integrationspfad mit integrierten Konversionsoptimierungen. Eine Anleitung finden Sie unter Abonnement zusammenstellen.
Produkt und Preis erstellenDashboard
Produkte stehen für den von Ihnen angebotenen Artikel oder Dienst. Preise geben an, wie viel und wie häufig Sie für ein Produkt berechnen. Dies schließt ein, wie viel ein Produkt kostet, welche Währung Sie akzeptieren und ob es sich um eine einmalige oder eine wiederkehrende Zahlung handelt. Wenn Sie nur ein paar wenige Produkte und Preise haben, können Sie diese im Dashboard erstellen und verwalten.
In diesem Leitfaden wird ein Stock-Foto-Service als Beispiel verwendet, für den Kund/innen ein monatliches Abonnement mit dem Betrag von 15 USD berechnet werden. Um dies zu modellieren:
- Navigieren Sie zur Seite Produkt hinzufügen.
- Geben Sie einen Namen für das Produkt an.
- Geben Sie 15 für den Preis ein.
- Wählen Sie als Währung USD aus.
- Klicken Sie auf Produkt speichern.
Zeichnen Sie nach Erstellen des Produkts und des Preises die Preis-ID auf, sodass Sie diese in nachfolgenden Schritten verwenden können. Die ID wird auf der Preisseite angezeigt und sieht in etwa so aus: price_
.
Abonnement erstellenServerseitig
Notiz
Informationen dazu, wie Sie ein Abonnement mit einer kostenlosen Testphase erstellen, finden Sie unter Abonnement-Testphasen.
Erstellen Sie ein Abonnement mit dem Preis und dem Kunden/der Kundin mit dem Status incomplete
, indem Sie den Parameter payment_behavior mit dem Wert default_
angeben.
Die Antwort umfasst den ersten PaymentIntent des Abonnements, der das Client-Geheimnis enthält. Dieses verwenden Sie auf der Client-Seite, um den Bezahlvorgang sicher durchzuführen, statt das gesamte PaymentIntent-Objekt zu übergeben. Um die Zahlung abzuschließen, geben Sie das client_
an das Frontend zurück.
Angaben zur Zahlungsmethode erfassenClientseitig
Wenn Kundinnen/Kunden über das „Click to Pay“-Verfahren mit ACH Direct 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.
<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.
// 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.
Gehen Sie vorsichtig mit dem Client-Geheimnis um, da es die Zahlung abschließen kann. Protokollieren Sie es nicht, betten Sie es nicht in URLs ein und machen Sie es nur dem Kunden/der Kundin zugänglich.
Verwenden Sie stripe.collectBankAccountForPayment , um Bankkontodaten mit Financial Connections zu erfassen, eine PaymentMethod zu erstellen und diese PaymentMethod an den PaymentIntent anzuhängen. Der Parameter billing_
muss den Namen des Kontoinhabers/der Kontoinhaberin enthalten, um eine PaymentMethod für ein ACH-Lastschriftkonto zu erstellen.
// Use the form that already exists on the web page. const paymentMethodForm = document.getElementById('payment-method-form'); const confirmationForm = document.getElementById('confirmation-form'); paymentMethodForm.addEventListener('submit', (ev) => { ev.preventDefault(); const accountHolderNameField = document.getElementById('account-holder-name-field'); const emailField = document.getElementById('email-field'); // Calling this method will open the instant verification dialog. stripe.collectBankAccountForPayment({ clientSecret: clientSecret, params: { payment_method_type: 'us_bank_account', payment_method_data: { billing_details: { name: accountHolderNameField.value, email: emailField.value, }, }, }, expand: ['payment_method'], }) .then(({paymentIntent, error}) => { if (error) { console.error(error.message); // PaymentMethod collection failed for some reason. } else if (paymentIntent.status === 'requires_payment_method') { // Customer canceled the hosted verification modal. Present them with other // payment method type options. } else if (paymentIntent.status === 'requires_confirmation') { // We collected an account - possibly instantly verified, but possibly // manually-entered. Display payment method details and mandate text // to the customer and confirm the intent once they accept // the mandate. confirmationForm.show(); } }); });
Der Stripe Financial Connections-Authentifizierungsvogang verarbeitet die Erfassung und Überprüfung von Bankkontodaten automatisch. Wenn Ihr Kunde/Ihre Kundin den Authentifizierungsvorgang abschließt, wird die PaymentMethod automatisch an den PaymentIntent angehängt und ein Financial Connections Account wird erstellt.
Häufiger Fehler
Bankkonten, die Ihre Kundinnen/Kunden durch manuelle Eingabe und Testeinzahlungen verknüpfen, haben keinen Zugriff auf zusätzliche Bankkontodaten wie Salden, Kontoinhaberschaft und Transaktionen.
Um die beste Nutzererfahrung auf allen Geräten zu bieten, setzen Sie die minimum-scale
des Darstellungsfelds für Ihre Seite mithilfe des meta
-Tags des Darstellungsfelds auf 1.
<meta name="viewport" content="width=device-width, minimum-scale=1" />
Mandatsbestätigung einziehen und übermittelnClientseitig
Bevor Sie die Zahlung veranlassen können, müssen Sie eine Zahlungsautorisierung von Ihrem/Ihrer Kund/in einholen, indem Sie Mandatsbedingungen anzeigen, denen er/sie zustimmen muss.
To be compliant with Nacha rules, you must obtain authorization from your customer before you can initiate payment by displaying mandate terms for them to accept. For more information on mandates, see Mandates.
Wenn der Kunde/die Kundin den Mandatskonditionen zustimmt, müssen Sie den PaymentIntent bestätigen. Verwenden Sie stripe.confirmUsBankAccountPayment, um die Zahlung abzuschließen, wenn der Kunde/die Kundin das Formular absendet.
confirmationForm.addEventListener('submit', (ev) => { ev.preventDefault(); stripe.confirmUsBankAccountPayment(clientSecret) .then(({paymentIntent, error}) => { if (error) { console.error(error.message); // The payment failed for some reason. } else if (paymentIntent.status === "requires_payment_method") { // Confirmation failed. Attempt again with a different payment method. } else if (paymentIntent.status === "processing") { // Confirmation succeeded! The account will be debited. // Display a message to customer. } else if (paymentIntent.next_action?.type === "verify_with_microdeposits") { // The account needs to be verified via microdeposits. // Display a message to consumer with next steps (consumer waits for // microdeposits, then enters a statement descriptor code on a page sent to them via email). } }); });
Notiz
Die Ausführung von stripe.confirmUsBankAccountPayment 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.
Wenn der/die Kund/in die Sofortüberprüfung abschließt, wird das Abonnement automatisch active
. Lesen Sie andernfalls Bankkonto mit Testeinzahlungen verifizieren, um zu erfahren, wie die Verifizierung von Testeinzahlungen abgewickelt wird, während das Abonnement incomplete
bleibt.
Bankkonto mit Testeinzahlungen verifizierenClientseitig
Notiz
Kundinnen/Kunden haben 10 Tage Zeit, um Testeinzahlungen für Abonnement ein erfolgreich zu verifizieren, statt der normalerweise im Lebenszylus eines Abonnements angegebenen 23 Stunden. Diese Ablauffrist kann jedoch nicht nach dem Datum des Abrechnungszyklus liegen.
Not all customers can verify the bank account instantly. This step only applies if your customer has elected to opt out of the instant verification flow in the previous step.
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 Kunden/der Kundin erscheinen
- Code der Zahlungsbeschreibung. Stripe sendet eine einzelne Mikroeinzahlung ü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 stripe.confirmUsBankAccountPayment im vorhergehenden Schritt ist ein PaymentIntent mit dem Status requires_
. Der PaymentIntent enthält das Feld next_
, das einige nützliche Informationen zum Abschließen der Verifizierung enthält.
next_action: { type: "verify_with_microdeposits", verify_with_microdeposits: { arrival_date: 1647586800, hosted_verification_url: "https://payments.stripe.com/…", microdeposit_type: "descriptor_code" } }
Wenn Sie eine E-Mail-Adresse für die Rechnungsstellung angegeben haben, benachrichtigt Stripe Ihre Kundinnen/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-Mails-Benachrichtigungen senden
Optionally, you can send custom email notifications to your customer. After you set up custom emails, you need to specify how the customer responds to the verification email. To do so, choose one of the following:
Use the Stripe-hosted verification page. To do this, use the
verify_
URL in the next_action object to direct your customer to complete the verification process.with_ microdeposits[hosted_ verification_ url] Wenn Sie die von Stripe gehostete Verifizierungsseite nicht verwenden möchten, können Sie auf Ihrer Website ein Formular für Ihre Kundinnen/Kunden zur Weiterleitung von Testeinzahlungen an Sie erstellen und das Bankkonto mit Stripe.js 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 einstellen, dass der Parameter
amounts
verarbeitet wird, da einige der von Ihren Kund/innen verwenden Banken dies möglicherweise erfordern.
Integrationen übergeben nur den
descriptor_
odercode amounts
. Um festzustellen, welches 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
stripe.verifyMicrodepositsForPayment(clientSecret, { // Provide either a descriptor_code OR amounts, not both descriptor_code: 'SMT86W', amounts: [32, 45], });
Standard-Zahlungsmethode festlegenServer
Sie haben jetzt ein aktives Abonnement eines/einer Kund/in mit einer Zahlungsmethode. Diese Zahlungsmethode wird jedoch nicht automatisch für zukünftige Zahlungen verwendet. Um diese Zahlungsmethode in Zukunft automatisch zu belasten, verwenden Sie einen Webhook-Consumer, um das Ereignis invoice.
für neue Abonnements zu überwachen und die Standard-Zahlungsmethode festzulegen.
Abonnementstatus verwaltenClientseitig
Sofern die erste Zahlung erfolgreich war, ist der Status des Abonnements active
, und es sind keine weiteren Maßnahmen erforderlich. Wenn Zahlungen fehlschlagen, ändert sich der Status in den Abonnementstatus, der in Ihren Einstellungen für den automatischen Einzug konfiguriert ist. Benachrichtigen Sie die Kundinnen/Kunden, wenn die Zahlung fehlgeschlagen ist, und belasten Sie deren Konto mit einer anderen Zahlungsmethode.
Integration testen
Erfahren Sie, wie Sie Szenarien mit sofortigen Verifizierungen mithilfe von Financial Connections testen können.
Transaktions-E-Mails im Test-Modus senden
Nachdem Sie die Bankkontodetails erfasst und ein Mandat akzeptiert haben, senden Sie die Mandatsbestätigung und die Verifizierungs-E-Mails im Test-Modus. Geben Sie dazu im Feld payment_
eine E-Mail im Format {any-prefix}+test_
an, wenn Sie die Details zur Zahlungsmethode erfassen.
Häufiger Fehler
Sie müssen Ihr Stripe -Konto aktivieren, bevor Sie diese E-Mails im Test-Modus auslösen können.
Test account numbers
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.
Account number | Token | Routing number | Verhalten |
---|---|---|---|
000123456789 | pm_ | 110000000 | Die Zahlung ist erfolgreich. |
000111111113 | pm_ | 110000000 | Die Zahlung schlägt fehl, weil das Konto geschlossen ist. |
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 | The payment fails due to payment amount causing the account to exceed its weekly payment volume limit. |
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 and 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. |