Códigos de Resposta e Erro
Esta página resume como o SDK representa os resultados das operações e as condições de erro. Todas as chamadas de repositório retornam um wrapper RepositoryResult<T> que obriga você a tratar o sucesso e a falha explicitamente.
RepositoryResult<T>
RepositoryResult<T> é uma sealed class Kotlin com as seguintes ramificações:
- Success<T>: A chamada foi concluída com sucesso.
- Contém um payload
data: T(por exemplo,PaymentResult,RefundResult,TpvInfo,TotalsResult, etc.).
- Contém um payload
- ConnectionError: Ocorreu um problema de comunicação.
- Causas típicas: o Get Smart SDK Payment Service não está em execução, o dispositivo está offline ou há um problema de conectividade com o host.
- Cancelled: A operação foi cancelada.
- Geralmente indica que o usuário abortou um fluxo interativo na interface (UI) do TPV. Inclui uma
messagelegível por humanos.
- Geralmente indica que o usuário abortou um fluxo interativo na interface (UI) do TPV. Inclui uma
- ProtocolError: A requisição não pôde ser processada devido a um problema de integração ou mapeamento.
- Inclui um
type: ProtocolErrorTypee umadescriptionopcional.
- Inclui um
Para padrões de tratamento idiomático e exemplos, consulte Conceitos Principais / Tratar Respostas e Erros.
ProtocolErrorType
Quando você recebe RepositoryResult.ProtocolError, o campo type é um dos seguintes valores (veja também o Glossário de Modelos de Dados):
MAPPING_DATA: Erro interno ao mapear os dados entre o SDK e o serviço em segundo plano (background service).- Ação: geralmente indica um estado inesperado; capture os logs e entre em contato com o suporte se o problema persistir.
MAPPING_DOMAIN: Há algo de errado com os dados que seu aplicativo enviou.- Ação: valide parâmetros como valores, moedas e identificadores.
TPV_NOT_INITIALIZED: Um erro crítico de configuração.- Ação: certifique-se de que
InitializationRepository.initTpv()foi chamado com sucesso antes de realizar operações como pagamentos, estornos ou consultas de histórico.
- Ação: certifique-se de que
Resultados em Nível de Negócio
Muitas chamadas bem-sucedidas ainda exigem que você verifique um resultado de negócio (business result) dentro do payload:
- Operações de pagamento, estorno e pré-autorização retornam tipos de resultados selados (sealed result types) como
PaymentResult,RefundResultePreauthorizationResult, que distinguem:- Operações Accepted (autorizadas pelo host, com um payload
Transaction). - Operações Denied (rejeitadas pelo host/banco, com um payload
Transactionexplicativo). - Erros de domínio específicos (por exemplo,
RefundResult.ExceededAmount).
- Operações Accepted (autorizadas pelo host, com um payload
- Consultas de histórico e totais retornam estruturas como
GetTransactionsResultouTotalsResultque indicam se há dados, mais páginas ou identificadores inválidos.
Sempre inspecione tanto o RepositoryResult<T> externo quanto o resultado de domínio interno para decidir o que mostrar na sua interface (UI) e quando tentar novamente ou escalar erros.