MPOSPluginManager().initialize(LocalContext.current)
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.
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.
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.
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.
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.