API Android APK Authentication

A autenticação pode ocorrer em três ambientes diferentes:

  • App Android do integrador de pagamentos
  • Site para dispositivos móveis do integrador de pagamentos
  • Site para computadores do integrador de pagamentos

Independentemente do fluxo, o Google transfere a interação do usuário para a equipe de integrador. O integrador de pagamentos pode mostrar ao usuário uma interface de rede ou simplesmente retornar imediatamente se já tiver os dados apropriados. Todos os fluxos fazem com que o integrador produza um AuthenticationResponse. Isso a resposta é assinada e enviada ao Google.

Os sites para dispositivos móveis e computador devem seguir a API WebRedirect Authentication Especificação, enquanto o fluxo do app Android precisa seguir a Especificação da API Authentication.

Os integradores precisam implementar uma solução de APK do Android para autenticar os usuários. Essa autenticação é uma modalidade diferente, mas tem a mesma finalidade autenticação do provedor Web autenticação.

Um usuário faz a autenticação com o integrador de pagamentos por meio de uma conta do Android Activity. A intenção de autenticação é invocada durante a associação de contas e para e desafios dos usuários. Para impedir que o Android encerre o Google Play na histórico durante a autenticação, o integrador precisa incluir o seguindo no tema da atividade.

<item name="android:windowIsTranslucent">true</item>

Definição de método

A intent precisa ter estas propriedades:

Propriedades do método
Ação com.google.android.payments.standard.AUTHENTICATE_V1
Categoria android.intent.category.DEFAULT

Solicitação

Campos
gspAuthenticationRequest AuthenticationRequest

Solicitação de autenticação.

gspAssociationId string

Se presente, contém um identificador que o integrador usa para procurar credenciais para o usuário contestado. Se ele não estiver presente, o usuário tem a opção de alterar a identificação da conta.

Resposta

Depois que o usuário concluir a autenticação, o aplicativo precisará enviar um resultado de volta para o Google. Se a autenticação for bem-sucedida, crie uma intent e adicione a gspAuthenticationResponse codificada como um extra. Em seguida, defina o resultado da atividade para o código de resultado apropriado.

...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();

Resultado

Campos
resultado int

Activity.RESULT_OK
Autenticação com êxito.
Activity.RESULT_CANCELED O usuário cancelou o fluxo manualmente e ele deve ser abortado.
Activity.RESULT_FIRST_USER A autenticação falhou por um motivo fatal, e o fluxo deve ser cancelada. O servidor IE retornou uma resposta HTTP 500 ao fazer login.

Extras

Campos
gspAuthenticationResponse AuthenticationResponse

Resposta da autenticação. Esse valor codificado não pode exceder 1 KB.

Outros requisitos de atividade

A atividade compatível com a ação AUTHENTICATE_V1 mencionada acima precisa verifique também se os autores das chamadas da API vêm apenas de aplicativos assinados pelo Google. Isso vai ajudar a evitar que outros apps tentem invocar sua atividade e recuperar tokens de identidade. Isso pode ser feito usando o StandardPaymentUtils.verifyCallingActivityIsGoogleSigned logo após super.onCreate em sua Atividade implementação.

Veja uma amostra:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

Todas as atividades invocadas no fluxo de authenticate precisam fornecer uma atividade tema que tem windowIsTranslucent=true. Isso deve ser feito com o O atributo android:theme do AndroidManifest e não usa Context.setTheme(). De maneira programática, a definição do tema não funciona corretamente para a janela. translucência. O Google vai exigir que a primeira atividade iniciada siga essa mas quaisquer subatividades que também forem iniciadas devem seguir este padrão Caso contrário, as compras de desenvolvedores terceirizados podem não funcionar.