Verificación de app a app

Las entidades emisoras pueden ofrecer verificación de app a app como opción para completar un desafío de ID&V 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:

En el siguiente flujo, se muestra una experiencia de usuario abstracta del proceso de verificación de app a app:

a2a-sample-flow

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:

  1. Recibir el intent de la Billetera de Google
  2. Autenticar al titular de la tarjeta
  3. Activar el token
  4. Regresar al usuario a la Billetera de Google llamando a activity.setResult(RESULT_OK, ...)

Recepción del 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 nos proporcionan por medio del TSP. Para recibir el Intent de nuestra llamada, deberás 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. El siguiente ejemplo 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 Billetera de Google
// 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
...

Activación del token

Hay dos formas de activar los tokens:

Activación con las APIs de 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, simplemente 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.

Cuando realizas la activación con la API del TSP, tu app no le devuelve un código a Google Pay, y la activación del token ocurre "fuera de banda" desde la perspectiva de Google Pay.

a2a-activation-using-tsp-api

A continuación, hay 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);

Código de activación

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. Consúltale a tu TSP 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 tokenización (TAV).

a2a-activation-using-activation-code

A continuación, hay una muestra de código 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 Billetera de Google (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.