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— eenLoyaltyHandlingTypemet precies twee waarden:FORBIDDEN(geen loyaliteitshandling) ofALLOWED(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) — volledigeCardAcquisitionMessageArgumentssubtypes,LoyaltyHandlingType, enCardAcquisitionReference.