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 timeout

val initializationRequest = InitializationRequest(
    theme = theme, // Parâmetro opcional
    credentials = credentials,
    timeout = timeout // 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
tapOnPhone.initialize(initializationRequest)

Para não travar a thread principal, uma opção é envelopar essa requisição em uma thread.
Não há retorno da inicialização, se houver algum erro, será lançada uma exceção do tipo ZoopException ou KernelException.

import kotlin.concurrent.thread

thread {
    try {
        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?
)
* */