L'autenticazione può avvenire in tre diversi ambienti:
- App per Android dell'integratore dei pagamenti
- Sito web mobile dell'integratore dei pagamenti
- Sito web per computer desktop dell'integratore dei pagamenti
Indipendentemente dal flusso, Google passa l'interazione dell'utente al software dell'integratore dei pagamenti. L'integratore dei pagamenti può scegliere di mostrare all'utente un'interfaccia o semplicemente tornare immediatamente se dispone già dei dati appropriati. Tutti i flussi portano l'integratore a produrre una AuthenticationResponse. Questa risposta viene firmata e reinviata a Google.
I siti web per dispositivi mobili e desktop devono seguire la specifica dell'API Web Redirect Authentication, mentre il flusso delle app Android deve seguire la specifica dell'API Android Authentication.
Gli integratori dovrebbero implementare una soluzione APK Android per autenticare gli utenti. Questa è una modalità diversa, ma lo stesso scopo dell'autenticazione fornita dall'autenticazione web.
Un utente esegue l'autenticazione con l'integratore dei pagamenti tramite un'attività Android. L'intent di autenticazione viene richiamato durante l'associazione dell'account e in caso di problemi degli utenti. Per evitare che Android termini Play in background durante l'autenticazione, l'integratore deve includere quanto segue nel tema dell'attività.
<item name="android:windowIsTranslucent">true</item>
Definizione del metodo
L'intent deve avere queste proprietà:
Proprietà del metodo | |
---|---|
Azione |
com.google.android.payments.standard.AUTHENTICATE_V1 |
Categoria | android.intent.category.DEFAULT |
Richiesta
Campi | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
Richiesta di autenticazione. |
gspAssociationId
|
string
Se presente, contiene un identificatore utilizzato dall'integratore per cercare le credenziali dell'utente richiesto. Se non è presente, l'utente ha la possibilità di modificare l'identificazione dell'account. |
Risposta
Dopo che l'utente ha completato l'autenticazione, l'applicazione deve inviare di nuovo un intent dei risultati a Google. Se l'autenticazione ha esito positivo, crea un intent e aggiungi la codifica gspAuthenticationResponse criptata come ulteriore. Quindi, imposta il risultato dell'attività sul codice risultato appropriato.
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
Risultato
Campi | |||||||
---|---|---|---|---|---|---|---|
risultato |
int
|
Extra
Campi | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
Risposta di autenticazione. Questo valore codificato non deve essere superiore a 1 kB. |
Altri requisiti per le attività
L'attività che supporta l'azione AUTHENTICATE_V1
sopra menzionata deve inoltre verificare che i chiamanti dell'API provengano solo da applicazioni firmate da Google.
Ciò impedirà ad altre app di provare a richiamare la tua attività e recuperare i token di identità. Per farlo, puoi utilizzare StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
subito dopo super.onCreate
nell'implementazione
Activity.
Ecco un esempio:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Tutte le attività richiamate all'interno del flusso authenticate
devono fornire un tema di attività con windowIsTranslucent=true
. Questa operazione deve essere eseguita con l'attributo AndroidManifest android:theme e non utilizzando Context.setTheme()
.
In modo programmatico, l'impostazione del tema non funziona correttamente per la traslucenza delle finestre. Google imporrà che la prima attività avviata segua questo pattern, ma anche le eventuali attività secondarie avviate dovranno seguire questo pattern. In caso contrario, gli acquisti da sviluppatori di terze parti potrebbero non funzionare.