PaymentResult

sealed interface PaymentResult

The terminal (or near-terminal) outcome of a payment attempt, as reported by the client SDK.

Critical invariant this app teaches: a Success here is a hint, not proof. Only the backend — after signature verification and webhook reconciliation — decides the true state. The orchestrator always confirms server-side before trusting a client Success.

Inheritors

Types

Link copied to clipboard
data class Cancelled(val raw: RedactedPayload = RedactedPayload.EMPTY) : PaymentResult
Link copied to clipboard
data class Failure(val code: FailureCode, val message: UiText, val raw: RedactedPayload) : PaymentResult
Link copied to clipboard
data class Pending(val reason: PendingReason, val verification: Map<String, String> = emptyMap(), val raw: RedactedPayload = RedactedPayload.EMPTY) : PaymentResult

Not yet terminal — e.g. UPI SUBMITTED. Requires polling the backend to resolve.

Link copied to clipboard
data class Success(val paymentId: String, val verification: Map<String, String>, val raw: RedactedPayload) : PaymentResult

Properties

Link copied to clipboard
abstract val raw: RedactedPayload