SDK models

Classes reference

StreamPay services are compatible with devices running Android API 26 or higher, otherwise, UNSUPPORTED_SDK_VERSION will be returned.

@Parcelize
@Serializable
data class TransactionReceipt(

    @SerialName("id")
    val receipt_id: String,

    @SerialName("transaction_uuid")
    val transaction_uuid: String,

    @SerialName("merchant")
    val merchant: Merchant,

    @SerialName("start_date")
    val start_date: String,

    @SerialName("start_time")
    val start_time: String,

    @SerialName("card_scheme_sponsor")
    val card_scheme_sponsor: String,

    @SerialName("tid")
    val tid: String,

    @SerialName("system_trace_audit_number")
    val system_trace_audit_number: String,

    @SerialName("pos_software_version_number")
    val pos_software_version_number: String,

    @SerialName("retrieval_reference_number")
    val retrieval_reference_number: String,

    @SerialName("card_scheme")
    val card_scheme: NameField<String>,

    @SerialName("transaction_type")
    val transaction_type: NameField<String>,

    @SerialName("pan")
    val pan: String,

    @SerialName("card_expiration")
    val card_expiration: String,

    @SerialName("amount_authorized")
    val amount_authorized: LabelField<String>,

    @SerialName("amount_other")
    val amount_other: LabelField<String>,

    @SerialName("currency")
    val currency: LocalizationField,

    @SerialName("status_message")
    val status_message: LocalizationField,

    @SerialName("is_approved")
    val is_approved: Boolean,

    @SerialName("is_refunded")
    val is_refunded: Boolean,

    @SerialName("is_reversed")
    val is_reversed: Boolean,

    @SerialName("approval_code")
    val approval_code: LabelField<String>?,

    @SerialName("verification_method")
    val verification_method: LocalizationField,

    @SerialName("end_date")
    val end_date: String,

    @SerialName("end_time")
    val end_time: String,

    @SerialName("receipt_line_one")
    val receipt_line_one: LocalizationField,

    @SerialName("receipt_line_two")
    val receipt_line_two: LocalizationField,

    @SerialName("thanks_message")
    val thanks_message: LocalizationField,

    @SerialName("save_receipt_message")
    val save_receipt_message: LocalizationField,

    @SerialName("entry_mode")
    val entry_mode: String,

    @SerialName("action_code")
    val action_code: String,

    @SerialName("application_identifier")
    val application_identifier: String,

    @SerialName("terminal_verification_result")
    val terminal_verification_result: String,

    @SerialName("transaction_state_information")
    val transaction_state_information: String,

    @SerialName("cardholader_verfication_result")
    val cardholader_verfication_result: String,

    @SerialName("cryptogram_information_data")
    val cryptogram_information_data: String,

    @SerialName("application_cryptogram")
    val application_cryptogram: String,

    @SerialName("kernel_id")
    val kernel_id: String,

    @SerialName("payment_account_reference")
    val payment_account_reference: String?,

    @SerialName("pan_suffix")
    val pan_suffix: String?,

    @SerialName("created_at")
    val created_at: String? = "",

    @SerialName("updated_at")
    val updated_at: String? = "",

    @SerialName("qr_code")
    val qr_code: String

): Parcelable

@Parcelize
@Serializable
data class Merchant(

    @SerialName("id")
    val id: String,

    @SerialName("name")
    val name: LocalizationField,

    @SerialName("address")
    val address: LocalizationField,

    @SerialName("category_code")
    val category_code: String

): Parcelable

Card Scheme

ID
Network

MC

Mastercard - credit

DM

Maestro

P1

Mada

VC

Visa

UP

Union Pay

DC

Discover

JC

JCB

AX

American Express

GN

GCCNET

Setup Errors

sealed class SetupFailure {
    object AlreadyInstalled : SetupFailure()
    object NotInstalled : SetupFailure()
    data class AuthenticationFailed(val message: String) : SetupFailure()
    data class InvalidStatus(val status: List<StatusCheckError>) : SetupFailure()
}

