Ativação

Ativação

  • É necessário inicializar o SDK sem passar as credenciais, afim de realizar a requisição para recuperar as credenciais.
Zoop.initialize(context)
  • Neste momento, é necessário injetar o plugin do mPOS, conforme abaixo:
val mPOSPlugin = MPOSPlugin(Zoop.constructorParameters())

Zoop.plug(mPOSPlugin)
  • Com o SDK inicializado, é necessário fazer uma ativação pelo seu dashboard para recuperar as credenciais*, utilizando um token gerado com a requisição de ativação, conforme exemplo a seguir.

dashboardActivation

Cada dispositivo só precisa fazer essa ativação uma única vez afim de criar o dispositivo na nossa base de dados, associando o dispositivo ao estabelecimento. Após isso, é possível inicializar o plugin diretamente com as credenciais recebidas.

Exemplo
var loginRequest: Request? = null

loginRequest = ZoopFoundationPlugin.createDashboardActivationRequestBuilder()
    .tokenCallback(object: Callback<DashboardTokenResponse>() {
        override fun onStart() {
            state = state.copy(status = Status.MESSAGE, message = "Requisitando token")
        }

        override fun onFail(error: Throwable) {
            Log.d(TAG, "Falha ao requisitar token")
            state = state.copy(status = Status.MESSAGE, message = "Falha ao requisitar token")
        }

        override fun onSuccess(response: DashboardTokenResponse) {
            Log.d(TAG, "Apresentar token ao usuário: ${response.token}")
            state = state.copy(
                status = Status.MESSAGE,
                message = "Insira o token no dashboard: ${response.token}"
            )
        }
    })
    .confirmCallback(object: Callback<DashboardConfirmationResponse>() {
        override fun onFail(error: Throwable) {
            /**
             * Caso o login seja cancelado, receberá a resposta aqui, com mensagem "request canceled"
             * loginRequest.cancel()
             */
            Log.d(TAG, "Apresentar erro na confirmação do token: ${error.message}")
            state = when (error) {
                is ZoopRequestCanceledException -> state.copy(
                    status = Status.MESSAGE,
                    message = "Operação cancelada"
                )
                else -> state.copy(
                    status = Status.MESSAGE,
                    message = error.message.toString()
                )
            }
        }

        override fun onSuccess(response: DashboardConfirmationResponse) {
            /**
             * Nesse ponto, recomendamos guardar as credenciais localmente em um banco de dados/shared preferences,
             * para usar na próxima inicialização, passando como parâmetro para o MPOSPluginManager
             */
            Log.d(TAG, "Aqui, você recebe as credenciais do estabelecimento")
            Log.d(TAG, "MarketplaceId: ${response.credentials.marketplace}")
            Log.d(TAG, "SellerId: ${response.credentials.seller}")
            Log.d(TAG, "Terminal: ${response.credentials.terminal}")
            Log.d(TAG, "AccessKey: ${response.credentials.accessKey}")
            Log.d(TAG, "SellerName: ${response.owner.name}")
            state = state.copy(
                status = Status.MESSAGE,
                message = "SellerName: ${response.owner.name}"
            )
        }
    })
    .themeCallback(object: Callback<DashboardThemeResponse>() {
        override fun onStart() {
            if (loginRequest?.isCancelRequested == true) return
            state = state.copy(status = Status.MESSAGE, message = "Baixando temas")
        }

        override fun onFail(error: Throwable) {
            Log.d(TAG, "Apresentar erro no download de temas: ${error.message}")
            state = state.copy(status = Status.MESSAGE, message = error.message.toString())
        }

        override fun onSuccess(response: DashboardThemeResponse) {
            /**
             * Aqui você recebe o esquema de cores configurado para o seller no dashboard,
             * e também sinaliza o sucesso no fluxo de ativação do terminal.
             */
            Log.d(TAG, "Exemplo de cor de fonte ${response.color.font}")
            Log.d(TAG, "Exemplo de cor de botão ${response.color.button}")
            Log.d(TAG, "Exemplo de logo colorido ${response.logo.coloredBase64}")
            state = state.copy(status = Status.MESSAGE, message = "Login realizado")
        }
    })
    .build()

Zoop.post(loginRequest!!)

*Observação: Você pode armazenar as credenciais localmente com a resposta do confirmCallback, fazendo isso, é possível informá-las na próxima inicialização sem precisar passar pela ativação via dashboard.

Callbacks

.tokenCallback

Responsável por retornar as callbacks que dizem o estado da requisição do token para a ativação.
onStart -> Sinaliza quando a requisição do token começa.
onFail -> Falha na requisição do token. Recebe um exception que pode ser do tipo:
- ZoopTimeoutException -> Tempo excedido na operação.
- ZoopClosedConnectionException -> Conexão interrompida.
- ZoopNetworkException -> Falha de conexão.
onSuccess -> Sinaliza o momento que a requisição do token termina com sucesso.

.confirmCallback

Responsável por retornar as callbacks que dizem se o login foi cancelado ou confirmado. onFail -> Falha no processo de login. Recebe um exception que pode ser do tipo:
- ZoopTimeoutException -> Tempo excedido na operação.
- ZoopClosedConnectionException -> Conexão interrompida.
- ZoopNetworkException -> Falha de conexão.
onSuccess -> Sinaliza o momento que o processo de login termina com sucesso. Recebe uma resposta com os dados do login.

.themeCallback

Responsável por retornar as callbacks que dizem o estado do download dos temas.
onStart -> Sinaliza quando a requisição do tema começa.
onFail -> Falha no processo de recepção do tema.
onSuccess -> Sinaliza o momento que o processo de requisição do tema termina.