Recuperar y refrescar token

Recuperar y refrescar token

ℹ️

Este proceso es obligatorio

El proceso de integración con el SDK Full se inicia con la obtención del token de autenticación, un recurso clave que facilita el acceso a las APIs de Menta, como operaciones de pago, anulación, devolución y reversa.

Para llevar a cabo este paso, es necesario utilizar la API Key de tipo merchant, la cual forma parte de los pre requisitos. Es responsabilidad del cliente garantizar el acceso y la gestión adecuada de esta clave durante el proceso de integración.

Requisitos

  • API Key de tipo merchant.

Resultado

  • Token de autenticación listo para ser usado en los siguientes pasos.

Cómo obtener el token

Pasos para recuperar el token:

  1. Inicializar la librería Rest Client.
  2. Instanciar el objeto ExternalTokenData y pasarle como parámetro el contexto de la Aplicación.
  3. Consumir el método getExternalToken pasando como parámetro el API Key de tipo merchant.
  4. Configurar un observer para recibir la respuesta del método getExternalToken.
  5. Persistir localmente el token de autenticación usando el objeto Storage.

Ejemplo de implementación

import com.menta.android.common_cross.util.StatusType
import com.menta.android.core.viewmodel.ExternalTokenData
import com.menta.android.core.viewmodel.MasterKeyData
import com.menta.android.restclient.core.RestClientConfiguration.configure
import com.menta.android.restclient.core.Storage
 
 
configure(AppfinRestClientConfigure())
val externalTokenData = ExternalTokenData(this)
 
//Recuperar el token
externalTokenData.getExternalToken(merchantApiKey)
 
//Configurar el observer
externalTokenData.getExternalToken.observe(this) { token ->
    if (token.status.statusType != StatusType.ERROR) {
        //Guardar el token
        val storage = Storage(this)
        storage.putIdToken(token.idToken)
        storage.putTokenType(token.tokenType)
    } else {
        Log.i(TAG, "Get token ERROR: ${token.status.message}")
    }
}

Ejemplo de response

El resultado que se recibe es el objeto LoginResponse mediante el observer configurado. Este tendrá 2 valores: el tipo de token y el token.

LoginResponse(
  tokenType="Bearer",
  idToken="eyJraWQiOiJHVThWK2pib2xIUlRkaWhLMHVaVVVZZVVVUm9VbExOdmo2U2swVDVyU0k4PSIsImFsZyI6IlJTMjU2In0.eyJjb3VudHJ5IjoiQVJHIiwic3ViIjoiOThmNmM0ZWEtNGI1My00ZDdkLTllZDgtZWRkOWZjZjhiZjdhIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xX1RsbEZDMWJhZyIsImNvZ25pdG86dXNlcm5hbWUiOiI5OGY2YzRlYS00YjUzLTRkN2QtOWVkOC1lZGQ5ZmNmOGJmN2EiLCJtZXJjaGFudF9pZCI6ImMyMTkyY2Y4LWUyMjEtNGNjYy04M2Q0LTFjMjEwNWQ0NmI5YSIsIm9yaWdpbl9qdGkiOiJlZmZlOTQzNy1jZmUxLTRiZDctYjc1ZS1mN2EyMGJjNTdlMWQiLCJhdWQiOiI3NzQzNjJybmJlYWF1dHVqZGpwbmpwNXZjOCIsInVzZXJfdHlwZSI6Ik1FUkNIQU5UIiwiZXZlbnRfaWQiOiJiODUxYWU2OS1lMzVlLTQzM2MtOTJlMi00ZGFmNWMzNDMwNGYiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY4NTY1MDk4MCwiY3VzdG9tZXJfaWQiOiIxZDMwZTdkNy0wNjkzLTQ2OTItOGMzNi01OGUxYmEyMDFkYTEiLCJleHAiOjE2ODU3MzczODAsImlhdCI6MTY4NTY1MDk4MCwianRpIjoiNjAyNzNmOGUtNTA0Yy00MGYzLWFlYTktOTcwMjI5YzIyZGRhIiwiZW1haWwiOiJkaWVnby5zY2hpbGxlckBtZW50YS5nbG9iYWwifQ.gTr1JYkeVHqlnYjxyjrWZMbSsUEQ7Z6g4iC_MFZjV9-o1Y2LqfPXXcYy5-TKvBgzn6UerMR1SSSen5AQXCfzlH4Wpd8X-GfiXSRooCPsDiIHQ-i0QQ9oyJHAKm6gM4O0naePYSnpl8VOByQadfWPxQRiG_AqmTOCoNlJUfZ4nXndvqpH4CcIES5nUgYGFVP3nDXLqaJmgYYl_1XQp0ejWdIdsqz_zeMWkl6gWCDql0gGuWYa8HKKLu1Z0m2uLUgCvJCgn7ORqamxqqCD2GvfegUtN5uI6jmF7qvX-3rKHmGR-0ynBiWpADS73fpUYP56P6NPbaJLYQubIwk7W-mkxg"
)

Códigos de respuesta

El resultado se recibe mediante el objeto LoginResponse. En la siguiente tabla se muestran los diferentes códigos de error que se recuperan de token.status.type

CódigoDescripción
StatusType.ERRORFalló el proceso.
StatusType.SUCCESSEl proceso se realizó exitosamente.

Para el caso de error, se puede recuperar el mensaje de error así: token.status.message

Refrescar token

El token utilizado para acceder a las APIs tiene una vigencia limitada. Por ello, es necesario refrescarlo periódicamente para mantener el acceso y operar con normalidad. Esta gestión puede ser manejada automáticamente por el SDK. Para activarla, es necesario almacenar la ApiKey del merchant en el SDK usando la siguiente línea de código:

 storage.putMerchantApiKey(merchantApiKey)

Se recomienda realizar esto justo después de recibir una respuesta exitosa al recuperar por primera vez el token.