Purchase Errors

sealed class PurchaseFailure {
    data class PurchaseDeclined(val receipt: TransactionReceipt?): PurchaseFailure()
    data class PurchaseRejected(val message: String): PurchaseFailure()
    data class AuthenticationFailed(val message: String): PurchaseFailure()
    data class InvalidStatus(val status: List<StatusCheckError>): PurchaseFailure()
    object GeneralFailure: PurchaseFailure()
}

Refund Errors

sealed class RefundFailure {
    data class RefundDeclined(val receipt: TransactionReceipt?): RefundFailure()
    data class RefundRejected(val message: String): RefundFailure()
    data class AuthenticationFailed(val message: String): RefundFailure()
    data class InvalidStatus(val status: List<StatusCheckError>): RefundFailure()
    object GeneralFailure: RefundFailure()
}

Reconcile Errors

sealed class ReconcileFailure {
    data class FailureMessage(val message: String) : ReconcileFailure()
    data class AuthenticationFailed(val message: String): ReconcileFailure()
    data class InvalidStatus(val status: List<StatusCheckError>): ReconcileFailure()
    object GeneralFailure: ReconcileFailure()
}

Reconcile Data

@Parcelize
@Serializable
data class ReconciliationReceipt(

    @SerialName("id")
    val id: String,

    @SerialName("date")
    val date: String,

    @SerialName("time")
    val time: String,

    @SerialName("is_balanced")
    val is_balanced: LabelField<Boolean>,

    @SerialName("details")
    val details: ReconciliationDetails,

    @SerialName("schemes")
    val schemes: List<ReconciliationSchemes> = emptyList(),

    @SerialName("currency")
    val currency: LocalizationField,

    @SerialName("qr_code")
    val qr_code: String

): Parcelable

@Parcelize
@Serializable
data class ReconciliationDetails(

    @SerialName("purchase")
    val purchase: ReconciliationLabelField,

    @SerialName("refund")
    val refund: ReconciliationLabelField,

    @SerialName("purchase_reversal")
    val purchase_reversal: ReconciliationLabelField,

    @SerialName("refund_reversal")
    val refund_reversal: ReconciliationLabelField,

    @SerialName("total")
    val total: ReconciliationLabelField

) : Parcelable

@Parcelize
@Serializable
data class ReconciliationSchemes(

    @SerialName("name")
    val name: LabelField<String>,

    @SerialName("pos")
    val pos: ReconciliationSchemesDetails,

    @SerialName("host")
    val host: ReconciliationSchemesDetails

) : Parcelable

@Parcelize
@Serializable
data class ReconciliationSchemesDetails(

    @SerialName("debit")
    val debit: ReconciliationLabelField,

    @SerialName("credit")
    val credit: ReconciliationLabelField,

    @SerialName("total")
    val total: ReconciliationLabelField,

    ) : Parcelable


@Parcelize
@Serializable
data class ReconciliationLabelField(
    @SerialName("label")
    val label: LocalizationField,

    @SerialName("total")
    val total: String,

    @SerialName("count")
    val count: Int
) : Parcelable

Reverse Error

sealed class ReversalFailure{
    data class FailureMessage(val message: String) : ReversalFailure()
    data class AuthenticationFailed(val message: String): ReversalFailure()
    data class InvalidStatus(val status: List<StatusCheckError>): ReversalFailure()
    object GeneralFailure: ReversalFailure()
}

Logout Error

sealed class ConnectionSession {
    data class Bluetooth(val device: String): ConnectionSession()
    data class WebSocket(val ipv4Address: String, val port: String): ConnectionSession()
}

Session Data

sealed class ConnectionSession {
    data class Bluetooth(val device: String): ConnectionSession()
    data class WebSocket(val ipv4Address: String, val port: String): ConnectionSession()
}

Last updated