Verificação app-to-app

Os emissores podem oferecer a verificação app-to-app como uma opção para concluir um desafio de ID&V de caminho amarelo ao provisionar um token. A verificação app-to-app é configurada por seu provedor de serviços de token (TSP) e não requer nenhuma configuração por parte da equipe do Google Pay. Nesta página, explicamos como seu app interage com o app Carteira do Google, com base nas instruções de provisionamento que recebemos de seu TSP.

Quando os usuários optarem por ativar a verificação app-to-app, a Carteira do Google vai invocar o app do emissor chamando a Activity do Android especificada pelo emissor na configuração do TSP. Depois que o usuário tiver verificado sua identidade, o app do emissor retorna o controle para a Carteira do Google para concluir o fluxo de provisionamento.

Se o app não estiver instalado no dispositivo do usuário, a Carteira do Google vai abrir a página da Play Store do app. Depois de instalar o app do emissor, o usuário precisa reiniciar o fluxo.

Para oferecer suporte à verificação app-to-app, você vai precisar:

O fluxo abaixo mostra uma experiência do usuário abstrata para o processo de verificação app-to-app:

a2a-sample-flow

Configurações do TSP

Os emissores precisam fornecer os parâmetros abaixo ao TSP deles. O Google Pay recebe esses parâmetros do TSP durante o processo de tokenização e os utiliza para chamar seu app.

Parâmetro Exemplo Descrição
Nome do pacote com.example.myapp O nome do pacote (applicationId) identifica o app para dispositivos móveis do emissor que o Google Pay deve chamar na invocação da intent para iniciar o fluxo de app para app. Se o app não estiver instalado no dispositivo móvel do titular do cartão, o usuário vai ser instruído a instalá-lo da Google Play Store.
Ação com.example.bank.action.ACTIVATE_TOKEN Na chamada ao seu app, criamos uma intent explícita. A ação precisa ser fornecida na forma totalmente qualificada, incluindo o nome do pacote. Além disso, a ação precisa ser específica para uso na ativação do token.
Texto extra Esse parâmetro é usado para passar dados extras que serão incluídos na intent. Em geral, é uma estrutura JSON codificada em Base64. O valor dessa cadeia de caracteres é opaco para o Google e é fornecido como está no campo padrão EXTRA_TEXT.

Saiba mais sobre como enviar e permitir intents no Android.

Desenvolvimento de apps

Quando um usuário seleciona o método app-to-app para verificar sua identidade, o emissor do app precisa:

  1. receber a intent da Carteira do Google;
  2. autenticar o titular do cartão;
  3. ativar o token;
  4. retornar o usuário à Carteira do Google chamando activity.setResult(RESULT_OK, ...).

Receber a intent

Quando um usuário opta por verificar sua identidade usando o app do emissor, a Carteira do Google chama seu app usando o nome do pacote, a ação e o EXTRA_TEXT fornecido a nós pelo TSP. Para receber o Intent da nossa chamada, você vai precisar atualizar o manifesto do app e criar uma atividade para ativar o token.

Manifesto do app

Os emissores precisam atualizar o manifesto do Android no app para dispositivos móveis para tratar o Action de modo que a Carteira do Google possa chamá-lo durante o fluxo de app para app.

Depois que o manifesto do seu app tiver sido atualizado, a Carteira do Google poderá chamar seu app para iniciar a atividade de ativação do token no seu app.

<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>

Saiba mais sobre intents do Android na documentação e na referência para desenvolvedores do Android.

Atividade de ativação do token

Para concluir a ativação, seu app precisa iniciar uma atividade para concluir a ativação do token usando os parâmetros de ativação passados no Intent. O exemplo de código a seguir demonstra como acessar os dados do EXTRA_TEXT no Intent.

/*
 * Within issuer's mobile app AppToAppActivity
 */

// Validate caller is Carteira do 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
...

Ativar o token

Há duas maneiras de ativar tokens:

Ativar usando APIs do TSP

Quando o app para dispositivos móveis do banco emissor do cartão usa a API do TSP para ativar o token, o app do banco emissor do cartão recebe o Intent, autentica o titular do cartão e ativa o token ao chamar a API do TSP. No final desse fluxo, você indica à Carteira do Google se a ativação foi bem-sucedida ou não ao retornar o usuário ao Google Wallet. Consulte a documentação técnica do seu TSP para detalhes sobre como ativar tokens usando suas APIs.

Na ativação pela API do TSP, seu app não retorna um código para o Google Pay e a ela acontece "out of band", da perspectiva do Google Pay.

a2a-activation-using-tsp-api

Abaixo está um exemplo de código para retornar o usuário à Carteira do Google depois que o processo de ativação for concluído usando a técnica da API do TSP.

Intent resultIntent = new Intent();

resultIntent.putExtra("BANKING_APP_ACTIVATION_RESPONSE", "approved");
// or "declined", or "failure"

activity.setResult(RESULT_OK, resultIntent);

Código de ativação

Quando o app para dispositivos móveis do banco emissor do cartão recebe um código de ativação do TSP e o retorna à Carteira do Google, o app do emissor retorna um código de ativação à Carteira do Google usando um resultado de intent. Consulte seu TSP sobre como gerar um código de ativação, também chamado de código de autenticação ou valor de autenticação de tokenização (TAV, na sigla em inglês).

a2a-activation-using-activation-code

Abaixo está um exemplo de código para retornar o usuário à Carteira do Google com um código de ativação.

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);

Segurança do app para dispositivos móveis

O app para dispositivos móveis do banco emissor precisa aderir ao modelo de segurança do Android, principalmente no que se refere ao uso de intents. Após receber a intent, use Activity.getCallingPackage para validar se a atividade de chamada é mesmo da Carteira do Google, como indicado abaixo.


// Validate caller is Carteira do Google (Google Play Services)
if ("com.google.android.gms".equals(getCallingPackage())) {
    // Proceed with token activation
    ...
} else {
    // Abort token activation: handle error
    ...
}

Certifique-se de que seu app para dispositivos móveis faça o seguinte:

  • autentica a identidade do titular do cartão;
  • recebe o consentimento do titular do cartão para todas as solicitações de digitalização;
  • verifica se a digitalização se refere à conta do titular do cartão correto.

Consulte a documentação técnica do seu TSP sobre ativação do token e o site para desenvolvedores Android sobre envio, permissão e recebimento de Intents.