Códigos de respuesta y error
Esta página resume cómo el SDK representa los resultados de las operaciones y las condiciones de error. Todas las llamadas al repositorio devuelven un wrapper RepositoryResult<T> que te obliga a gestionar el éxito y el fracaso de forma explícita.
RepositoryResult<T>
RepositoryResult<T> es una clase sellada (sealed class) de Kotlin con las siguientes ramas:
- Success<T>: La llamada se completó correctamente.
- Contiene un payload
data: T(por ejemplo,PaymentResult,RefundResult,TpvInfo,TotalsResult, etc.).
- Contiene un payload
- ConnectionError: Ocurrió un problema de comunicación.
- Causas típicas: el Get Smart SDK Payment Service no se está ejecutando, el dispositivo está sin conexión (offline) o hay un problema de conectividad con el host.
- Cancelled: La operación fue cancelada.
- A menudo indica que el usuario abortó un flujo interactivo en la interfaz (UI) del TPV. Incluye un
messagelegible para humanos.
- A menudo indica que el usuario abortó un flujo interactivo en la interfaz (UI) del TPV. Incluye un
- ProtocolError: La petición no pudo ser procesada debido a un problema de integración o mapeo.
- Incluye un
type: ProtocolErrorTypey unadescriptionopcional.
- Incluye un
Para patrones de gestión idiomática y ejemplos, consulta Conceptos Principales / Gestionar Respuestas y Errores.
ProtocolErrorType
Cuando recibes RepositoryResult.ProtocolError, el campo type es uno de los siguientes valores (consulta también el Glosario de Modelos de Datos):
MAPPING_DATA: Error interno al mapear datos entre el SDK y el servicio en segundo plano (background service).- Acción: generalmente indica un estado inesperado; captura los logs y contacta con soporte si persiste.
MAPPING_DOMAIN: Hay un problema con los datos que envió tu aplicación.- Acción: valida parámetros como importes, divisas e identificadores.
TPV_NOT_INITIALIZED: Un error crítico de configuración.- Acción: asegúrate de que
InitializationRepository.initTpv()se ha llamado correctamente antes de realizar operaciones como pagos, devoluciones o consultas de historial.
- Acción: asegúrate de que
Resultados a nivel de negocio
Muchas llamadas exitosas todavía requieren que compruebes un resultado de negocio (business result) dentro del payload:
- Las operaciones de pago, devolución y preautorización devuelven tipos de resultado sellados (sealed result types) como
PaymentResult,RefundResultyPreauthorizationResult, que distinguen:- Operaciones Accepted (autorizadas por el host, con un payload
Transaction). - Operaciones Denied (rechazadas por el host/banco, con un payload
Transactionexplicativo). - Errores de dominio específicos (por ejemplo,
RefundResult.ExceededAmount).
- Operaciones Accepted (autorizadas por el host, con un payload
- Las consultas de historial y totales devuelven estructuras como
GetTransactionsResultoTotalsResultque indican si hay datos, más páginas o identificadores inválidos.
Inspecciona siempre tanto el RepositoryResult<T> externo como el resultado de dominio interno para decidir qué mostrar en tu interfaz (UI) y cuándo reintentar o escalar los errores.