Een terugdraaing annuleert een eerder voltooide betaling — bijvoorbeeld wanneer het verkeerde bedrag werd afgeschreven. Het belangrijkste is tegen welke identificatie je terugdraait: een terugdraaing richt zich op de POI-transactie-ID die de terminal teruggaf in de originele betalingsrespons, niet op je eigen verkoopreferentie.
Vereiste: een actieve sessie en de POITransactionID van de betaling die je wilt terugdraaien.
Je hebt de originele POI-transactie-ID nodig
Wanneer een betaling slaagt, bevat de SuccessRetailerPaymentResponse een POITransactionID in de POI-gegevens. Dat is wat een terugdraaing annuleert. Als je die niet hebt vastgelegd op het moment van de betaling, kun je die opvragen met een transactie-statusaanvraag (zie Handleiding: transactie-status controleren) — maar de beste aanpak is om die op te slaan zodra de betaling slaagt.
Dit is de meest voorkomende fout bij terugdraaien: je eigen saleTransactionId doorgeven waar de originele POI-transactie-ID hoort. Het zijn verschillende identificaties; de terugdraaing moet verwijzen naar de terminal-ID.
De aanroep
viewModelScope.launch {
clientSDK.sendReversalRequest(
RetailerMessageArguments.ReversalRequestMessageArguments(
originalPoiTransactionId = "<POITransactionID van de originele betaling>",
saleTransactionId = "Sale001",
transactionAmountsData =
RetailerMessageArguments.ReversalRequestMessageArguments.TransactionAmountsData(
reversedAmount = BigDecimal("10.00"),
currency = "EUR"
)
)
)
}
-
originalPoiTransactionId— dePOITransactionIDvan de betaling die wordt teruggedraaid. Dit is het belangrijkste veld. -
saleTransactionId— jouw referentie voor deze terugdraaibewerking. -
transactionAmountsData— een genesteldeTransactionAmountsDatametreversedAmountencurrency.
De uitkomst lezen
when (message) {
is SuccessRetailerReversalResponse -> { /* terugdraaing geaccepteerd */ }
is ErrorRetailerReversalResponse -> { /* terugdraaing geweigerd — controleer details */ }
}
Een geweigerde terugdraaing betekent meestal dat de POI-transactie-ID onjuist was, de transactie al was teruggedraaid, of niet langer teruggedraaid kan worden. De foutrespons bevat de details.
Terugdraaing versus annuleren
Deze lossen verschillende problemen op en worden makkelijk door elkaar gehaald:
-
Annuleren (
sendAbortRequest()) stopt een betaling die nog bezig is, vóór host-autorisatie. Er is nog niets om ongedaan te maken. - Terugdraaing annuleert een betaling die al is voltooid. Het geld is overgemaakt; de terugdraaing maakt dat ongedaan.
Als autorisatie heeft plaatsgevonden, is annuleren niet meer van toepassing — draai dan terug. Zie Probleemoplossing: annuleren heeft geen effect na autorisatie.
Gerelateerd
-
Handleiding: een betaling uitvoeren — levert de
POITransactionIDdie je terugdraait. -
Handleiding: transactie-status controleren — haal een
POITransactionIDop die je niet hebt opgeslagen. - Hoe het berichtmodel werkt — het afhandelen van het respons-supertype.
-
API-referentie (
sdk-doc.zip) — volledigeReversalRequestMessageArgumentsenTransactionAmountsDatavelden.