Eine Zahlung mehrmals erfassen
Erfassen Sie einen PaymentIntent mehrmals bis zum autorisierten Betrag.
Mit Multicapture können Sie einen PaymentIntent mehrmals für eine einzelne Autorisierung erfassen, bis zum vollständigen Betrag des PaymentIntent. Sie können ihn 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 ein gemischtes Stripe-Preismodell anbieten und auf diese Funktion zugreifen möchten, wenden Sie sich an den Stripe Support.
Verfügbarkeit
Beachten Sie bei der Verwendung von Multicapture folgende Einschränkungen:
- Es werden nur Online-Kartenzahlungen unterstützt
- Verfügbar mit Amex, Visa, Discover, Mastercard, Cartes Bancaires, Diners Club, China UnionPay (CUP) und Japan Credit Bureau (JCB).
- 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
CUP- und JCB-Unterstützung
CUP-Mehrfacherfassung ist nur in den USA verfügbar. JCB-Mehrfacherfassung ist nur in den USA, in Kanada, Australien und Neuseeland verfügbar.
Best Practices
Wenn Sie getrennte Sendungen für eine Bestellung versenden, benachrichtigen Sie Ihre Endkundinnen und -kunden proaktiv über die Details jeder Lieferung. Auf diese Weise werden Anfragen und Rückbuchungen von Kundinnen/Kunden vermieden, da sie verwirrt sind, weil sie mehrere Transaktionen auf ihren Kontoauszügen sehen. Verwenden Sie die folgenden Best Practices bei der Benachrichtigung von Kundinnen und Kunden:
- Informieren Sie sie zum Zeitpunkt des Bezahlvorgangs vor dem Kauf über das geschätzte Lieferdatum und den Transaktionsbetrag für jede Lieferung.
- Benachrichtigen Sie sie bei jeder Lieferung, zusammen mit dem Transaktionsbetrag.
- Geben Sie Ihre vollständigen Rückerstattungs- und Stornorichtlinien an.
Compliance
Sie sind bei Verwendung von Mehrfacherfassung für die Einhaltung aller geltenden Gesetze, Vorschriften und Netzwerkregeln verantwortlich. Informieren Sie sich über die Regeln der Kartennetze, mit denen Sie diese Funktion nutzen möchten, um sicherzustellen, dass Ihre Verkäufe allen geltenden Regeln entsprechen, die je nach Netzwerk unterschiedlich sind. Beispielsweise beschränken die meisten Kartennetzwerke die Nutzung von Mehrfacherfassung auf Transaktionen ohne Karte für den Verkauf von Waren, die separat versendet werden. Bestimmte Kartennetzwerke erlauben die Mehrfacherfassung für Unternehmen, basierend auf ihrer Branche (zum Beispiel Reisen), während andere die Mehrfacherfassung 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 fachliche 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 des 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_
oder never
, um Multicapture für diese Zahlung anzufordern.
if_
: Der erstellte PaymentIntent lässt mehrere Erfassungen zu, wenn die Zahlungsmethode dies unterstützt.available never
: Der erstellte PaymentIntent lässt keine mehrfachen Erfassung zu
In der Antwort enthält das Feld payment_
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
Bei einem PaymentIntent im Status requires_capture, in dem die Mehrfacherfassung available
ist, wird Stripe durch Angabe des optionalen Parameters final_
auf false
angewiesen, die verbleibenden, nicht erfassten Gelder freizugeben, wenn die Erfassungs-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_
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_
, bis Sie eine der folgenden Maßnahmen ergreifen:
- Setzen Sie
final_
aufcapture true
- Erfassung ohne den Parameter
final_
(dacapture final_
standardmäßig aufcapture true
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.
Ihre 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.
Die Nummer | Zahlungsmethode | Beschreibung |
---|---|---|
pm_ | Diese Testkarte unterstützt die Mehrfacherfassung. | |
pm_ | Cartes Bancaires- oder Visa-Testkarte, die die Mehrfacherfassung unterstützt. |
Rückerstattungen
Bei einem PaymentIntent mit dem Status requires_
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 wechselt erst auf true
, wenn die endgültige Erfassung durchgeführt wurde und die 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 und 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 Plattformgebühr oder das Übertragungsstorno unterstützt Stripe keine weiteren Rückerstattungen mit refund_
or reverse_
.
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_
oderfee_ amount transfer_
bei der ersten Erfassung macht sie für alle nachfolgenden Erfassungen erforderlich. Jede Übergabe vondata[amount] application_
undfee_ amount transfer_
zum Zeitpunkt der Erfassung setzt die bei der Erstellung, Bestätigung und Aktualisierungen des PaymentIntent übergebenen Werte außer Kraft.data[amount] - 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, wenn Sie eine Zahlung erfassen, einen charge.updated-Webhook.
Beispiel: Bei der ersten Erfassung einer Multicapture-Zahlung vom Typ Destination Charge mit einem application_
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_
und final_
.
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_
durchführen, ändert sich das Attribut captured der Zahlung von false in 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 refund.created-Ereignis. Bei verbundenen Konten senden wir auch application_fee.refunded-Ereignisse, wenn wir Plattformgebühren erstatten, und transfer.reversed-Ereignisse, wenn wir Transfers zurückbuchen.