Verwenden Sie Stripe Elements, unsere vorkonfigurierten Nutzeroberflächenkomponenten, zum Erstellen von Zahlungsformularen zur sicheren Erfassung von Bankverbindungen, ohne die vertraulichen Daten selbst handhaben zu müssen. Mit der Setup Intents API können Sie Zahlungsinformationen für das BECS-Lastschriftverfahren vorab erfassen und den endgültigen Betrag bzw. Zahlungsdatum später festlegen. Verwenden Sie dies für:
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:
Um ein BECS-Lastschriftkonto für zukünftige Zahlungen zu verwenden, müssen Sie es einem Customer-Objekt zuordnen.
Erstellen Sie ein Customer-Objekt, 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.
Legen Sie neue Kund/innen an oder rufen Sie bestehende Kund/innen ab, um sie mit dieser Zahlung zu verknüpfen. Fügen Sie den folgenden Code auf Ihrem Server ein, um neue Kund/innen zu erstellen.
curl -X POST https://api.stripe.com/v1/customers \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
Ein SetupIntent ist ein Objekt, das Ihre Absicht darstellt, die Zahlungsmethode einer Kundin/eines Kunden für zukünftige Zahlungen einzurichten. Mit dem SetupIntent
werden die Schritte dieses Einrichtungsprozesses verfolgt. Für BECS-Lastschriftverfahren beinhaltet dies das Erfassen eines Mandats von der Kundin/dem Kunden und die Überprüfung der Gültigkeit während der Laufzeit des Mandats.
Erstellen Sie einen SetupIntent auf Ihrem Server, wobei die payment_method_types auf au_becs_debit
festgelegt sind, und geben Sie die ID des Kunden/der Kundin an:
curl https://api.stripe.com/v1/setup_intents \
-u sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \
-d "payment_method_types[]"="au_becs_debit" \
-d "customer"="{{CUSTOMER_ID}}"
Nach Erstellen eines SetupIntent
auf Ihrem Server können Sie die SetupIntent
-ID im Datenmodell Ihrer Anwendung mit dem Kunden/der Kundin der aktuellen Sitzung verknüpfen. Dadurch können Sie nach erfolgreichem Einholen einer Zahlungsmethode die Informationen abrufen.
Das zurückgegebene SetupIntent
-Objekt enthält die Eigenschaft client_secret
. Übergeben Sie das Client-Geheimnis an die Anwendung auf Client-Seite, um mit der Einrichtung fortzufahren.
Sie können jetzt mit Stripe Elements Zahlungsinformationen auf dem Client erfassen. Elements beinhaltet vorgefertigte Komponenten der Nutzeroberfläche zur Erfassung von Zahlungsdetails.
Ein Stripe Element enthält ein iframe, dass die Zahlungsdaten über eine HTTPS-Verbindung sicher an Stripe sendet. Die Adresse der Bezahlseite muss ebenfalls mit https:// beginnen, nicht mit http://, damit Ihre Integration funktioniert.
Sie können Ihre Integration ohne HTTPS testen. Dann müssen Sie das Protokoll aber aktivieren, bevor Sie Ihre ersten Live-Zahlungen empfangen.
Stripe Elements einrichten
Stripe Elements ist ein Feature von Stripe.js und steht damit automatisch zur Verfügung. Fügen Sie das Stripe.js-Skript auf Ihrer Zahlungsseite ein, indem Sie es in den head
Ihrer HTML-Datei einbinden. Laden Sie Stripe.js immer direkt von js.stripe.com, um die PCI-Konformität zu gewährleisten. Fügen Sie das Skript nicht in ein Bundle ein und hosten Sie selbst keine Kopie davon.
Erstellen Sie auf Ihrer Zahlungsseite mit dem folgenden JavaScript eine Instanz von Elements:
const stripe = Stripe('pk_test_TYooMQauvdEDq54NiTphI7jx'
);
const elements = stripe.elements();
Lastschriftanfragen
Bevor Sie eine BECS-Lastschriftzahlung erstellen können, muss Ihr/e Kund/in der Dienstleistungsvereinbarung zu Lastschriftenanfragen zustimmen. Dies können sie tun, indem sie eine ausgefüllte Lastschriftanfrage (DDR) einreichen. Durch die Genehmigung erhalten Sie ein Mandat, sein/ihr Konto zu belasten. Das Mandate
ist eine Aufzeichnung der Zustimmung, Zahlungen über eine Zahlungsmethode einzuziehen.
Für die Mandatsannahme online können Sie ein Formular erstellen, um die erforderlichen Informationen einzuholen. Stellen Sie das Formular über HTTPS bereit und erfassen Sie die folgenden Informationen:
Informationen | Beschreibung |
---|
Kontoname | Der vollständige Name des Kontoinhabers/der Kontoinhaberin |
BSB-Nummer | Die Zweigniederlassungsnummer des Bankkontos (z. B. 123-456 ) |
Kontonummer | Die Bankkontonummer (z. B. 87654321 ). |
Bei Einzug einer Lastschriftanforderung befolgen Sie unsere BECS-Lastschriftbedingungen und tun Sie im Rahmen Ihres Bezahlformulars Folgendes:
- Zeigen Sie die genauen Bedingungen der Stripe-Dienstleistungsvereinbarung zu Lastschriftenanfragen entweder inline im Formular oder auf einer im Formular verlinkten Seite an und kennzeichnen Sie diese als „Dienstleistungsvereinbarung zu Lastschriftanfragen“.
- Stellen Sie sicher, dass die akzeptierten Lastschriftanfragen und die dazugehörige Dienstleistungsvereinbarung zu Lastschriftenanfragen zu jeder Zeit mit Ihren Kundinnen/Kunden geteilt werden kann, entweder als gedruckte oder unveränderliche elektronische Kopie (z. B. E-Mail). Stripe hostet dies für Sie.
- Zeigen Sie den folgenden Standard-Autorisierungstext für Ihre Kund/innen an, um BECS-Lastschriftanfragen zu akzeptieren. Ersetzen Sie Rocketship Inc durch den Namen Ihres Unternehmens. Dadurch sind Sie berechtigt, Zahlungen mit BECS-Lastschrift vom Bankkonto Ihrer Kund/innen zu veranlassen.
Notiz
Indem Sie Ihre Bankkontoinformationen angeben, stimmen Sie dieser Lastschriftanforderung und der Dienstleistungsvereinbarung zu Lastschriftenanfragen zu und ermächtigen Stripe Payments Australia Pty Ltd ACN 160 180 343, Lastschriften-Benutzer-ID 507156 („Stripe“), Ihr Konto über das Bulk Electronic Clearing System (BECS) im Namen von Rocketship Inc (der „Händler“) zu belasten in Höhe jedweden Betrags, den Ihnen der Händler gesondert mitgeteilt hat. Sie bestätigen, dass Sie entweder Kontoinhaber/in oder Zeichnungsberechtige/r sind in Bezug auf das oben genannte Konto.
Die Details des akzeptierten Mandats werden beim Einrichten einer PaymentMethod oder beim Bestätigen eines PaymentIntent
generiert. Sie sollten jederzeit in der Lage sein, dieses Mandat – die akzeptierten Lastschriftanfragen und die dazugehörige Dienstleistungsvereinbarung – entweder in gedruckter Form oder als unveränderliche elektronische Kopie (z. B. per E-Mail) mit Ihren Kundinnen/Kunden zu teilen. Stripe hostet dies für Sie unter der url
-Eigenschaft des Mandate
-Objekts, das mit der PaymentMethod
verknüpft ist.
Das australische Bankkontoelement hilft Ihnen beim Einziehen und Validieren der BSB-Nummer und der Kontonummer. Stellen Sie sicher, dass es in Ihrem Zahlungsformular erscheint. Erstellen Sie in Ihrem Zahlungsformular leere DOM-Knoten (Container) mit einmaligen IDs. Außerdem müssen Ihre Kund/innen die Nutzungsvereinbarung für Lastschriftanforderungen lesen und akzeptieren.
<form action="/setup" method="post" id="setup-form">
<div class="form-row inline">
<div class="col">
<label for="accountholder-name">
Name
</label>
<input
id="accountholder-name"
name="accountholder-name"
placeholder="John Smith"
required
/>
</div>
<div class="col">
<label for="email">
Email Address
</label>
<input
id="email"
name="email"
type="email"
placeholder="john.smith@example.com"
required
/>
</div>
</div>
<div class="form-row">
<label for="au-bank-account-element">
Bank Account
</label>
<div id="au-bank-account-element">
</div>
</div>
<div id="bank-name"></div>
<div id="error-message" role="alert"></div>
<div class="col" id="mandate-acceptance">
By providing your bank account details, you agree to this Direct Debit Request
and the <a href="stripe.com/au-becs-dd-service-agreement/legal">Direct Debit Request service agreement</a>,
and authorise Stripe Payments Australia Pty Ltd ACN 160 180 343
Direct Debit User ID number 507156 (“Stripe”) to debit your account
through the Bulk Electronic Clearing System (BECS) on behalf of
Rocket Rides (the "Merchant") for any amounts separately
communicated to you by the Merchant. You certify that you are either
an account holder or an authorised signatory on the account listed above.
</div>
<button id="submit-button" data-secret="{{CLIENT_SECRET}}">Set up BECS Direct Debit</button>
</form>
Wenn das Formular geladen wurde, erstellen Sie eine Instanz des Australia Bank Account Element und verbinden sie mit dem Element-Container:
const style = {
base: {
color: '#32325d',
fontSize: '16px',
'::placeholder': {
color: '#aab7c4'
},
':-webkit-autofill': {
color: '#32325d',
},
},
invalid: {
color: '#fa755a',
iconColor: '#fa755a',
':-webkit-autofill': {
color: '#fa755a',
},
}
};
const options = {
style: style,
disabled: false,
hideIcon: false,
iconStyle: "default",
}
const auBankAccount = elements.create('auBankAccount', options);
auBankAccount.mount('#au-bank-account-element');
Anstatt das gesamte SetupIntent
-Objekt an den Client zu senden, verwenden Sie dessen Client-Geheimnis aus Schritt 2. Dieses unterscheidet sich von Ihren API-Schlüsseln, mit denen Anfragen der Stripe-API authentifiziert werden.
Achten Sie auf einen sorgfältigen Umgang mit dem Client-Geheimnis, da mit ihm die Einrichtung abgeschlossen werden kann. Es darf nicht protokolliert, in URLs eingebettet oder Dritten zugänglich gemacht werden.
Verwenden Sie stripe.confirmAuBecsDebitSetup, damit die Einrichtung abgeschlossen werden kann, wenn der/die Nutzer/in das Formular absendet. War die Einrichtung erfolgreich, wird der Wert succeeded
für die Eigenschaft status
des SetupIntent zurückgegeben. War die Einrichtung nicht erfolgreich, prüfen Sie den angegebenen error
, um den Grund zu erfahren.
Da der Kunde/die Kundin festgelegt ist, wird die PaymentMethod nach erfolgreicher Einrichtung dem angegebenen Customer
-Objekt zugeordnet. Nun können Sie die ID des Customer
-Objekts mit Ihrer eigenen, internen Darstellung eines Kunden/einer Kundin verknüpfen. Dadurch können Sie die gespeicherte PaymentMethod
verwenden, um zukünftige Zahlungen einzuziehen, ohne die Kundinnen/Kunden zur Angabe der Zahlungsmethode auffordern zu müssen.
const form = document.getElementById('setup-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();
stripe.confirmAuBecsDebitSetup(
clientSecret,
{
payment_method: {
au_becs_debit: auBankAccount,
billing_details: {
name: accountholderName.value,
email: email.value
}
}
}
);
});
Teilen Sie nach Bestätigung des SetupIntent
die Mandats-URL aus dem Mandats-Objekt mit Ihrem Kunden/Ihrer Kundin. Wir empfehlen außerdem, die folgenden Details hinzuzufügen, wenn Sie bestätigen, dass sein/ihr Mandat eingerichtet wurde.
- Eine eindeutige Bestätigungsnachricht über die Einrichtung des Lastschriftverfahrens
- Der Name des Unternehmens, der auf den Kontoauszügen von Kund/innen angezeigt wird, wenn ihr Konto belastet wird
- Der Zahlungsbetrag und der Zahlungsplan (falls zutreffend)
- Ein Link zur generierten Mandats-URL für Lastschriftanfragen
Sie können vom mandate
für das SetupIntent-Objekt aus auf die ID des Mandate
-Objekts zugreifen, das nach Bestätigung zusammen mit dem Ereignis setup_intent.succeeded
gesendet wird. Oder Sie können sie über die API abrufen.
curl https://api.stripe.com/v1/setup_intents/{{SETUP_INTENT_ID}} \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d "expand[]"=mandate
Testen Sie Ihr Formular mit der BSB-Prüfnummer 000-000
und einer der unten aufgeführten Testkontonummern, wenn Sie confirmAuBecsDebitSetup anfordern.
BSB-Nummer | Kontonummer | Beschreibung |
---|
000-000 | 000123456 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu succeeded . Der Mandatsstatus bleibt active . |
000-000 | 900123456 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu succeeded (mit einer Verzögerung von drei Minuten). Der Mandatsstatus bleibt active . |
000-000 | 111111113 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu requires_payment_method mit dem Fehlercode account_closed . Der Mandatsstatus ändert sich an dieser Stelle in inactive . |
000-000 | 111111116 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu requires_payment_method mit dem Fehlercode no_account . Der Mandatsstatus ändert sich an dieser Stelle in inactive . |
000-000 | 222222227 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu requires_payment_method mit dem Fehlercode refer_to_customer . Der Mandatsstatus bleibt active . |
000-000 | 922222227 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu requires_payment_method mit dem Fehlercode refer_to_customer (mit einer Verzögerung von drei Minuten). Der Mandatsstatus bleibt active . |
000-000 | 333333335 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu requires_payment_method mit dem Fehlercode debit_not_authorized . Der Mandatsstatus ändert sich an dieser Stelle in inactive . |
000-000 | 666666660 | Der mit der resultierenden PaymentMethod erstellte PaymentIntent wechselt von processing zu succeeded . Eine Zahlungsanfechtung wird jedoch sofort erstellt. |
000-000 | 343434343 | The PaymentIntent that was created with the resulting PaymentMethod fails with a charge_exceeds_source_limit error due to the payment amount causing the account to exceed its weekly payment volume limit. |
000-000 | 121212121 | The PaymentIntent that was created with the resulting PaymentMethod fails with a charge_exceeds_transaction_limit error due to the payment amount exceeding the account’s transaction volume limit. |