Las entidades emisoras pueden ofrecer verificación de app a app como opción para completar un desafío de IDyV de ruta amarilla cuando se aprovisiona un token. La verificación de app a app se configura mediante tu TSP y no requiere de ninguna configuración por parte del equipo de Google Pay. En esta página, se explica cómo tu app interactúa con la app de la Billetera de Google según las instrucciones de aprovisionamiento que recibimos del TSP.
Cuando los usuarios elijan activar la verificación de app a app, la Billetera de Google invocará la app de la entidad emisora llamando a la clase Activity de Android que la entidad emisora especificó mediante la configuración del TSP. Una vez que el usuario haya verificado su identidad, la app de la entidad emisora le volverá a pasar el control a la Billetera de Google para que finalice el flujo de aprovisionamiento.
Si la app no está instalada en el dispositivo del usuario, la Billetera de Google abrirá la página de Play Store de la app. Después de instalar la app de la entidad emisora, el usuario deberá reiniciar el flujo.
Para admitir la verificación de app a app, deberás hacer lo siguiente:
- Establece la configuración del TSP para habilitar el flujo de app a app.
- Actualiza tu app para que admita el flujo de app a app.
En el flujo, se muestra una experiencia de usuario abstracta del proceso de verificación de app a app:

Configuración del TSP
Las entidades emisoras deben proporcionar los siguientes parámetros a su TSP. Google Pay recibe estos parámetros del TSP durante el proceso de asignación de token y los usa para llamar a tu app.
| Parámetro | Ejemplo | Descripción |
|---|---|---|
| Nombre del paquete | com.example.myapp | El nombre del paquete (applicationId) identifica la app para dispositivos móviles de la entidad emisora a la que Google Pay debe llamar durante la invocación del intent para iniciar el flujo de app a app. Si la app no está instalada en el dispositivo móvil del titular de la tarjeta, se le solicitará al usuario que la instale desde Google Play Store. |
| Acción | com.example.bank.action.ACTIVATE_TOKEN | Cuando llamamos a tu app, creamos un intent explícito. La acción debe proporcionarse en su forma completamente calificada, incluido el nombre del paquete. Además, la acción debe ser específica para usarse en la activación del token. |
| Texto adicional | Este parámetro se usa para pasar datos adicionales que se incluirán en el intent. Su estructura suele ser un archivo JSON con codificación Base64. El valor de esta cadena es opaco para Google y se proporcionará tal cual en el campo estándar EXTRA_TEXT. |
Obtén más información para enviar intents en Android y permitir intents en Android.
Desarrollo de apps
Cuando un usuario selecciona el método de app a app para verificar su identidad, la app de la entidad emisora debe hacer lo siguiente:
- Recibir el intent de la Billetera de Google
- Autenticar al titular de la tarjeta
- Activar el token
- Regresar al usuario a la Billetera de Google llamando a
activity.setResult(RESULT_OK, ...)
Cómo recibir el intent
Cuando un usuario elige verificar su identidad con la app de la entidad emisora, la Billetera de Google llama a tu app con el nombre del paquete, la acción y EXTRA_TEXT,
que se brinda a la Billetera de Google a través del TSP. Para recibir el Intent de parte de la Billetera de Google, debes actualizar el manifiesto de tu app y crear una actividad para activar el token.
Manifiesto de la aplicación
Las entidades emisoras deben actualizar el manifiesto de Android de su app para dispositivos móviles para manejar la Action, de modo que la Billetera de Google pueda llamarla durante el flujo de app a app.
Una vez que el manifiesto de tu app se haya actualizado, la Billetera de Google podrá llamar a tu app para iniciar la actividad de activación del token en ella.
<activity android:name="AppToAppActivity">
<!-- This activity handles App To App ACTIVATE_TOKEN action -->
<intent-filter>
<action android:name="com.example.bank.action.ACTIVATE_TOKEN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Obtén más información sobre los intents de Android en la documentación para desarrolladores de Android y la referencia para desarrolladores de Android.
Actividad de activación del token
Para completar la activación, tu app debe iniciar una actividad para completar la activación del token usando los parámetros de activación que se pasan en el Intent. La siguiente muestra de código demuestra cómo puedes acceder a los datos de EXTRA_TEXT en el Intent.
/*
* Within issuer's mobile app AppToAppActivity
*/
// Validate caller is Google Wallet
// see Security Considerations section below
String data = getIntent().getStringExtra(Intent.EXTRA_TEXT);
// Parse base64 to retrieve the activation parameters as a JSON object in a String
String decodedData = new String(base64.decodeBase64(data));
// Read the JSON string
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(decodedData);
// Extract the activation parameters
String tokenRef = node.get("param0").asText());
String tokenParam = node.get("param1").asText());
// etc.
// Authenticate the user
...
Realiza pruebas con Android Debug Bridge (adb)
Puedes simular el intent que envía la Billetera de Google con la herramienta Android Debug Bridge (adb) desde la línea de comandos. Esto prueba el control de intents de tu app de forma aislada.
Usa el siguiente comando y reemplaza los valores del marcador de posición por tu configuración específica:
adb shell am start \
-a com.your.app.package.a2a \
-p com.your.app.package \
--es android.intent.extra.TEXT 'yourBase64EncodedExtraTextFromTSP'
En este comando:
- -a: Corresponde a la acción configurada con tu TSP.
- -p: Es el nombre del paquete de tu aplicación.
- --es: Especifica un valor de cadena adicional. Usa android.intent.extra.TEXT como clave y proporciona la carga útil JSON codificada en Base64 como valor.
Los valores de Acción y Paquete dependen de la configuración que tengas con tu TSP, como se indica en el punto sobre la configuración del TSP.
Si el comando se ejecuta correctamente, se debería iniciar la actividad designada de tu app. Si falla, el mensaje de error suele indicar que no se encontró la actividad, lo que apunta a una falta de coincidencia en el nombre o la acción del paquete. Esto te ayuda a confirmar si tu app está configurada correctamente para recibir el intent de app a app antes de probar el flujo completo de extremo a extremo.
Solución de problemas: el intent abre Play Store
Cuando un usuario selecciona la verificación de app a app, si la Billetera de Google abre Play Store en lugar de tu app, significa que la Billetera de Google no pudo resolver el intent de Android necesario para iniciar tu app.
Para abrir tu app correctamente, verifica lo siguiente:
- El nombre del paquete no coincide: El nombre del paquete de la app instalada en el dispositivo debe coincidir exactamente con el nombre del paquete configurado con tu TSP.
Un error común es realizar pruebas con una compilación de depuración que puede tener un nombre de paquete diferente (p. ej.,
com.example.app.debug) que el nombre del paquete de producción (com.example.app) configurado con el TSP. El nombre del paquete distingue mayúsculas de minúsculas. - Configuración del manifiesto: Verifica que el elemento
AndroidManifest.xmlde tu app esté configurado correctamente para controlar la acción del intent. La etiqueta<action>en el<intent-filter>de tu manifiesto debe coincidir exactamente, carácter por carácter, con la cadena de acción configurada con tu TSP. - Configuración del TSP: El TSP envía el nombre del paquete y la acción a Google Pay. Cualquier corrección a estos valores debe realizarse en los datos que envías a tu TSP o en el portal de configuración del TSP. La Billetera de Google no ajusta estos valores, sino que los pasa tal cual. Para obtener más información, consulta la documentación de tu TSP.
Activa el token
Hay dos formas de activar los tokens:
- Llamando a las APIs del servidor del TSP para activar el token directamente
- Obteniendo un código de activación del TSP y pasándolo en el resultado de
Activity
Realiza la activación con las APIs del servidor del TSP
Cuando la app para dispositivos móviles del banco emisor de la tarjeta usa la API del TSP para activar el token, dicha app recibe el Intent, autentica al titular de la tarjeta y activa el token llamando a la API del TSP. Al final de este flujo, le indicas a la Billetera de Google si la activación fue exitosa o no cuando regreses al usuario a la Billetera de Google. Revisa la documentación técnica de tu TSP para saber cómo puedes activar tokens con sus APIs del servidor.
Cuando realizas la activación con la API del TSP, tu app no le devuelve un código a la Billetera de Google, y la activación del token ocurre “fuera de banda” desde la perspectiva de Google Pay.

