Eine Zahlung mehrmals erfassen
Mit Multicapture können Sie einen PaymentIntent mehrmals für eine einzelne Autorisierung erfassen, bis zum vollständigen Betrag des PaymentIntent. Sie können diese Option verwenden, wenn Sie Bestellungen mit mehreren Lieferungen haben und Gelder erfassen möchten, während Sie Teile der Bestellung abwickeln.
IC+-Funktion
Multicapture ist Teil der Funktionalität, von dem unsere Nutzer/innen beim Preismodell IC+ profitieren. Wenn Sie einen gemischten Stripe-Preis anbieten und auf diese Funktion zugreifen möchten, kontaktieren Sie unseren Stripe-Support.
Verfügbarkeit
Beachten Sie bei der Verwendung von Multicapture folgende Einschränkungen:
- Multicapture wird nur für Online-Kartenzahlungen unterstützt
- Nur verfügbar mit Amex, Visa, Discover und Mastercard
- Geldbewegungen für separate Zahlungen und Überweisungen, die source_transaction verwenden, werden nicht unterstützt
- Mit Stripe können Sie bis zu 50 Erfassungen für einen einzelnen PaymentIntent durchführen
Beta
Der Zugriff auf Multicapture für Cartes Bancaires ist eine neue Funktion und derzeit auf Beta-Nutzer/innen beschränkt. Nehmen Sie Kontakt mit uns auf here, um Zugriff zu erhalten.
Best Practices
Wenn Sie getrennte Lieferungen für eine Bestellung versenden, Informieren Sie Ihre Endkundinnen und -kunden proaktiv über die Details jeder Lieferung, um Anfragen und Rückbuchungen von Kundinnen/Kunden zu vermeiden, da sie verwirrt sind, weil sie mehrere Transaktionen auf ihren Kontoauszügen sehen. Hier sind einige Best Practices für diese Vorgehensweise:
- Informieren Sie die Kundin/den Kunden zum Zeitpunkt des Bezahlvorgangs vor dem Kauf über das geschätzte Lieferdatum und den Transaktionsbetrag für jede Lieferung.
- Benachrichtigen Sie Ihre Kundinnen und Kunden bei jeder Lieferung, zusammen mit dem Transaktionsbetrag.
- Geben Sie Ihre vollständigen Rückerstattungs- und Stornorichtlinien an.
Diese Best Practices sind möglicherweise je nach Netzwerk im Rahmen der geltenden Netzwerkregeln erforderlich.
Compliance
Sie sind bei Verwendung von Multicapture für die Einhaltung aller geltenden Gesetze, Vorschriften und Netzwerkregeln verantwortlich. Lesen Sie die Regeln für die Kartennetzwerke, für die Sie diese Funktion verwenden möchten, um sicherzustellen, dass Ihre Verkäufe alle geltenden Regeln erfüllen, die je nach Netzwerk variieren. Beispielsweise beschränken die meisten Kartennetzwerke die Nutzung von Multicapture auf Card-Not-Present-Transaktionen für den Verkauf von Waren, die separat versendet werden. Bestimmte Kartennetzwerke erlauben Multicapture für Unternehmen, basierend auf ihrer Branche (zum Beispiel Reisen), während einige Multicapture nicht für Ratenzahlungs- oder Einzahlungs-Workflows zulassen.
Die auf dieser Seite bereitgestellten Informationen im Zusammenhang mit der Einhaltung dieser Anforderungen dienen Ihrer allgemeinen Orientierung und stellen keine rechtliche, steuerliche, buchhalterische oder sonstige professionelle Beratung dar. Wenden Sie sich an eine Fachperson, wenn Sie sich bezüglich Ihrer Verpflichtungen unsicher sind.
Einen nicht erfassten PaymentIntent erstellen und bestätigen
Um anzugeben, dass Autorisierung und Erfassung getrennt werden sollen, geben Sie beim Erstellen der PaymentIntent die capture_method als manual
an. Weitere Informationen zur separaten Autorisierung und Erfassung finden Sie unter Eine Zahlungsmethode zurückstellen.
Verwenden Sie den Parameter if_available
oder never
, um Multicapture für diese Zahlung anzufordern.
if_available
: Der erstellte PaymentIntent lässt mehrere Erfassungen zu, wenn die Zahlungsmethode dies unterstützt.never
: Der erstellte PaymentIntent lässt keine mehrfachen Erfassung zu
In der Antwort enthält das Feld payment_method_details.card.multicapture.status
für latest_charge je nach Zahlungsmethode des Kunden/der Kundin available
oder unavailable
.
// PaymentIntent Response { "id": "pi_xxx", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, "amount_received": 0, ... // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "amount": 1000, "amount_captured": 0, "amount_refunded": 0, "payment_method_details": { "card": { "multicapture": { "status": "available" // or "unavailable" } } } ... } ... }
PaymentIntent erfassen
Für einen PaymentIntent im Zustand requires_capture, bei dem Multicapture available
ist, weist die Festlegung des optionalen Parameters final_capture
auf false
Stripe an, die verbleibenden, nicht erfassten Gelder nicht freizugeben, wenn die Capture API aufgerufen wird. Wenn Sie beispielsweise einen Payment Intent in Höhe von 10 USD bestätigen, bleiben bei der Erfassung von 7 USD mit final_capture=false
die verbleibenden 3 USD autorisiert.
In der PI-Erfassungsantwort werden die Felder amount_capturable und amount_received entsprechend aktualisiert.
// PaymentIntent Response { "id": "pi_ANipwO3zNfjeWODtRPIg", "object": "payment_intent", "amount": 1000, "amount_capturable": 300, // 1000 - 700 = 300 "amount_received": 700, // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "amount": 1000, "amount_captured": 700, "amount_refunded": 0, ... } ... }
Endgültige Erfassung
Der PaymentIntent verbleibt im Status requires_capture
, bis Sie eine der folgenden Maßnahmen ergreifen:
- Setzen Sie
final_capture
auftrue
- Erfassung ohne den Parameter
final_capture
(dafinal_capture
standardmäßig auftrue
eingestellt ist) - Das Autorisierungsfenster läuft ab.
An dieser Stelle gibt Stripe alle verbleibenden Gelder frei, und der PaymentIntent wechselt in den Status succeeded
.
In der PI-Erfassungsantwort werden die Felder amount_capturable und amount_received entsprechend aktualisiert.
// PaymentIntent Response { "id": "pi_ANipwO3zNfjeWODtRPIg", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, // not 100 due to final_capture=true "amount_received": 900, // 700 + 200 = 900 // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "amount": 1000, "amount_captured": 900, "amount_refunded": 0, ... } ... }
Nicht erfasste PaymentIntents gehen in den Status canceled
über, während teilweise erfasste PaymentIntents in den Status succeeded
wechseln.
Integration testen
Verwenden Sie eine Stripe-Testkarte mit einer beliebigen CVC/Prüfzimmer und Postleitzahl und einem beliebigen zukünftigen Ablaufdatum, um Multicapture-Zahlungen zu testen.
Anzahl | Zahlungsmethode | Beschreibung |
---|---|---|
pm_card_visa | Diese Testkarte unterstützt Multicapture. |
Rückerstattungen
Für einen PaymentIntent mit dem Status requires_capture
können Sie beliebig oft Rückerstattungen bis zum gesamten erfassten Betrag abzüglich des gesamten rückerstatteten Betrags durchfühen. Dies ist der amount_received – amount_refunded. Das Feld charge.refunded wird nur dann auf „true“ gesetzt, wenn die endgültige Erfassung durchgeführt wurde und der gesamte amount_received rückerstattet wird.
Stripe unterstützt keine Teilrückerstattungen mit refund_application_fee=true oder reverse_transfer=true. Stattdessen können Sie Teilgebührenrückerstattungen durchführen, indem Sie manuell Teilgebührenerstattungen Transferrückbuchungen mit den Endpoints Rückerstattung von Plattformgebühren und Rückbuchung des Transfers durchführen. Nach Verwendung der Endpoints für die Rückerstattung der Antragsgebühr oder das Übertragungsstorno unterstützt Stripe keine weiteren Rückerstattungen mit refund_application_fee=true bzw. reverse_transfer=true.
Connect
Multicapture unterstützt alle Use cases von Connect mit Ausnahme von Separate Zahlungen und Überweisungen mit dem Parameter source_transaction. Die Parameter application_fee_amount und transfer_data[amount] haben einige zusätzliche Validierungen. Beachten Sie die folgenden Validierungen bei der Implementierung von Multicapture mit Connect:
- Die Festlegung von
application_fee_amount
odertransfer_data[amount]
bei der ersten Erfassung macht sie für alle nachfolgenden Erfassungen erforderlich. Jede Übergabe vonapplication_fee_amount
undtransfer_data[amount]
zum Zeitpunkt der Erfassung setzt die bei der Erstellung, Bestätigung und Aktualisierungen des PaymentIntent übergebenen Werte außer Kraft. - Stripe unterstützt keine Teilrückerstattungen für Multicapture-Zahlungen mit refund_application_fee=true oder reverse_transfer=true. Sie können Teilgebührenrückerstattungen oder Transferrückbuchungen mit den Endpoints Rückerstattung von Plattformgebühren und Rückbuchung des Transfers durchführen.
Webhooks
Aktualisierte Webhooks belasten
Wir senden jedes Mal einen charge.updated Webhook, wenn Sie eine Zahlung erfassen.
Beispiel: Bei der ersten Erfassung einer Multicapture-Zahlung vom Typ Destination Charge mit einem application_fee_amount
aktualisieren wir diese Felder von leeren auf nicht leere Werte.
// charge.updated { "data": { "id": "ch_xxx", "object": "charge", "amount": 1000, "balance_transaction": "txn_xxx", // applicable to all charges "transfer": "tr_xxx", // applicable to destination charges only "application_fee": "fee_xxx", // applicable to Connect only ... }, "previous_attributes": { "balance_transaction": null, // applicable to all charges "transfer": null, // applicable to destination charges only "application_fee": null, // applicable to Connect only } }
payment_intent.amount_capturable_updated
Wir übermitteln payment_intent.amount_capturable_updated bei jeder Erfassung, unabhängig von den Werten amount_to_capture und final_capture.
Wenn wir beispielsweise 1 USD von einem PaymentIntent mit einem Betrag von 10 USD erfassen, wird das Feld amount_capturable des PaymentIntent auf 9 USD aktualisiert.
// payment_intent.amount_capturable_updated { "data": { "id": "pi_xxx", "object": "payment_intent", "amount": 1000, "amount_capturable": 900 // 1000 - 100 = 900 ... }, "previous_attributes": { "amount_capturable": 1000 } }
Zahlungserfassungsereignisse
Wir senden ein charge.captured-Ereignis für die endgültige Erfassung oder am Ende des Autorisierungsfensters, um die Autorisierung des nicht erfassten Betrags rückgängig zu machen. Das Feld captured für eine Zahlung wird erst nach einer endgültigen Erfassung oder einem Autorisierungsstorno true
.
Wenn wir beispielsweise eine Erfassung mit amount=0
und final_capture=true
durchführen, ändert sich das Attribut captured der Zahlung von false auf true.
// charge.captured { "data": { "id": "ch_xxx", "object": "charge", "captured": true ... }, "previous_attributes": { "captured": false } }
Rückerstattungs-Webhooks
Multicapture-Webhooks für die Rückerstattung unterscheiden sich nicht von Webhooks ohne Multicapture.
Bei jeder Teilrückerstattung senden wir ein charge.refunded-Ereignis. Bei verbundenen Konten senden wir zusätzlich die Ereignisse application_fee.refunded, wenn wir Anmeldegebühren erstatten, und transfer.reversed, wenn wir Übertragungen stornieren.