Een transactie terugdraaien

  • Bijgewerkt

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 — de POITransactionID van de betaling die wordt teruggedraaid. Dit is het belangrijkste veld.
  • saleTransactionIdjouw referentie voor deze terugdraaibewerking.
  • transactionAmountsData — een genestelde TransactionAmountsData met reversedAmount en currency.

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 POITransactionID die je terugdraait.
  • Handleiding: transactie-status controleren — haal een POITransactionID op die je niet hebt opgeslagen.
  • Hoe het berichtmodel werkt — het afhandelen van het respons-supertype.
  • API-referentie (sdk-doc.zip) — volledige ReversalRequestMessageArguments en TransactionAmountsData velden.

Was dit artikel nuttig?

Aantal gebruikers dat dit nuttig vond: 0 van 0