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.
If you want to continue manually configuring the payment methods you present to your customers with Checkout, use this guide. Otherwise, update your integration to configure payment methods in the Dashboard.
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 Sitzung, wenn Ihr Kunde/Ihre Kundin für etwas bezahlen möchte. Nachdem Sie ihn/sie zu einer Checkout-Sitzung weitergeleitet haben, zeigt Stripe ein Zahlungsformular an, vom dem aus Ihr Kunde/Ihre Kundin seinen/ihren Kauf abschließen kann. Sobald Ihr Kunde/Ihre Kundin einen Kauf getätigt hat, wird er/sie zurück zu Ihrer Seite geleitet.
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 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.
Auf Ihrer success_
-Seite sollten Sie Ihren Kund/innen eine Meldung über den Zahlungserfolg anzeigen und diese informieren, dass die Auftragsausführung einige Tage dauern wird, da die Zahlung mit dem Bacs-Lastschriftverfahren nicht sofort erfolgt.
Wenn Sie neben Zahlungen mit verzögerter Benachrichtigung auch Sofortzahlungen (wie Kreditkarten) akzeptieren, müssen Sie Ihren Webhook-Endpoint so aktualisieren, dass er beim Empfang eines checkout.
-Ereignisses beide Zahlungsarten verarbeitet.
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.
Für die Verwendung im Testmodus stehen Ihnen mehrere Testkontonummern zur Verfügung. So können Sie die Funktionsfähigkeit Ihrer Integration überprüfen.
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
Stripe schickt den Kundinnen/Kunden bei der erstmaligen Erfassung ihrer Zahlungsinformationen sowie bei jeder Kontobelastung standardmäßig E-Mails. Im Testmodus werden diese Benachrichtigungen nicht versendet.
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.