Die Authentifizierung kann in drei verschiedenen Umgebungen erfolgen:
- Android-App des Zahlungsintegrators
- Mobile Website des Zahlungsintegrators
- Desktop-Website des Zahlungsintegrators
Unabhängig vom Ablauf gibt Google die Nutzerinteraktion an die Software des Zahlungsintegrators weiter. Der Zahlungsintegrator kann der Benutzeroberfläche eine Oberfläche anzeigen oder sofort zurückkehren, wenn die entsprechenden Daten bereits vorliegen. Alle Abläufe führen dazu, dass der Integrator eine AuthenticationResponse erzeugt. Diese Antwort wird signiert und an Google zurückgesendet.
Die mobilen und die Desktop-Websites müssen der Spezifikation der WebWeiterleitung Authentication API entsprechen, während der Ablauf der Android-App der Android Authentication API-Spezifikation entsprechen muss.
Integratoren sollten eine Android APK-Lösung implementieren, um die Nutzer zu authentifizieren. Diese Authentifizierung ist eine andere Modalität, aber derselbe Zweck wie die Authentifizierung, die durch die Webauthentifizierung bereitgestellt wird.
Ein Nutzer authentifiziert sich über eine Android Activity (Android-Aktivität) beim Zahlungsintegrator. Der Authentifizierungs-Intent wird während der Kontoverknüpfung und für Nutzerfragen aufgerufen. Damit Android während der Authentifizierung die Wiedergabe im Hintergrund nicht beendet, muss der Integrator Folgendes in das Aktivitätsthema aufnehmen.
<item name="android:windowIsTranslucent">true</item>
Methodendefinition
Der Intent muss folgende Attribute haben:
Methodenattribute | |
---|---|
Aktion |
com.google.android.payments.standard.AUTHENTICATE_V1 |
Kategorie | android.intent.category.DEFAULT |
Anfragen
Felder | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
Authentifizierungsanfrage. |
gspAssociationId
|
string
Falls vorhanden, enthält sie eine Kennung, mit der der Integrator die Anmeldedaten des betroffenen Nutzers abruft. Wenn diese Option nicht vorhanden ist, kann der Nutzer die Kontokennung ändern. |
Antwort
Nachdem der Nutzer die Authentifizierung abgeschlossen hat, muss Ihre Anwendung einen Ergebnis-Intent zurück an Google senden. Wenn die Authentifizierung erfolgreich ist, erstellen Sie einen Intent und fügen Sie die verschlüsselte codierte gspAuthenticationResponse als Extra hinzu. Als Nächstes legen Sie den entsprechenden Ergebniscode als Aktivitätsergebnis fest.
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
Ergebnis
Felder | |||||||
---|---|---|---|---|---|---|---|
Ergebnis |
int
|
Extras
Felder | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
Authentifizierungsantwort. Dieser codierte Wert darf 1 KB nicht überschreiten. |
Weitere Aktivitätsanforderungen
Die Aktivität, die die oben genannte AUTHENTICATE_V1
-Aktion unterstützt, muss außerdem prüfen, ob Aufrufer der API nur von von Google signierten Anwendungen stammen.
Dadurch wird verhindert, dass andere Apps versuchen, Ihre Aktivität aufzurufen und Identitätstokens abzurufen. Verwenden Sie dazu das bereitgestellte StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
direkt nach super.onCreate
in Ihrer Activity-Implementierung.
Beispiel:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Alle Aktivitäten, die im Ablauf authenticate
aufgerufen werden, müssen ein Aktivitätsthema mit windowIsTranslucent=true
angeben. Dazu musst du das AndroidManifest-Attribut „android:theme“ verwenden und nicht Context.setTheme()
.
Die programmatische Festlegung des Designs funktioniert für die Fenstertransparenz nicht richtig. Google erzwingt, dass die erste gestartete Aktivität diesem Muster folgt. Alle Unteraktivitäten, die ebenfalls gestartet werden, müssen diesem Muster entsprechen. Andernfalls funktionieren Käufe bei Drittanbietern möglicherweise nicht.