2 - Ativação

Nesta página, você vai ativar o Plugin mPOS no seu projeto e recuperar as credenciais necessárias pelo dashboard.

Pré-requisitos

Antes de começar:

1. Adicione o Plugin mPOS ao projeto.
2. Tenha acesso ao dashboard para inserir o token de ativação.
3. Inicialize o SDK sem credenciais para solicitar a ativação do dispositivo.

Ativação

Siga este fluxo para ativar o dispositivo e associá-lo ao estabelecimento:

1. Inicialize o SDK sem passar as credenciais.
2. Injete o plugin do mPOS.
3. Gere o token de ativação.
4. Insira o token no dashboard.
5. Receba as credenciais no confirmCallback.
6. Armazene as credenciais para usar nas próximas inicializações.

1. Inicialize o SDK sem credenciais

Inicialize o SDK sem passar as credenciais para realizar a requisição que recupera as credenciais.

Zoop.initialize(context)

2. Injete o plugin do mPOS

Depois, injete o plugin do mPOS:

val mPOSPlugin = MPOSPlugin(Zoop.constructorParameters())

Zoop.plug(mPOSPlugin)

Com o SDK inicializado, é necessário fazer uma ativação pelo dashboard para recuperar as credenciais. Essa ativação usa um token gerado pela requisição de ativação.

📘

Cada dispositivo só precisa fazer essa ativação uma única vez para criar o dispositivo na base de dados da Zoop e associá-lo ao estabelecimento. Depois disso, é possível inicializar o plugin diretamente com as credenciais recebidas.

3. Gere o token e confirme a ativação

Use createDashboardActivationRequestBuilder() para gerar o token de ativação, aguardar a confirmação pelo dashboard e receber as credenciais do estabelecimento.

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!!)
📘

O método Zoop.post() processa uma requisição ao SDK de forma assíncrona, paralela à chamada. Caso você precise que a requisição seja processada de forma síncrona, sequencial à chamada, use o método Zoop.enqueue().

📘

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.

onSuccess

Sinaliza o momento em que a requisição do token termina com sucesso. Use o response.token para apresentar o token ao usuário e solicitar a inserção no dashboard.

onFail

Falha na requisição do token. Recebe uma exceção que pode ser do tipo:

  • ZoopTimeoutException: tempo excedido na operação.
  • ZoopClosedConnectionException: conexão interrompida.
  • ZoopNetworkException: falha de conexão.

.confirmCallback

Responsável por retornar as callbacks que dizem se o login foi cancelado ou confirmado.

onSuccess

Sinaliza o momento em que o processo de login termina com sucesso. Recebe uma resposta com os dados do login, incluindo as credenciais do estabelecimento.

onFail

Falha no processo de login. Recebe uma exceção que pode ser do tipo:

  • ZoopTimeoutException: tempo excedido na operação.
  • ZoopClosedConnectionException: conexão interrompida.
  • ZoopNetworkException: falha de conexão.

.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.

onSuccess

Sinaliza o momento em que o processo de requisição do tema termina. A resposta contém o esquema de cores configurado para o seller no dashboard.

onFail

Falha no processo de recepção do tema.

Cancelando

O cancelamento da operação pode ser comandado chamando o método cancel() a partir do objeto da requisição que se deseja cancelar, o mesmo que foi passado ao método Zoop.post() ou Zoop.enqueue().

📘

O cancelamento é assíncrono e cooperativo. Isto é, o método cancel() sinaliza a intenção de cancelamento para o SDK e retorna imediatamente, sem aguardar pela conclusão do cancelamento. Por sua vez, o SDK interromperá e cancelará a operação na primeira oportunidade possível.

Exemplo
var loginRequest: Request? = null

fun activate() {
    loginRequest = ZoopFoundationPlugin.createDashboardActivationRequestBuilder()
        // ...
        .build()

    Zoop.post(loginRequest)
}

fun cancelActivation() {
    loginRequest?.cancel()
}


Did this page help you?