Getnet DocsGetnet Docs

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.).
  • 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 message legible para humanos.
  • ProtocolError: La petición no pudo ser procesada debido a un problema de integración o mapeo.
    • Incluye un type: ProtocolErrorType y una description opcional.

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.

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, RefundResult y PreauthorizationResult, que distinguen:
    • Operaciones Accepted (autorizadas por el host, con un payload Transaction).
    • Operaciones Denied (rechazadas por el host/banco, con un payload Transaction explicativo).
    • Errores de dominio específicos (por ejemplo, RefundResult.ExceededAmount).
  • Las consultas de historial y totales devuelven estructuras como GetTransactionsResult o TotalsResult que 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.