Kartové údaje
Kartové platby prebiehajú prostredníctvom zabezpečených vstupných komponentov — Secure Fields. Tieto komponenty zaisťujú bezpečné zadávanie, validáciu a ochranu kartových údajov. Hostiteľská aplikácia nikdy nemá prístup k citlivým údajom v nechránenej podobe.
Secure Fields
Knižnica poskytuje štyri komponenty na zadávanie údajov v platobnom formulári:
SecurePanField
Pole na zadanie čísla karty (PAN — Primary Account Number).
- Prijíma iba číslice
- Automaticky detekuje kartovú sieť (Visa, Mastercard)
- Formátuje číslo karty s mezerami dle kartové siete (napr.
4111 1111 1111 1111) - Omezuje délku vstupu podle detekované kartové siete
- Validuje číslo karty pomocou Luhnovho algoritmu
- Podporuje systémový autofill
- Sprístupňuje vlastnosť
last4— posledné 4 číslice karty (bezpečné na zobrazenie v UI)
import cz.comgate.sdk.compose.*
val panState = rememberSecurePanFieldState()
SecurePanField(
state = panState,
modifier = Modifier.fillMaxWidth()
)
SecureExpiryField
Pole na zadanie dátumu expirácie karty.
- Prijíma iba číslice
- Automaticky formátuje vstup v tvare MM/YY
- Validuje mesiac (1–12) a kontroluje, či karta nie je expirovaná
- Podporuje autofill vo formátoch MMYY aj MMYYYY
val expiryState = rememberSecureExpiryFieldState()
SecureExpiryField(
state = expiryState,
modifier = Modifier.fillMaxWidth()
)
SecureCvvField
Pole na zadanie bezpečnostného kódu karty (CVV/CVC).
- Prijíma iba číslice
- Dĺžka sa automaticky prispôsobuje detekovanej kartovej sieti
- Validuje minimálnu požadovanú dĺžku
val cvvState = rememberSecureCvvFieldState()
SecureCvvField(
state = cvvState,
modifier = Modifier.fillMaxWidth()
)
SecureFullNameField
Pole na zadanie mena a priezviska platiteľa.
- Prijíma textový vstup (vrátane mezer)
- Podporuje systémový autofill mena
- Je validné pri neprázdnej hodnote
- Po pripojení k
ComgateSecureSessionsa jeho hodnota automaticky použije akofullName
import androidx.compose.runtime.DisposableEffect
import cz.comgate.sdk.compose.*
val fullNameState = rememberSecureFullNameFieldState()
DisposableEffect(session) {
fullNameState.attachTo(session)
onDispose { fullNameState.detachFrom(session) }
}
SecureFullNameField(
state = fullNameState,
modifier = Modifier.fillMaxWidth()
)
PaymentParams.fullName má vždy prednosť pred hodnotou zo SecureFullNameField — ak je fullName v PaymentParams vyplnený, pole SecureFullNameField nie je vyžadované. Ak je fullName prázdny, použije sa hodnota z pripojeného poľa. Ak sú prázdne obidve, platba zlyhá s chybou MISSING_CARDHOLDER_NAME.