Zahlungen per Sofort akzeptieren
So akzeptieren Sie Zahlungen per Sofort, einer gängigen Zahlungsmethode in Europa.
Achtung
SOFORT wurde zum 31. März 2025 eingestellt. Weitere Informationen finden Sie auf unserer Support-Seite.
Vorsicht
Wir empfehlen Ihnen, den Leitfaden Zahlung akzeptieren zu befolgen, es sei denn, Sie müssen eine manuelle serverseitige Bestätigung verwenden oder Ihre Integration erfordert die separate Angabe von Zahlungsmethoden. Wenn Sie Elements bereits integriert haben, lesen Sie den Migrationsleitfaden für Payment Element.
Bei Sofort handelt es sich um eine Zahlungsmethode für die einmalige Nutzung mit verzögerter Benachrichtigung, bei der Kundinnen und Kunden ihre Zahlungen authentifizieren müssen. Kundinnen und Kunden zahlen mit Sofort, indem sie von Ihrer Website auf das Portal ihrer Bank weitergeleitet werden, um die Zahlung zu authentifizieren. Eine Benachrichtigung über den Erfolg oder das Fehlschlagen der Zahlung erfolgt in der Regel innerhalb von 2 bis 14 Tagen.
Notiz
Bei der Annahme von Sofort-Zahlungen gelten die Nutzungsbedingungen für Sofort.
Stripe einrichtenServerseitigClientseitig
Serverseitig
Diese Integration erfordert Endpoints auf Ihrem Server, die mit der Stripe-API kommunizieren können. Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API von Ihrem Server aus:
Clientseitig
Das React Native SDK ist Open Source und vollständig dokumentiert. Intern werden native iOS und Android SDKs verwendet. Um das React Native SDK von Stripe zu installieren, führen Sie einen der folgenden Befehle im Verzeichnis Ihres Projekts aus (je nachdem, welchen Paket-Manager Sie verwenden):
Installieren Sie als Nächstes einige weitere erforderliche Abhängigkeiten:
- Navigieren Sie für iOS zum Verzeichnis ios und führen Sie
pod install
aus, um sicherzustellen, dass Sie auch die erforderlichen nativen Abhängigkeiten installieren. - Für Android müssen keine Abhängigkeiten mehr installiert werden.
Stripe Initialisierung
Um Stripe in Ihrer React Native-App zu initialisieren, umschließen Sie entweder Ihren Zahlungsbildschirm mit der Komponente StripeProvider
oder verwenden Sie die Initialisierungsmethode initStripe
. Nur der veröffentlichbare API-Schlüssel in publishableKey
ist erforderlich. Das folgende Beispiel zeigt, wie Stripe mithilfe der Komponente StripeProvider
initialisiert wird.
import React, { useState, useEffect } from 'react'; import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > // Your app code here </StripeProvider> ); }
Notiz
Verwenden Sie Ihre API-Testschlüssel beim Testen und Entwickeln Ihrer App und Ihre Live-Modus-Schlüssel beim Veröffentlichen Ihrer App.
PaymentIntent erstellenServerseitigClientseitig
Ein PaymentIntent stellt Ihre Absicht dar, Zahlungen von Kundinnen und Kunden einzuziehen, und dokumentiert den gesamten Zahlungsvorgang.
Serverseitig
Erstellen Sie eine PaymentIntent
auf Ihrem Server und geben Sie den einzuziehenden amount
und die Währung eur
an (Sofort unterstützt keine anderen Währungen). Wenn Sie über eine bestehende Payment Intents-Integration verfügen, fügen Sie sofort
der Liste der Arten der Zahlungsmethoden hinzu.
Bevorzugte Sprache ändern
Die Autorisierungsseite für Sofort zeigt Stripe standardmäßig in der Sprache an, die dem angegebenen Ländercode entspricht. Sie können diese Spracheinstellung an die bevorzugte Sprache der Kundin/des Kunden anpssen, indem Sie sie in der Anfrage übermitteln und den Wert der Eigenschaft preferred_
ändern. Die unterstützten Werte sind de
, en
, es
, it
, fr
, nl
und pl
.
Statt das gesamte PaymentIntent-Objekt an Ihre App zu übergeben, übergeben Sie nur das Client-Geheimnis. Das Client-Geheimnis des PaymentIntent ist ein eindeutiger Schlüssel, mit dem Sie die Zahlung bestätigen und Zahlungsdetails auf dem Client aktualisieren können, ohne dass eine Manipulation vertraulicher Daten, wie beispielsweise des Zahlungsbetrags, möglich ist.
Clientseitig
Fordern Sie auf dem Client eine PaymentIntent von Ihrem Server an und speichern Sie das Client-Geheimnis.
const fetchPaymentIntentClientSecret = async () => { const response = await fetch(`${API_URL}/create-payment-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email, currency: 'eur', payment_method_types: ['sofort'], }), }); const { clientSecret, error } = await response.json(); return { clientSecret, error }; };
Angaben zur Zahlungsmethode erfassen
Erfassen Sie in Ihrer App die E-Mail-Adresse Ihrer Kund/innen.
export default function SofortPaymentScreen() { const [email, setEmail] = useState(); const handlePayPress = async () => { // ... }; return ( <Screen> <TextInput placeholder="E-mail" onChange={(value) => setEmail(value.nativeEvent.text)} /> </Screen> ); }
Zahlung an Stripe senden
Rufen Sie das Client-Geheimnis von der erstellten PaymentIntent ab und rufen Sie confirmPayment
auf. Dies entspricht einer Webansicht, in der die Kund/innen die Zahlung auf der Website oder in der App ihrer Bank durchführen können. Anschließend wird das Promise mit dem Ergebnis der Zahlung aufgelöst.
export default function SofortPaymentScreen() { const [email, setEmail] = useState(); const billingDetails: PaymentMethodCreateParams.BillingDetails = { name: 'John Doe', }; const { error, paymentIntent } = await confirmPayment(clientSecret, { paymentMethodType: 'Sofort', paymentMethodData: { billingDetails, country: 'DE', } }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { Alert.alert( 'Success', `The payment was confirmed successfully! currency: ${paymentIntent.currency}` ); } return ( <Screen> <TextInput placeholder="E-mail" onChange={(value) => setEmail(value.nativeEvent.text)} /> </Screen> ); }
Ereignisse nach Zahlung verarbeiten
Da es sich bei Sofort um eine Zahlungsmethode mit verzögerter Benachrichtigung handelt, verbleibt der Status des PaymentIntent bis zu 14 Tage ab seiner Erstellung (auch als letztmöglicher Zahlungstermin bezeichnet) im Zustand payment_intent.processing. In einer Sandbox verbleibt der Status des PaymentIntent drei Minuten lang im Zustand „Wird verarbeitet“, um dies zu simulieren.
- Stripe empfiehlt, Bestellungen während des Verarbeitungszustands abzuwickeln. Im Durchschnitt können Sie davon ausgehen, dass etwa 0,2 % der Sofort-Zahlungsversuche nach dem Wechsel in den Verarbeitungszustand fehlschlagen. Dies gilt nur für Sofort-Zahlungen aufgrund der geringen Fehlerquote und nicht für andere Zahlungsmethoden mit verzögerter Benachrichtigung.
- Möglicherweise ziehen Sie es vor, Bestellungen erst nach Erhalt des payment_intent.succeeded-Ereignisses auszuführen. Stripe sendet dieses Ereignis, nachdem der Zahlungsversuch bestätigt wurde und die Gelder garantiert sind.
- Falls eine Kundin/ein Kunde nicht bezahlt, sendet Stripe das payment_intent.failed-Ereignis, und der PaymentIntent wechselt wieder in den Status
requires_
.payment_ method
Verwenden Sie das Dashboard, einen benutzerdefinierten Webhook oder eine Partnerlösung, um diese Ereignisse zu empfangen und Aktionen, wie das Versenden einer Bestellbestätigung per E-Mail, das Erfassen des Verkaufs in einer Datenbank oder das Initiieren eines Versandworkflows, auszuführen.
Manuell
Im Stripe-Dashboard können Sie alle Stripe-Zahlungen anzeigen, Zahlungsbelege per E-Mail versenden, Auszahlungen abwickeln oder fehlgeschlagene Zahlungen erneut durchführen.
Benutzerdefinierter Code
Erstellen Sie einen Webhook-Handler, um Ereignisse zu überwachen und benutzerdefinierte asynchrone Zahlungsabläufe zu erstellen. Mit der Stripe-CLI können Sie Ihre Webhook-Integration lokal testen und Fehler beheben.
Vorgefertigte Apps
Verarbeiten Sie häufige Geschäftsereignisse, wie Automatisierung oder Marketing und Vertrieb durch Integration einer Partneranwendung.
Angefochtene Zahlungen
Das Risiko von Betrug oder Zahlungen, die nicht zugeordnet werden können, ist gering, da Kund/innen jede Zahlung bei ihrer Bank authentifizieren müssen. Dadurch kommt es nicht zu Zahlungsanfechtungen, die Rückbuchungen und damit eine Abbuchung von Ihrem Stripe-Konto nach sich ziehen können.
Fehlgeschlagene Versuche
Wenn ein Zahlungsversuch nicht innerhalb der Frist bestätigt wurde, wechselt der Status des PaymentIntent-Objekts automatisch von processing
zu requires_
. Zudem erhalten Kundinnen und Kunden automatisch eine Rückerstattung, wenn die Gelder nach der Zahlungsfrist eingehen.
Im Durchschnitt schlagen etwa 0,2 % der Zahlungsversuche mit Sofort fehl. Das kann je nach Branche oder Kundenstamm variieren. Unter Umständen empfiehlt es sich, abhängig von Ihrem durchschnittlichen Zahlungsbetrag, der Art der angebotenen Produkte und Dienstleistungen und dem individuellen Risiko Ihres Unternehmens, Bestellungen erst abzuwickeln, nachdem Sie das Ereignis payment_
erhalten haben.
Rückerstattungen
Sofort akzeptiert Rückerstattungsanfragen nur innerhalb von 180 Tagen nach dem Zahlungsdatum. Nach 180 Tagen ist eine Rückerstattung nicht mehr möglich.
Für ausstehende, noch nicht bestätigte Zahlungen können Sie eine Rückerstattung senden. Falls Sie eine vollständige oder teilweise Rückerstattung erstellen, wenn der Status einer PaymentIntent processing
ist, erfolgt die Rückerstattung erst, wenn der Status der PaymentIntent succeeded
ist. Falls der der Status der PaymentIntent nach einem fehlgeschlagenen Zahlungsversuch requires_
ist, werden vollständige und teilweise Rückerstattungen als storniert gekennzeichnet, da das Geld zu keinem Zeitpunkt vom Bankkonto der Kundinnen/Kunden abgegangen ist.