Inicialização

Inicialização

  • Para utilizar o plugin, é necessário realizar a inicialização.

Maneiras de inicializar

Para que os pagamentos sejam realizados, é necessário que o dispositivo esteja ativado no nosso ambiente, o plugin realiza a ativação automaticamente na inicialização. A ativação demora em torno de 2 a 3 segundos e é blocante, ou seja, a thread principal será bloqueada até que a ativação seja concluída.

Configura credenciais
val credentials = InitializationRequest.Credentials(
    clientId = {clientId},
    clientSecret = {clientSecret},
    marketplace = {marketplace},
    seller = {seller},
    accessKey = {accessKey}
)
Dados de credenciais

clientId: id do cliente, recebido no processo de onboarding.
clientSecret: secret do cliente, recebido no processo de onboarding.
marketplace: marketplace recebido no processo de onboarding.
seller: seller recebido no processo de onboarding.
accessKey: accessKey recebido no processo de onboarding.

Configura objeto de inicialização

Informações sobre tema
Informações sobre como configurar volume do beep
Informações sobre timeout

val initializationRequest = InitializationRequest(
    theme = theme, // Parâmetro opcional
    credentials = credentials,
    timeout = timeout, // Parâmetro opcional,
    beepVolume = beepVolumeConfig // Parâmetro opcional,
)
Instanciando objeto TapOnPhone

Você pode passar um objeto indicando que não quer que o plugin exiba as telas de erro, conforme exemplo abaixo:
Este parâmetro é opcional, se não passado, vai como habilitado por padrão.

val parameters = Parameters(showErrorScreen = false)
/*
* data class Parameters(
    val showErrorScreen: Boolean
)
* */

Ao prover o contexto, é recomendado passar o applicationContext e não o contexto da activity. ex. context.applicationContext

val tapOnPhone = TapOnPhone(context, parameters)
// val tapOnPhone = TapOnPhone(context) // Sem parâmetros

context: context da aplicação Android

Inicializa o plugin
val status = tapOnPhone.initialize(initializationRequest)

Para não travar a thread principal, uma opção é envelopar essa requisição em uma thread.

O status da inicialização tem tipo InitializationStatus.
Se a inicialização for bem sucedida, o status será InitializationStatus.SUCCESS.
Se a inicialização falhar, o status será InitializationStatus.FAILED.
Se não foi chamado ainda, o status será InitializationStatus.NOT_INITIALIZED.
Se a inicialização estiver em andamento, o status será InitializationStatus.PROCESSING.

import kotlin.concurrent.thread

thread {
    try {
      val status = tapOnPhone.initialize(initializationRequest)
    } catch (e: KernelException) {
        // KernelException()
        // val kernelError: KernelError = e.kernelError
    } catch (e: ZoopException) {
        // Tratar exceção
    }
}

/*
* data class KernelError(
    val code: Int?,
    val name: String?,
    val description: String?
)
* 
* enum class InitializationStatus {
    SUCCESS,
    PROCESSING,
    NOT_INITIALIZED,
    FAILED
}
* */

instanceId

A SDK também oferece a opção de obter o ID da instância do terminal. Para isso, você pode usar o instanceId:

 val instanceId = tapOnPhone.instanceId

O instanceId só estará disponível após a inicialização bem-sucedida do terminal.