Esta es una muestra de código para regresar al usuario a la Billetera de Google después de que el proceso de activación se complete con la técnica de API del TSP.
Intent resultIntent = new Intent();
resultIntent.putExtra("BANKING_APP_ACTIVATION_RESPONSE", "approved");
// or "declined", or "failure"
activity.setResult(RESULT_OK, resultIntent);
Realiza la activación con el resultado de intent de Android y el código de activación del TSP
Cuando la app para dispositivos móviles del banco emisor de la tarjeta obtiene un código de activación del TSP y lo devuelve a la Billetera de Google, la app de la entidad emisora le devuelve un código de activación a la Billetera de Google mediante un resultado de intent.
Este método requiere un código de activación generado por tu TSP. Consulta con tu TSP si se admite este método y cómo generar un código de activación, que a veces también se denomina código de autenticación o valor de autenticación de asignación de token (TAV).

A continuación, se muestra un código de muestra para regresar al usuario a la Billetera de Google con un código de activación.
Intent resultIntent = new Intent();
resultIntent.putExtra("BANKING_APP_ACTIVATION_RESPONSE", "approved");
// or "declined", or "failure"
// if "approved", also pass the code
resultIntent.putExtra("BANKING_APP_ACTIVATION_CODE", activationCode);
activity.setResult(RESULT_OK, resultIntent);
Seguridad de la app para dispositivos móviles
La app para dispositivos móviles del banco emisor de la tarjeta debe poder cumplir con el modelo de seguridad de Android, sobre todo en lo que respecta al uso de intents. Después de recibir el intent, usa Activity.getCallingPackage para validar que la actividad de llamada sea realmente de la Billetera de Google, como se indica a continuación.
// Validate caller is Google Wallet (Google Play Services)
if ("com.google.android.gms".equals(getCallingPackage())) {
// Proceed with token activation
...
} else {
// Abort token activation: handle error
...
}
Asegúrate de que tu app para dispositivos móviles haga lo siguiente:
- Autenticar la identidad del titular de la tarjeta
- Obtener el consentimiento del titular de la tarjeta para cada solicitud de digitalización
- Verificar que la digitalización se relacione con la cuenta de titular de la tarjeta correcta
Consulta la documentación técnica de tu TSP sobre la activación de tokens y el sitio para desarrolladores de Android para saber cómo enviar, permitir y recibir Intents.