API Android APK Authentication

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

Activity.RESULT_OK
Autenticazione riuscita.
Activity.RESULT_CANCELED L'utente ha annullato manualmente il flusso, che dovrebbe essere interrotto.
Activity.RESULT_FIRST_USER L'autenticazione non è riuscita per un motivo irreversibile e il flusso dovrebbe essere è stata interrotta. Il server IE ha restituito una risposta HTTP 500 all'accesso.

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.