Ativação

Ativação

  • É necessário inicializar o SDK sem passar as credenciais, afim de realizar a requisição para recuperar as credenciais.
MPOSPluginManager().initialize(LocalContext.current)
  • 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

    private fun login() {
        paymentRequest = null
        voidRequest = 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.