Registro do Terminal (Ativação)
A ativação vincula o terminal ao estabelecimento e é feita uma vez, por alguém presente no aparelho. Há dois fluxos de credenciamento. O fluxo atual é CNPJ + Código de Verificação (register); o fluxo email + senha (authenticate) é mantido para reuso futuro.
Registro (CNPJ + Token)
suspend fun register(fields: Map<String, String>, partnerSlug: String): RegistrationResult
Os fields são preenchidos pelo operador conforme o registrationSchema retornado em getTerminalConfig. A chave de cada campo é o id definido no schema (ex.: "cnpj", "token"). O registro vincula o terminal a um único merchant e retorna o merchantId usado na inicialização.
val registration = try {
posPinpad.register(
fields = mapOf(
"cnpj" to operatorCnpj,
"token" to operatorToken
),
partnerSlug = "partner-slug"
)
} catch (e: Exception) {
showError("Falha de comunicação. Verifique a rede e tente novamente.")
return
}
if (!registration.success || registration.merchantId.isNullOrBlank()) {
showError(registration.error?.message ?: "Falha no registro do terminal.")
return
}
val merchantId = registration.merchantId!! // guarde para as próximas inicializações
| Retorno | Significado |
|---|---|
success == true | Terminal registrado. Use merchantId na inicialização |
error != null | Recusa com mensagem do backend (ex.: código expirado), pronta para exibir |
register também lança exceção em falhas de rede, de TLS ou HTTP fora da recusa de negócio. Trate essas falhas como erro de comunicação, sem decidir pelo texto da mensagem da exceção. Veja RegistrationResult.
Autenticação (email/CNPJ + senha)
suspend fun authenticate(request: AuthenticationRequest): AuthenticationResponse
val response = posPinpad.authenticate(
AuthenticationRequest(
identifier = "email-ou-cnpj", // o SDK detecta o tipo automaticamente
password = "<senha>"
)
)
if (response.success) {
val user = response.user
}
A resposta traz success, user (AuthenticatedUser: id, name, email, role), expiresIn, issuedAt e, em caso de recusa, error (AuthError: code, message, details).
Logout
suspend fun logout()
posPinpad.logout()
Descarta a sessão e os IDs de registro. O vínculo do terminal com o parceiro é mantido.