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