Zahlungen per Bacs-Lastschriftverfahren
So nehmen Sie Bacs-Lastschriftzahlungen an.
Vorsicht
Stripe passt die den Kundinnen/Kunden angezeigten Zahlungsmethoden automatisch an Währung, geltende Einschränkungen und andere Parameter an. Wir empfehlen Ihnen, Ihre Zahlungsmethoden im Dashboard zu konfigurieren und sich dabei an dem Artikel Zahlungen annehmen zu orientieren.
Wenn Sie weiterhin manuell konfigurieren möchten, welche Zahlungsmethoden Ihren Kundinnen/Kunden mit Checkout angezeigt werden sollen, können Sie sich an diesem Leitfaden orientieren. Aktualisieren Sie andernfalls Ihre Integration, um Zahlungsmethoden im Dashboard zu konfigurieren.
Stripe-Nutzer/innen im Vereinigten Königreich können Checkout im Zahlungsmodus verwenden, um Zahlungen per Bacs-Lastschriftverfahren zu akzeptieren.
Eine Checkout-Sitzung repräsentiert die Details der Kaufabsicht Ihres Kunden/Ihrer Kundin. Sie erstellen eine Checkout-Sitzung, wenn Ihr Kunde/Ihre Kundin für etwas bezahlen möchte. Nachdem Ihre Kundinnen/Kunden zu einer Checkout-Sitzung umgeleitet wurden, präsentiert Stripe ein Zahlungsformular, von dem aus sie ihren Kauf abschließen können. Nachdem Ihre Kundinnen/Kunden einen Kauf getätigt haben, werden sie wieder auf Ihre Website zurückgeleitet.
Stripe einrichtenServerseitig
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:
Produkte und Preise erstellen
Um Checkout zu verwenden, müssen Sie zuerst ein Produkt und einen Preis erstellen. Verschiedene physische Waren oder Dienstleistungsebenen sollten durch Produkte dargestellt werden. Die Preisgestaltung ist durch einen oder mehrere Preise dargestellt.
Sie können beispielsweise ein T-Shirt-Produkt erstellen, das zwei Preise für verschiedene Währungen hat: 20 GBP und 25 EUR. Auf diese Weise können Sie Preise ändern und hinzufügen, ohne die Details der zugrundeliegenden Produkte ändern zu müssen. Sie können ein Produkt oder einen Preis entweder über die API oder im Dashboard erstellen.
Wenn Sie Ihren Preis beim Bezahlvorgang ermitteln (der Kunde/die Kundin legt beispielsweise einen Spendenbetrag fest), oder wenn Sie es vorziehen, Preise nicht im Voraus zu erstellen, können Sie Preise ad-hoc bei der Erstellung der Checkout-Sitzung mit einem vorhandenen Produkt erstellen.
Vorsicht
Wenn Sie bereits eine Checkout-Integration haben, die Prices nicht nutzt, beachten Sie bitte, dass die Checkout API seit der Einführung von Prices geändert wurde. Verwenden Sie diesen Migrationsleitfaden, um ein Upgrade durchzuführen, oder behalten Sie Ihre vorhandene Integration bei.
Checkout-Sitzung erstellenClientseitigServerseitig
Fügen Sie Ihrer Website eine Schaltfläche zum Bezahlen hinzu, über die ein serverseitiger Endpoint aufgerufen wird, um eine Checkout-Sitzung zu erstellen.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Erstellen Sie eine Checkout-Sitzung mit line_items. Posten geben an, welche Artikel die Kundinnen/Kunden erwerben.
Wenn Ihre Kund/innen eine Zahlung abschließen, werden sie an die success_
weitergeleitet. Dabei handelt es sich um eine Seite auf Ihrer Website, auf der sie darüber informiert werden, dass ihre Zahlungsinformationen erfasst wurden und die Zahlung bearbeitet wird.
Wenn Ihre Kund/innen in einer Checkout-Sitzung auf Ihr Logo klicken, ohne eine Zahlung abzuschließen, leitet Checkout sie über die cancel_
zurück zu Ihrer Website. In der Regel ist dies die Seite auf Ihrer Website, die die Kund/innen vor der Weiterleitung zu Checkout besucht haben.
Mit Checkout können Zahlungen akzeptiert und Zahlungsmethoden für eine erneute Verwendung gespeichert werden. Gespeicherte Zahlungsmethoden können per PaymentIntent für künftige Zahlungen wiederverwendet werden. Leiten Sie Ihre Kundinnen/Kunden nach dem Erstellen der Checkout-Sitzung zu der in der Antwort zurückgegebenen URL weiter.
Notiz
Gemäß den Regeln zum Bacs-Lastschriftverfahren schickt Stripe bei der erstmaligen Erfassung von Zahlungsinformationen sowie bei jeder Kontobelastung standardmäßig Lastschriftankündigungen per E-Mail. Standardmäßig versendet Stripe diese E-Mails für Sie.
Beim Erstellen einer Checkout-Sitzung wird eine Sitzungs-ID zurückgegeben. Stellen Sie die Sitzungs-ID auf Ihrer Erfolgsseite zur Verfügung, indem Sie die Vorlagenvariable {CHECKOUT_
wie im obigen Beispiel in die success_
einfügen.
Vorsicht
Verlassen Sie sich beim Erkennen von initiierten Zahlungen nicht allein auf die Weiterleitung auf die success_
:
- Böswillige Nutzer/innen könnten, ohne zu bezahlen, direkt auf die
success_
zugreifen und sich so unberechtigt Zugang zu Waren und Dienstleistungen verschaffen.url - In manchen Fällen werden Kund/innen nach erfolgreicher Zahlung nicht zur
success_
weitergeleitet. Möglicherweise haben sie die Registerkarte im Browser geschlossen, bevor die Weiterleitung erfolgt ist.url
Ereignisse nach der Zahlung verarbeitenServerseitig
Wenn Ihre Kund/innen ihre Zahlung erfolgreich abschließen, werden sie von Stripe an die URL weitergeleitet, die Sie im success_
-Parameter angegeben haben. Hierbei handelt es sich in der Regel um eine Seite auf Ihrer Website, auf der Ihre Kund/innen darüber informiert werden, dass ihre Zahlung erfolgreich durchgeführt wurde.
Beim Bacs-Lastschriftverfahren handelt es sich jedoch um eine Zahlungsmethode mit verzögerter Benachrichtigung, was bedeutet, das Gelder nicht sofort verfügbar sind. Bei einer Zahlung mit Bacs-Lastschriftverfahren dauert es in der Regel 3 Werktage, bis die Gelder verfügbar sind. Deshalb sollten Sie mit der Ausführung warten, bis das Geld auf Ihrem Konto ist. Nach erfolgreicher Zahlung ändert sich der zugrunde liegende PaymentIntent-Status von processing
in succeeded
.
Die folgenden Checkout-Ereignisse werden übermittelt, wenn sich der Zahlungsstatus ändert:
Ereignisname | Beschreibung | Nächste Schritte |
---|---|---|
checkout.session.completed | Der/die Kund/in hat die Lastschriftzahlung erfolgreich autorisiert, indem das Checkout-Formular eingereicht wurde. | Warten Sie, bis die Zahlung erfolgt ist oder fehlschlägt. |
checkout.session.async_payment_succeeded | Die Kundenzahlung war erfolgreich. | Wickeln Sie die Kundenbestellung ab. |
checkout.session.async_payment_failed | Die Zahlung wurde abgelehnt oder ist aus einem anderen Grund fehlgeschlagen. | Kontaktieren Sie den/die Kund/in per E-Mail und fordern Sie eine neue Bestellung an. |
Ihr Webhook-Code muss alle drei dieser Checkout-Ereignisse verarbeiten können.
Jede Nutzlast des Checkout-Webhooks beinhaltet das Checkout-Sitzungsobjekt, das Informationen über die Kundinnen/Kunden und den PaymentIntent enthält.
Der Webhook checkout.
wird an Ihren Server übermittelt, bevor Ihre Kund/innen weitergeleitet werden. Ihre Annahme des Webhooks (ein beliebiger 2xx
-Statuscode) löst die Weiterleitung der Kund/innen an die success_
aus. Wenn Stripe innerhalb von 10 Sekunden nach erfolgreicher Zahlung keine volle Empfangsbestätigung erhält, werden Ihre Kund/innen automatisch zur success_
-Seite weitergeleitet.
Zeigen Sie Ihren Kundinnen/Kunden auf Ihrer success_
-Seite eine Meldung über den Zahlungserfolg an und informieren Sie sie, dass die Ausführung der Bestellung einige Tage dauert, da die Zahlung mit dem Bacs-Lastschriftverfahren nicht sofort erfolgt.
Wenn Sie neben Zahlungen mit verzögerter Benachrichtigung auch Sofortzahlungen (wie Kreditkarten) akzeptieren, aktualisieren Sie Ihren Webhook-Endpoint, um beim Empfang eines checkout.
-Ereignisses beide Zahlungsarten zu verarbeiten.
Sie können Informationen über die Kund/innen und die Zahlung abrufen, indem Sie die Customer- oder PaymentIntent-Objekte abrufen, auf die von den Eigenschaften customer
, payment_
in der Webhook-Payload verwiesen wird.
Webhooks lokal testen
Verwenden Sie die Stripe-CLI, um Webhooks lokal zu testen. Nach der Installation können Sie Ereignisse an Ihren Server weiterleiten:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
Erfahren Sie mehr über die Einrichtung von Webhooks.
Integration testen
Mittlerweile sollten Sie über eine grundlegende Integration des Bacs-Lastschriftverfahrens verfügen, die Bankverbindungen erfassen und Zahlungen akzeptieren kann.
There are several test bank account numbers you can use in a sandbox to make sure this integration is ready.
Bankleitzahl | Kontonummer | Beschreibung |
---|---|---|
108800 | 00012345 | Die Zahlung ist erfolgreich und der PaymentIntent von wird von processing auf succeeded umgestellt. |
108800 | 90012345 | Die Zahlung erfolgt innerhalb von drei Minuten und der PaymentIntent von wird von processing auf succeeded umgestellt. |
108800 | 33333335 | Die Zahlung wird akzeptiert, schlägt dann aber unmittelbar fehl. Die Fehlerkennung debit_ wird ausgegeben und PaymentIntent wird von processing auf requires_ umgestellt. Das Mandat wechselt zu inactive und die PaymentMethod kann nicht erneut verwendet werden. |
108800 | 93333335 | Die Zahlung schlägt nach drei Minuten fehl. Die Fehlerkennung debit_ wird ausgegeben und der PaymentIntent wird von processing auf requires_ umgestellt. Das Mandat wechselt zu inactive und die PaymentMethod kann nicht erneut verwendet werden. |
108800 | 22222227 | Die Zahlung schlägt fehl, die Fehlerkennung insufficient_ wird ausgegeben und der PaymentIntent wird von processing auf requires_ umgestellt. Das Mandat bleibt active und die PaymentMethod kann erneut verwendet werden. |
108800 | 92222227 | Die Zahlung schlägt nach drei Minuten fehl, die Fehlerkennung insufficient_ wird ausgegeben und der PaymentIntent wird von processing auf requires_ umgestellt. Das Mandat bleibt active und die PaymentMethod kann erneut verwendet werden. |
108800 | 55555559 | Die Zahlung erfolgt innerhalb von drei Minuten und der PaymentIntent wechselt von processing zu succeeded . Eine Zahlungsanfechtung wird jedoch sofort erstellt. |
108800 | 00033333 | Die Zahlungsmethode wurde erfolgreich erstellt, das Mandat wird jedoch von der Kundenbank verweigert und sofort deaktiviert. |
108800 | 00044444 | Die Anfrage zur Einrichtung eines Bacs-Lastschriftverfahrens wird aufgrund einer ungültigen Kontonummer sofort abgelehnt. Die Kund/innen werden aufgefordert, ihre Angaben vor dem Absenden zu prüfen. Zahlungsinformationen werden nicht erfasst. |
108800 | 34343434 | The payment fails with a charge_ failure code due to the payment amount causing the account to exceed its weekly payment volume limit. |
108800 | 12121212 | The payment fails with a charge_ failure code due to the payment amount exceeding the account’s transaction volume limit. |
Sie können die oben aufgeführten Kontonummern nach Belieben testen. Da die Verarbeitung von Zahlungen per Bacs-Lastschriftverfahren mehrere Tage in Anspruch nimmt, verwenden Sie bitte die Testkontonummern. Bei diesen ist eine dreiminütige Verzögerung eingebaut, um tatsächliche Zahlungen möglichst exakt nachzubilden.
Notiz
By default, Stripe automatically sends emails to the customer when payment details are initially collected and each time a debit will be made on their account. These notifications aren’t sent in sandboxes.
Fehlgeschlagene Zahlungen
Für fehlgeschlagene Zahlungen gibt es verschiedene Ursachen. Diese entnehmen Sie dem charge.failure_code. Sie können nur Zahlungen mit bestimmten Fehlercodes erneut versuchen. Wenn Sie keine Wiederholung durchführen können, empfehlen wir Ihnen, Kontakt zu den Betroffenen aufzunehmen und diese aufzufordern, die Zahlung mit einem anderen Bankkonto oder einer anderen Zahlungsmethode erneut zu tätigen.
Unten finden Sie eine Liste der aktuellen Fehlercodes für das BACS-Lastschriftverfahren. Die Liste wird laufend ergänzt. Gehen Sie also bei der Erstellung und Wartung Ihres Codes davon aus, dass noch andere Fehlertypen existieren.
Fehlercode | Beschreibung | Wiederholbar |
---|---|---|
account_ | Das Bankkonto wurde geschlossen. | Nein |
bank_ | Das Konto wurde an einen anderen Zahlungsanbieter übertragen. Prüfen Sie, ob Ihnen dessen Angaben vorliegen. Andernfalls müssen Sie von den Betroffenen ein neues Lastschriftmandat einholen. | Nein |
debit_ | Die Kund/innen haben die Zahlung ihrer Bank als nicht autorisiert gemeldet oder der Auszahlungsbank liegt kein entsprechendes Mandat vor. | Nein |
generic_ | Diese Zahlung konnte nicht bearbeitet werden. | Ja |
insufficient_ | Das Kundenkonto ist für diese Zahlung nicht ausreichend gedeckt. | Ja |
invalid_ | Die Kontonummer ist ungültig. Möglicherweise bezieht sie sich auf ein Konto in einer anderen Währung oder über das Konto können keine Zahlungen per Lastschrift verarbeitet werden. | Nein |
Um Zahlungen noch einmal zu versuchen, bestätigen Sie den PaymentIntent erneut mit derselben PaymentMethod.
Um die Erfolgsaussichten zu erhöhen, empfehlen wir vor dem erneuten Zahlungsversuch eine Kontaktaufnahme mit der zahlenden Person.