> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/classic-push-provisioning/es/guia-del-desarrollador/solucion-de-problemas/android.md).

# Android

### Recuperando registros <a href="#retrieving-logs" id="retrieving-logs"></a>

#### Prerrequisitos para Logcat <a href="#prerequisites-for-logcat" id="prerequisites-for-logcat"></a>

Antes de recuperar archivos de registro de un dispositivo Android, complete esta configuración:

* Android Debug Bridge (ADB) está instalado en el sistema host.
* La opción de depuración USB está habilitada en el dispositivo bajo prueba.
* El dispositivo Android está conectado al sistema host con un cable USB y el controlador USB está instalado.

Ejecute el siguiente comando para verificar su configuración:

```
adb devices
```

Una salida similar a la siguiente indica que ADB puede alcanzar el dispositivo:

```
List of devices attached228b0e100d047ece device
```

Si este no es el caso, compruebe que se cumplen los prerrequisitos especificados arriba.

Hay guías en línea que cubren estos pasos.

Para una configuración de extremo a extremo, consulte <https://support.citrix.com/article/CTX232375>.

> <i class="fa-exclamation-circle">:exclamation-circle:</i>
>
> #### Advertencia <a href="#warning" id="warning"></a>
>
> Algunos dispositivos requieren que habilite el registro del dispositivo desde un menú específico del proveedor.
>
> Por ejemplo, en dispositivos Huawei esto está bajo un menú que puede abrir marcando `*#*#2846579#*#*`. Para más detalles, consulte <https://stackoverflow.com/questions/18124334/huawei-logcat-not-showing-the-log-for-my-app>.

#### Pasos recomendados para capturar registros <a href="#recommended-steps-for-capturing-logs" id="recommended-steps-for-capturing-logs"></a>

* Abra el símbolo del sistema y borre todos los búferes de registro en el dispositivo:

```
adb logcat -b all -c
```

* Inicie la captura de registros:

```
adb logcat> TestLogFileName.txt
```

* Realice el/los caso(s) de uso.
* Presione `CTRL+C` en el símbolo del sistema para detener la captura de registros.
* Localice `TestLogFileName.txt` en el directorio donde ejecutó el comando en el paso 2.

