API Android APK Authentication

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

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

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.