Manejo de errores

Presentación

Los errores del SDK móvil se reenvían mediante el objeto LyraException que posee los siguientes parámetros:

CARACTERÍSTICAS DESCRIPCIÓN
errorCode Permite identificar el error actual (en formato [PREFIXE]_[CODE]).
errorMessage Explicita el error que corresponde al código.
detailedErrorCode Código del error subyacente que causa la excepción (o null).
detailedErrorMessage Mensaje del error subyacente (o null).

El campo detailedError indica el motivo preciso del error para ayudarle a identificar el problema.

Tipos de errores

Hay que distinguir los errores que se producen durante el desarrollo de los que pueden producirse durante la ejecución del SDK.

Errores de desarrollo

En ese caso, el SDK arroja una excepción de tipo LyraException, que debe ser capturada por el desarrollador.

Estos son los casos en los que esto puede suceder.

Tras la llamada al método initialize():

  • Si el formato del parámetro publicKey es incorrecto, se lanzará una excepción MOBP_001-INVALID_KEY.

  • Si el formato del parámetro apiServerName es incorrecto, se levantará una excepción MOBP_012-UNKNOWN_API_SERVER_NAME.

Tras la llamada al método process():

  • Si el SDK no se ha inicializado de antemano, se generará una excepción MOBP-002-INITIALIZATION_REQUIRED.

Errores de ejecución

Para otros errores, la información se transmitirá en el objeto LyraException a través de la función de devolución de llamada onError(), como se describe en la guía de integración.

Códigos de error

Se presenta un código de error bajo la forma [PREFIXE]_[CODE], en donde:

[PREFIJO] define la capa de aplicación donde se ha producido el error
[CÓDIGO] es el código numérico del error.

Existen distintos prefijos:

PREFIJO DESCRIPCIÓN EJEMPLO DE ERROR
MOB Error del SDK móvil MOB_004
ACQ Error del adquiriente ACQ_001
AUTH Error de autenticación AUTH_149
INT Error de integración (del vendedor) INT_007
PSP Error por parte del medio de pago PSP_001

Tenga en cuenta que, a futuro, se pueden agregar nuevos códigos de error (incluso si no actualiza su SDK ni su aplicación móvil). Por lo tanto, su implementación debe tomarlo en cuenta e integrar un algoritmo genérico de control de errores.

Errores ACQ, AUTH, INT y PSP

Estos códigos de error se refieren a las comunicaciones con el servidor de pago (con la plataforma de pago, con su servidor de vendedor, etc.). Consulte Códigos de error para obtener detalles sobre este tipo de error.

Recomendación de control de errores

Sin importar cuál sea el error, le recomendamos que siempre muestre un mensaje al usuario para informarle que el pago no se ha realizado. Le recomendamos que rastree correctamente los errorCode, detailedErrorCode y los mensajes asociados para poder analizar los incidentes que se presenten y resolverlos de forma independiente . En caso de error, NUNCA debe considerar que el pago se ha realizado.

Errores de MOB

Estos errores ocurren si se ha producido un error del lado de la SDK móvil.

CÓDIGO DE ERROR DEFINICIÓN
MOB_001 Invalid public key
MOB_002 Se requiere la inicialización del SDK antes de llamar al proceso
MOB_003 Invalid formToken
MOB_004 Invalid formToken version
MOB_005 Impossible to communicate with server
MOB_006 Network is not available
MOB_007 Invalid response of Lyra Rest API
MOB_008 Payment refused
MOB_009 Payment cancelled
MOB_010 Server timeout error, check IPN
MOB_011 Unknown API Server Name
MOB_999 Unexpected error

Detalle de los códigos de error

MOB_001

Código MOB_001
Definición Invalid public key

La clave pública proporcionada al inicializar el SDK no es correcta. Puede que haya intentado realizar una transacción de prueba con una clave de producción o viceversa. Consulte los Prerrequisitos

MOB_002

Código MOB_002
Definición Se requiere la inicialización del SDK antes de llamar al proceso

Intenta llamar al método process antes de llamar al método init. Consulte la Guía de integración para Android y la Guía de integración para iOS sobre la inicialización del SDK.

MOB_003

Código MOB_003
Definición Invalid formToken

El identificador del formulario no parece ser correcto. Asegúrese de haber seguido las instrucciones indicadas en las guías de integración. Si no encuentra nada que pudiera causar un error, llame al soporte técnico*.

MOB_004

Código MOB_004
Definición Invalid formToken version

La versión del identificador de formulario no es la correcta. Para asegurarse de tener la buena versión, llame al método getFormTokenVersion del SDK y pase los resultados al parámetro formTokenVersion del createPayment.

MOB_005

Código MOB_005
Definición Impossible to communicate with server

Póngase en contacto con el soporte*

MOB_006

Código MOB_006
Definición Network is not available

El dispositivo no parece estar conectado a internet. En este caso, puede ser útil mostrar un mensaje al usuario para asegurarse de que efectivamente está conectado.

MOB_007

Código MOB_007
Definición Invalid response of Lyra Rest API

Póngase en contacto con el soporte*

MOB_008

Código MOB_008
Definición Payment refused

El pago fue rechazado tras alcanzar el número máximo de intentos adicionales.

MOB_009

Código MOB_009
Definición Payment cancelled

El pago fue abandonado por el comprador. El comprador salió voluntariamente de la pantalla de pago.

MOB_010

Código MOB_010
Definición Server timeout error, check IPN

El servidor de pago no respondió en el plazo de 60 segundos. Esto puede deberse a un simple retraso temporal, por lo que le recomendamos encarecidamente comprobar la notificación IPN posteriormente y cancelar la transacción para mantener la coherencia.

MOB_011

Código MOB_011
Definición Unknown API Server Name

No se reconoce el valor enviado en el campo apiServerName, probablemente por un error de escritura.

MOB_999

Código MOB_999
Definición Unexpected error

Se ha producido un error inesperado. Póngase en contacto con el soporte*.

Cuando contacte al soporte técnico, indique:

  • Su número de tienda de 8 dígitos
  • OS y versión del SDK
  • Dispositivo utilizado (iPhone 6S, computadora personal, iPad Pro, etc.)
  • Versión del OS
  • Fecha y hora del error
  • El errorCode y detailedErrorCode que encuentre, de ser el caso

Estos datos mejorarán el tiempo que lleva analizar y comprender su problema.