Kaartacquisitie en tweestapsbetalingen

  • Bijgewerkt

 

Kaartacquisitie leest kaartgegevens zonder onmiddellijk een betaling te doen. De belangrijkste toepassing is het dual-transaction (tweestaps) model: stap één verwerft de kaart en verklaart de betaling vooraf; stap twee stuurt een voltooiing die verwijst naar de acquisitie. Zo splits je "lees de kaart" van "breng de kaart in rekening" — handig wanneer het uiteindelijke bedrag niet bekend is op het moment dat de kaart wordt gepresenteerd.

Voorwaarde: een live sessie.


Eenvoudige kaartacquisitie

Lees alleen kaartgegevens:

viewModelScope.launch {
    clientSDK.sendCardAcquisitionRequest(
        RetailerMessageArguments.CardAcquisitionMessageArguments.AcquisitionArguments(
            saleTransactionId = "Sale001",
            loyaltyHandlingType = LoyaltyHandlingType.FORBIDDEN
        )
    )
}
  • saleTransactionId — jouw referentie voor de operatie.
  • loyaltyHandlingType — een LoyaltyHandlingType met precies twee waarden: FORBIDDEN (geen loyaliteitshandling) of ALLOWED (sta loyaliteitsverwerking toe tijdens acquisitie).

De respons is een subtype van RetailerAcquisitionResponse. Een succesvolle respons bevat een POITransactionID — bewaar deze; de voltooiingsstap heeft deze nodig.


De tweestaps- (dual-transaction) flow

Stap 1 — kaart acquireren en betaling vooraf verklaren

DualTransactionArguments acquireren de kaart en verklaren de betaling die zal volgen, zodat de betaalapp kan vastleggen wat nodig is voor de latere voltooiing:

clientSDK.sendCardAcquisitionRequest(
    RetailerMessageArguments.CardAcquisitionMessageArguments.DualTransactionArguments(
        saleTransactionId = "Sale001",
        paymentAmounts = PaymentAmounts(currency = "EUR", amount = BigDecimal("10.00")),
        paymentType = RTRPaymentType.NORMAL,
        loyaltyHandlingType = LoyaltyHandlingType.FORBIDDEN
    )
)

Leg de POITransactionID (en de timestamp) vast uit de SuccessRetailerAcquisitionResponse — deze koppelen stap twee terug aan stap één.

Stap 2 — voltooi de betaling, verwijzend naar de acquisitie

Stuur een betaling met paymentType = COMPLETION die een CardAcquisitionReference bevat, opgebouwd uit de POI-transactie-ID en timestamp van de acquisitie:

clientSDK.sendPaymentRequest(
    RetailerMessageArguments.PaymentRequestMessageArguments.CardAcquisitionCompletionArguments(
        saleTransactionId = "Sale001",
        paymentAmounts = PaymentAmounts(currency = "EUR", amount = BigDecimal("10.00")),
        paymentType = PaymentType.COMPLETION,
        cardAcquisitionReference = RTRCardAcquisitionReference(
            transactionID = "<POITransactionID from step 1>",
            timeStamp = "<timestamp from step 1>"
        )
    )
)

De cardAcquisitionReference van de voltooiing is wat de afschrijving koppelt aan de kaart die in stap één is gelezen. Zonder een vastgelegde acquisitierespons heb je niets om naar te verwijzen — voer eerst stap één uit.


Resultaten uitlezen

when (message) {
    is SuccessRetailerAcquisitionResponse -> { /* leg POITransactionID + timestamp vast */ }
    is ErrorRetailerAcquisitionResponse   -> { /* acquisitie mislukt */ }
    // voltooiing levert een RetailerPaymentResponse op, behandeld als een normale betaling
}

Gerelateerd

  • Gids: een betaling uitvoeren — het alternatief in één stap, en de voltooiingsmechanismen.
  • Hoe het berichtmodel werkt — het vastleggen van de acquisitierespons in de interceptor.
  • API-referentie (sdk-doc.zip) — volledige CardAcquisitionMessageArguments subtypes, LoyaltyHandlingType, en CardAcquisitionReference.

Was dit artikel nuttig?

Aantal gebruikers dat dit nuttig vond: 0 van 0