L'autenticazione può avvenire in tre diversi ambienti:
- App per Android dell'integratore di pagamenti
- Sito web mobile dell'integratore dei pagamenti
- Sito web desktop dell'integratore di pagamenti
Indipendentemente dal flusso, Google trasferisce l'interazione dell'utente al team il software dell'integratore. L'integratore dei pagamenti può scegliere di mostrare all'utente una a riga di comando o semplicemente ritorna immediatamente se dispone già dei dati appropriati. Tutti i flussi portano all'integratore che produce una AuthenticationResponse. Questo la risposta viene firmata e rinviata a Google.
I siti web mobile e desktop devono seguire l'API WebRedirect Authentication specifica, mentre il flusso dell'app per Android deve rispettare le Specifica dell'API Authentication.
Gli integratori devono implementare una soluzione APK Android per autenticare gli utenti. Questa autenticazione è una modalità diversa, ma ha lo stesso scopo della l'autenticazione fornita dal Web autenticazione.
Un utente esegue l'autenticazione presso l'integratore dei pagamenti tramite un dispositivo Android Attività. L'intent di autenticazione viene richiamato durante l'associazione dell'account e per e le sfide dell'utente. Per impedire ad Android di terminare la riproduzione sul in background durante l'autenticazione, l'integratore deve includere seguito nel tema dell'attività.
<item name="android:windowIsTranslucent">true</item>
Definizione del metodo
L'intent deve avere le seguenti 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 che l'integratore utilizza per cercare le credenziali dell'utente a cui è stata richiesta la verifica. Se non è presente, l'utente può cambiare l'identificazione dell'account. |
Risposta
Dopo che l'utente completa l'autenticazione, l'applicazione deve inviare un risultato a Google. Se l'autenticazione ha esito positivo, crea un intent e aggiungi la codifica gspAuthenticationResponse criptata come extra. Imposta quindi 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 superare 1 kB. |
Altri requisiti per le attività
L'attività che supporta l'azione AUTHENTICATE_V1
sopra citata deve
Verificare inoltre che i chiamanti dell'API provengano solo da applicazioni firmate da Google.
Ciò aiuterà a impedire ad altre app di tentare di richiamare la tua attività e
e recuperare i token di identità. A questo scopo, utilizza lo strumento
StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
subito dopo super.onCreate
all'interno di
Attività
implementazione.
Ecco un esempio:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Tutte le attività richiamate nel flusso authenticate
devono fornire un'attività
tema con windowIsTranslucent=true
. Questa operazione deve essere eseguita utilizzando
Attributo android:theme di AndroidManifest e non utilizzare Context.setTheme()
.
L'impostazione del tema in modo programmatico non funziona correttamente per la finestra
traslucenza. Google richiederà che la prima attività avviata segua questo
ma anche le eventuali attività secondarie avviate devono seguire questo
pattern. In caso contrario, gli acquisti effettuati da sviluppatori di terze parti potrebbero non funzionare.