Destination Charges erstellen
Erstellen Sie Zahlungen auf Ihrem Plattformkonto, ziehen Sie Gebühren ein und übertragen Sie die verbleibenden Gelder sofort auf Ihre verbundenen Konten.
Erstellen Sie Destination Charges, wenn Kundinnen/Kunden mit Ihrer Plattform im Zusammenhang mit Produkten oder Dienstleistungen interagieren, die von Ihren verbundenen Konten zur Verfügung gestellt werden, und Sie sofort Gelder an Ihre verbundenen Konten überweisen. Mit diesem Zahlungstyp:
- Sie erstellen eine Abbuchung auf dem Konto Ihrer Plattform.
- Sie bestimmen, ob diese Gelder teilweise oder vollständig auf das verbundene Konto übertragen werden sollen.
- Ihr Kontoguthaben wird mit Stripe-Gebühren, Rückerstattungen und Rückbuchungen belastet.
Diese Art der Zahlung eignet sich optimal für Marktplätze wie Airbnb, einen Marktplatz für Unterkünfte, oder Lyft, eine Mitfahr-App.
Destination Charges werden nur unterstützt, wenn sich Ihre Plattform und das verbundene Konto im selben Land befinden. Für die regionsübergreifende Unterstützung müssen Sie den/die Abwicklungshändler/in für das verbundene Konto mit dem Parameter on_behalf_of für den Payment Intent oder andere Szenarien mit gültigen grenzüberschreitenden Transfers angeben. Wir empfehlen, Destination Charges für verbundene Konten zu verwenden, die Zugriff auf das Express-Dashboard oder keinen Zugriff auf das Dashboard haben.
Private Vorschau
Sie können Destination Charges ohne den Parameter on_
verwenden, wenn sich Ihre Plattform und das verbundene Konto in verschiedenen Ländern (innerhalb der USA, des Vereinigten Königreichs und der EU) befinden. Kontaktieren Sie uns, um frühzeitigen Zugriff zu erhalten.
Erstellen Sie eine nutzerdefinierte Zahlungsintegration, indem Sie Komponenten der Nutzeroberfläche auf Ihrer Website mit Stripe Elements einbetten. Der clientseitige und der serverseitige Code erstellen ein Checkout-Formular, das verschiedene Zahlungsmethoden akzptiert. Sehen Sie sich diese Integration im Vergleich zu anderen Integrationstypen von Stripe an.
Integrationsaufwand
Integrationstyp
Komponenten der Nutzeroberfläche in einem nutzerdefinierten Zahlungsablauf kombinieren
Anpassung der Nutzeroberfläche
Anpassung auf CSS-Ebene mit der Appearance API
Registrieren Sie sich zunächst für ein Stripe-Konto.
Verwenden Sie unsere offiziellen Bibliotheken, um von Ihrer Anwendung aus auf die Stripe API zuzugreifen:
PaymentIntent erstellenServerseitig
Stripe verwendet ein PaymentIntent-Objekt, um Ihre Absicht darzustellen, eine Kundenzahlung einzuziehen. Dabei werden die Abbuchungsversuche und Zahlungsstatusänderungen während des gesamten Vorgangs dokumentiert.
Die Zahlungsmethoden, die Kundinnen/Kunden während des Bezahlvorgangs angezeigt werden, sind ebenfalls im PaymentIntent enthalten. Sie können Zahlungsmethoden durch Stripe automatisch aus Ihren Dashboard-Einstellungen abrufen lassen oder sie manuell auflisten.
Sofern Ihre Integration keine codebasierte Option zum Anbieten von Zahlungsmethoden erfordert, listen Sie Zahlungsmethoden nicht manuell auf. Stripe wertet die Währung, die Einschränkungen für Zahlungsmethoden und andere Parameter aus, um die Liste der unterstützten Zahlungsmethoden zu ermitteln. Stripe priorisiert Zahlungsmethoden, die die Konversion steigern und die für die Währung und den Standort des Kunden/der Kundin am relevantesten sind. Stripe verbirgt Zahlungsmethoden mit niedrigerer Priorität in einem Überlaufmenü.
Client-Geheimnis abrufen
Im PaymentIntent ist ein Client-Geheimnis enthalten, das auf dem Client verwendet wird, um Zahlungen sicher abzuschließen. Es gibt verschiedene Verfahren zum Übergeben des Client-Geheimnisses an den Client.
Zahlungsdaten erfassenClientseitig
Erfassen Sie Zahlungsdetails auf dem Client mit dem Payment Element. Das Payment Element ist eine vorgefertigte Komponente der Nutzeroberfläche, die die Erfassung von Zahlungsdaten für eine Vielzahl von Zahlungsmethoden vereinfacht.
Das Payment Element enthält einen iFrame, der Zahlungsinformationen über eine HTTPS-Verbindung sicher an Stripe sendet. Vermeiden Sie es, das Payment Element in einem anderen iFrame zu platzieren, da einige Zahlungsmethoden die Weiterleitung an eine andere Seite zur Zahlungsbestätigung verlangen.
Wenn Sie sich für die Verwendung eines Iframes entscheiden und Apple Pay oder Google Pay akzeptieren möchten, muss das allow-Attribut des iFrame auf "payment *"
gesetzt werden.
Die Adresse der Bezahlseite muss mit https://
beginnen, nicht mit http://
, damit Ihre Integration funktioniert. Sie können Ihre Integration ohne HTTPS testen. Denken Sie jedoch daran, dieses zu aktivieren, wenn Sie zur Annahme von Live-Zahlungen bereit sind.
Das Payment Element rendert ein dynamisches Formular, mit dem Kund/innen ihre gewünschte Zahlungsmethode auswählen können. Für jede Zahlungsmethode fordert das Formular die Kund/innen automatisch auf, alle erforderlichen Zahlungsdaten einzugeben.
Erscheinungsbild anpassen
Passen Sie das Payment Element an das Design Ihrer Website an, indem Sie beim Erstellen des Elements
-Anbieters das Erscheinungsbild-Objekt an options
übergeben.
Adressen einholen
Standardmäßig erfasst das Payment Element nur die erforderlichen Angaben zur Rechnungsadresse. Verwenden Sie das Address Element, um die vollständige Rechnungsadresse (z. B. zur Berechnung der Steuer für digitale Waren und Dienstleistungen) oder die Versandadresse einer Kundin/eines Kunden zu erfassen.
Apple Pay-Händler-Token anfordern
Wenn Sie Ihre Integration für die Annahme von Zahlungen per Apple Pay konfiguriert haben, empfehlen wir die Konfiguration der Apple Pay-Schnittstelle um ein Händler-Token zurückzugeben, um von Händlern initiierte Transaktionen (MIT) zu ermöglichen. Fordern Sie den entsprechenden Händler-Token-Typ im Payment Element an.
Zahlung an Stripe sendenClientseitig
Verwenden Sie stripe.confirmPayment, um die Zahlung mit Details aus dem Payment Element vorzunehmen. Geben Sie für diese Funktion eine return_url an, um anzugeben, wohin Stripe die Nutzer/innen nach Durchführung der Zahlung weiterleiten soll. Ihre Nutzer/innen werden möglicherweise zunächst an eine zwischengeschaltete Seite weitergeleitet, wie z. B. eine Bankautorisierungsseite, bevor sie zur return_
weitergeleitet werden. Kartenzahlungen werden sofort zur return_
weitergeleitet, wenn eine Zahlung erfolgreich war.
Wenn Sie Kartenzahlungen nach Abschluss der Zahlung nicht weiterleiten möchten, können Sie redirect auf if_
festlegen. Dadurch werden nur Kundinnen/Kunden weitergeleitet, die mit weiterleitungsbasierten Zahlungsmethoden bezahlen.
Achten Sie darauf, dass die return_
auf eine Seite Ihrer Website verweist, die den Status der Zahlung angibt. Wenn Stripe den/die Kund/in an die return_
weiterleitet, stellen wir die folgenden URL-Abfrageparameter bereit:
Parameter | Beschreibung |
---|---|
payment_ | Die eindeutige ID für die PaymentIntent . |
payment_ | Das Client-Geheimnis des PaymentIntent -Objekts. |
Vorsicht
Wenn Sie über Tools verfügen, die die Browser-Sitzung der Kund/innen verfolgen, müssen Sie möglicherweise die Domain stripe.
zur Referenz-Ausschlussliste hinzufügen. Weiterleitungen haben zur Folge, dass einige Tools neue Sitzungen erstellen. Dies wiederum hindert Sie daran, die gesamte Sitzung zu verfolgen.
Verwenden Sie einen der Abfrageparameter, um den PaymentIntent abzurufen. Überprüfen Sie den Status des PaymentIntent, um zu entscheiden, was Ihren Kundinnen/Kunden angezeigt werden soll. Sie können bei der Angabe der return_
auch Ihre eigenen Abfrageparameter anhängen, die während des Weiterleitungsvorgangs erhalten bleiben.
Ereignisse nach Zahlung verarbeitenServerseitig
Stripe sendet ein payment_intent.succeeded-Ereignis, wenn die Zahlung abgeschlossen ist. Verwenden Sie Webhook-Tool im Dashboard oder folgen Sie der Webhook-Anleitung, um diese Ereignisse zu empfangen und führen Sie Aktionen aus, wie beispielsweise das Senden einer Bestellbestätigung per E-Mail, das Protokollieren des Verkaufs in der Datenbank oder das Starten eines Versand-Workflows.
Überwachen Sie diese Ereignisse, statt auf einen Callback vom Client zu warten. Auf dem Client könnten die Kund/innen das Browserfenster schließen oder die App beenden, bevor der Callback erfolgt ist. Bösartige Clients könnten dann die Antwort manipulieren. Wenn Sie Ihre Integration so einrichten, dass sie asynchrone Ereignisse überwacht, können Sie verschiedene Arten von Zahlungsmethoden mit einer einzelnen Integration akzeptieren.
Neben der Abwicklung des payment_
-Ereignisses empfehlen wir die Abwicklung von diesen weiteren Ereignissen, wenn Sie Zahlungen mit dem Payment Element erfassen:
Ereignis | Beschreibung | Aktion |
---|---|---|
payment_intent.succeeded | Wird gesendet, wenn Kundinnen und Kunden eine Zahlung erfolgreich abgeschlossen haben. | Senden Sie den Kund/innen eine Auftragsbestätigung und wickeln Sie die Bestellung ab. |
payment_intent.processing | Wird gesendet, wenn eine/e Kund/in eine Zahlung erfolgreich veranlasst hat, die Zahlung aber noch nicht abgeschlossen ist. Dieses Ereignis wird am häufigsten gesendet, wenn der Kunde/die Kundin eine Bankabbuchung veranlasst. In Zukunft folgt darauf entweder ein payment_ - oder ein payment_ -Ereignis. | Senden Sie eine Bestellbestätigung an die Kund/innen, in der angegeben ist, dass die Zahlung noch aussteht. Bei digitalen Waren können Sie die Bestellung abwickeln, bevor Sie darauf warten, dass die Zahlung erfolgt. |
payment_intent.payment_failed | Wird gesendet, wenn ein Kunde/eine Kundin einen Zahlungsversuch durchführt, die Zahlung jedoch fehlschlägt. | Wenn eine Zahlung von processing zu payment_ übergeht, bieten Sie der Kundin/dem Kunden einen weiteren Zahlungsversuch an. |
Integration testen
Hier finden Sie weitere Informationen zum Testen Ihrer Integration.
Gebühren erheben
Anstatt den vollen Transaktionsbetrag auf ein verbundenes Konto zu überweisen, kann Ihre Plattform bei der Verarbeitung einer Zahlung beschließen, einen Teil des Transaktionsbetrags in Form von Gebühren zu erheben. Sie können die Preise für Gebühren auf zwei verschiedene Arten festlegen:
Mit dem Plattform-Preistool können Sie Preisregeln für Plattformgebühren festlegen und testen. Diese No-Code-Funktion im Stripe-Dashboard ist derzeit nur für Plattformen verfügbar, die für die Zahlung von Stripe-Gebühren verantwortlich sind.
Legen Sie intern Ihre Preisregeln fest und legen Sie Gebühren direkt in einem PaymentIntent fest, entweder mit dem Parameter application_fee_amount oder transfer_data[amount]. Die mit dieser Methode festgelegten Gebühren überschreiben die im Plattform-Preistool angegebene Preislogik.
Abwicklungshändler angeben
Der Abwicklungshändler ist abhängig von den Funktionen, die für ein Konto eingerichtet sind, und davon, wie eine Zahlung erstellt wird. Der Abwicklungshändler bestimmt, wessen Informationen für die Durchführung der Zahlung verwendet werden. Dazu gehört die Zahlungsbeschreibung in der Abrechnung (entweder die der Plattform oder die des verbundenen Kontos), die auf dem Kreditkarten- oder Kontoauszug des Kunden/der Kundin für diese Zahlung angezeigt wird.
Durch die Angabe des Abwicklungshändlers können Sie genauer festlegen, für wen Zahlungen erstellt werden sollen. Einige Plattformen sind beispielsweise vorzugsweise der Abwicklungshändler, da Kundinnen/Kunden direkt mit ihrer Plattform interagieren (zum Beispiel On-Demand-Plattformen). Manche Plattformen verfügen jedoch über verbundene Konten, die stattdessen direkt mit Kundinnen/Kunden interagieren (zum Beispiel ein Ladengeschäft auf einer E-Commerce-Plattform). Bei diesen Szenarien ist es möglicherweise sinnvoller, wenn das verbundene Konto der Abwicklungshändler ist.
Sie können den Parameter on_
auf die ID eines verbundenen Kontos setzen, um dieses Konto zum Abwicklungshändler für die Zahlung zu machen. Bei Verwendung von on_
:
- Zahlungen werden im Land und in der Abwicklungswährung des verbundenen Kontos abgewickelt.
- Es wird die Gebührenstruktur für das Land des verbundenen Kontos verwendet.
- Die Zahlungsbeschreibung des verbundenen Kontos wird auf der Kreditkartenabrechnung des Kunden/der Kundin angezeigt.
- Wenn sich das verbundene Konto in einem anderen Land als die Plattform befindet, werden die Adresse und die Telefonnummer des verbundenen Kontos auf der Kreditkartenabrechnung des Kunden/der Kundin angezeigt.
- Wie viele Tage ein ausstehendes Guthaben vor der Auszahlung zurückgehalten wird, hängt von der Einstellung delay_days auf dem verbundenen Konto ab.
Wenn on_
weggelassen wird, ist die Plattform das für die Zahlung verantwortliche Unternehmen.
Vorsicht
Der Parameter on_
wird nur für verbundene Konten mit Zahlungsfunktionen wie card_payments unterstützt. Konten, denen der Empfänger-Rahmenvertrag zugrunde liegt, können keine card_
oder andere Zahlungsfunktionen anfordern.
Rückerstattungen ausstellen
Wenn Sie die Payment Intents API verwenden, sollten Rückerstattungen für die zuletzt erstellte Zahlung ausgestellt werden.
Im Plattformkonto erstellte Zahlungen können mit dem geheimen Schlüssel des Plattformkontos rückerstattet werden. Bei Rückerstattung einer Zahlung mit einem transfer_
bleiben die Gelder standardmäßig auf dem Zielkonto, auf das sie überwiesen wurden, sodass das Plattformkonto den negativen Saldo aus der Rückerstattung abdecken muss. Um die Gelder zur Abdeckung der Rückerstattung von dem verbundenen Konto zurückzuziehen, setzen Sie den Parameter reverse_
beim Erstellen der Rückerstattung auf true
:
Standardmäßig wird die gesamte Zahlung rückerstattet. Sie können jedoch auch eine Teilrückerstattung erstellen, indem Sie einen amount
-Wert als positive Ganzzahl festlegen.
Wenn die Rückerstattung zur Folge hat, dass die gesamte Zahlung zurückerstattet wird, wird die gesamte Übertragung rückgängig gemacht. Andernfalls wird nur ein proportionaler Betrag der Übertragung rückgängig gemacht.
Plattformgebühren zurückerstatten
Wenn eine Zahlung mit einer Plattformgebühr zurückerstattet wird, behält das Plattformkonto standardmäßig die Gelder aus der Plattformgebühr ein. Um die Plattformgebühr auf das verbundene Konto zurück zu übertragen, legen Sie den Parameter refund_application_fee auf true
fest, wenn Sie die Rückerstattung erstellen:
Beachten Sie Folgendes: Wenn Sie die Plattformgebühr für eine Destination Charge erstatten, müssen Sie auch die Übertragung rückgängig machen. Wenn die Rückerstattung zur Folge hat, dass die gesamte Zahlung zurückerstattet wird, wie die gesamte Plattformgebühr ebenfalls zurückerstattet. Andernfalls wird nur ein proportionaler Betrag der Plattformgebühr rückerstattet.
Alternativ können Sie den refund_
-Wert false angeben und die Plattformgebühr separat über die API zurückerstatten.
Fehlgeschlagene Rückerstattungen
Wenn eine Rückerstattung fehlschlägt oder von Ihnen storniert wird, wird der Betrag der fehlgeschlagenen Rückerstattung dem Stripe-Guthaben gutgeschrieben. Erstellen Sie eine Übertragung, um das Geld nach Bedarf auf das verbundene Konto zu überweisen.
Umgang mit Zahlungsanfechtungen
Für Destination Charges, mit oder ohne on_
, belastet Stripe angefochtene Beträge und Gebühren von Ihrem Plattformkonto.
Wir empfehlen, einen Webhook einzurichten, um durch Zahlungsanfechtungen erstellte Ereignisse zu überwachen. In diesem Fall können Sie versuchen, Gelder von dem verbundenen Konto zurückzuerhalten, indem Sie die Überweisung über das Dashboard oder durch Erstellen einer Rückbuchung rückgängig machen.
Wenn das verbundene Konto einen negativen Saldo aufweist, versucht Stripe, das externe Konto zu belasten, wenn debit_
auf true
festgelegt ist.
Wenn Sie der Zahlungsanfechtung widersprechen und gewinnen, können Sie die Gelder, die Sie zuvor zurückgebucht haben, auf das verbundene Konto zurücküberweisen. Wenn Ihre Plattform nicht über ausreichendes Guthaben verfügt, schlägt die Übertragung fehl. Verhindern Sie Fehler aufgrund unzureichendem Guthaben, indem Sie Gelder auf Ihr Stripe-Guthaben einzahlen.
Häufiger Fehler
Die erneute Überweisung einer früheren Rückbuchung unterliegt Beschränkungen für grenzüberschreitende Überweisungen. Das bedeutet, Sie haben möglicherweise keine Möglichkeit, eine Rückzahlung auf Ihr verbundenes Konto durchzuführen. Warten Sie stattdessen damit, angefochtene grenzüberschreitender Zahlungstransfers für Destination Charges mit on_
doch noch als Einnahmen zu buchen, bis eine Zahlungsanfechtung zu Ihren Ungunsten entschieden wurde.