> <i class="fa-info-circle">:info-circle:</i>
>
> #### Variante del SDK y filtros de registro <a href="#sdk-variant-and-log-filters" id="sdk-variant-and-log-filters"></a>
>
> * Para capturar los registros más detallados, use una compilación de la aplicación que utilice la `debug` variante del SDK.
> * Evite [filtros de registro](https://developer.android.com/studio/command-line/logcat#filteringOutput) que limiten los mensajes capturados. Estos mensajes son útiles para la resolución de problemas.
> * Mantenga los registros pequeños limitando el tiempo de captura. Comience a capturar justo antes del caso de uso. Detenga la captura justo después de que se complete.

#### Recuperando registros de Google Pay <a href="#retrieving-google-pay-logs" id="retrieving-google-pay-logs"></a>

1. Solicite a Google que agregue sus cuentas de prueba a la lista permitida. Envíe la solicitud usando el [formulario de contacto de aprovisionamiento](https://support.google.com/faqs/contact/pp_api_general?authuser=1).
2. Después de que Google conceda acceso, filtre los registros en [Logcat](https://developer.android.com/studio/debug/am-logcat) usando `TapAndPay`.

#### Recuperando registros de Samsung Pay <a href="#retrieving-samsung-pay-logs" id="retrieving-samsung-pay-logs"></a>

Para recuperar registros de la API Samsung Pay, configure la **clave de API de depuración** como se describe en [Incorporación del emisor](/classic-push-provisioning/es/guia-del-desarrollador/incorporacion-del-emisor.md).

### Errores del servidor <a href="#server-errors" id="server-errors"></a>

Si recibe un error relacionado con el servidor, es posible que pueda obtener el ID de la solicitud de la API desde `TPCSDKException`de `getRequestId()` método. Use este ID de solicitud cuando informe el problema al equipo de soporte.

### Errores comunes <a href="#common-errors" id="common-errors"></a>

#### Modo incorrecto <a href="#incorrect-mode" id="incorrect-mode"></a>

Este error ocurre cuando el dispositivo está en el modo incorrecto. Cambie el dispositivo de `SANDBOX` modo a `PROD` modo. Para más detalles, consulte [Pruebas en Sandbox](/classic-push-provisioning/es/guia-del-desarrollador/pruebas-en-sandbox.md). El error típicamente se ve así:

```
Internal Error: CheckEligibility error in CardNetworkTokenService vendor layer: code: 14
```

#### Longitud de campo inválida - cardholderName <a href="#invalid-field-length---cardholdername" id="invalid-field-length---cardholdername"></a>

Este error ocurre en la red de pagos Mastercard cuando la longitud de `cardHolderName` excede el máximo permitido. La longitud máxima para `cardHolderName` es de 27 caracteres (según la política de Mastercard). Para más detalles, consulte la [documentación de Mastercard](https://developer.mastercard.com/mdes-pre-digitization/documentation/use_case/issuer-tokenization/#reference-api-implementation). El error típicamente se ve así:

{% code overflow="wrap" %}

```
Longitud de campo inválida - cardholderName"Internal Error: CheckEligibility error in CardNetworkTokenService vendor layer: code: 3
```

{% endcode %}

#### Credenciales de clave API incorrectas <a href="#incorrect-credentials-of-api-key" id="incorrect-credentials-of-api-key"></a>

Este error indica que el proyecto no está configurado en el lado de la red de pagos. Configure el proyecto con la red de pagos. El error típicamente se ve así:

```
card_network_token_error_code: "AUTHENTICATION_ERROR"
```

#### Google Pay no disponible <a href="#googlepay-unavailable" id="googlepay-unavailable"></a>

Este error ocurre si se cumple una de estas condiciones:

* Su dispositivo está en un [país donde puede usar Google Wallet](https://support.google.com/wallet/answer/12060037#zippy=%2Cuse-google-wallet-for-payments).
* La aplicación se está ejecutando en el emulador.
* El dispositivo no tiene instalados los servicios de Google Play. Los servicios de Google Play se pueden [descargar](https://play.google.com/store/apps/details?id=com.google.android.gms\&hl=en\&gl=US).
* El nombre del paquete de la aplicación no está registrado para usar la API de Push Provisioning de Google. Consulte [la documentación de Google](https://developers.google.com/pay/issuers/apis/push-provisioning/android/allowlist) para más información.
* La [huella digital](https://developers.google.com/pay/issuers/apis/push-provisioning/android/allowlist#how_to_get_your_apps_fingerprint) de la aplicación ha cambiado en comparación con la que está en la lista permitida de Google.
* El Sandbox puede estar temporalmente no disponible. Espere unos días y vuelva a intentarlo de forma intermitente. Si el problema persiste, o si ocurre en `PPROD` o `PROD`, contacte a <pushprov-api-support@google.com>.

#### Error de compilación debido a entrada duplicada de `R.txt` <a href="#compile-error-due-to-duplicate-entry-of-rtxt" id="compile-error-due-to-duplicate-entry-of-rtxt"></a>

Esto generalmente ocurre cuando la aplicación establece `android.enableJetifier=true` en `gradle.properties`. Para solucionarlo, desactive Jetifier o excluya el SDK de Push Provisioning de las transformaciones de Jetifier:

```
android.jetifier.blacklist=tpcsdk-release-1.3.0-220421.aar
```

Los detalles de un error de compilación típico se muestran de la siguiente manera:

{% code overflow="wrap" %}

```
> Failed to transform tpcsdk-debug-1.3.0-210421.aar (project :tpcsdk-debug) to match attributes {artifactType=android-res}.> Execution failed for JetifyTransform: <omitted>/tpcsdk-debug/tpcsdk-debug-1.3.0-210421.aar.> Failed to transform '/Users/abc/Documents/Projects/TPC_SDK/Delivery/TPC_SDK/TPC_SDK_ANDROID_1_2_0/demo/libs/tpcsdk-debug-1.3.0-210421.aar' using Jetifier. Reason: duplicate entry: R.txt. (Run with --stacktrace for more details.)
```

{% endcode %}

#### Push Provisioning iniciando una nueva aplicación <a href="#push-provisioning-launching-new-app" id="push-provisioning-launching-new-app"></a>

En casos raros, el flujo de push provisioning se abre en una aplicación externa. Cuando esto sucede, la aplicación iniciada no puede recibir el resultado de Google Pay.

<figure><img src="/files/1f6cb9c93462f6bf64f4222c7d51545c195150c9" alt=""><figcaption><p>Ejemplo del flujo de push provisioning que se abre fuera de la aplicación del emisor.</p></figcaption></figure>

<figure><img src="blob:https://thales-dis-dbp.stoplight.io/18df4a00-07ab-4fd6-8dd8-31292bb4d319" alt=""><figcaption><p>Pantalla de resultados mostrada por Google Pay cuando el control no se devuelve a la aplicación del emisor.</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/classic-push-provisioning/es/guia-del-desarrollador/solucion-de-problemas/android.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
