Uwierzytelnianie może odbywać się w 3 różnych środowiskach:
- Aplikacja integratora płatności na Androida
- Strona mobilna integratora płatności
- Strona internetowa integratora płatności na komputery
Niezależnie od tego, jak wygląda proces, Google przekazuje interakcję użytkownika z oprogramowaniem integratora płatności. Integrator płatności może wyświetlić użytkownikowi interfejs lub wrócić natychmiast, jeśli ma już odpowiednie dane. W wyniku wszystkich przepływów integrator generuje element AuthenticationResponse. Podpiszemy tę odpowiedź i odesłamy ją do Google.
Witryny w wersji na urządzenia mobilne i na komputery muszą być zgodne ze specyfikacją interfejsu WebRedirect Uwierzytelnianie API, a przepływ aplikacji na Androida – ze specyfikacją tego interfejsu.
Integrator powinien wdrożyć rozwiązanie w postaci plików APK na Androida, aby uwierzytelnić użytkowników. Uwierzytelnianie to inna metoda, ale jej cel jest taki sam jak uwierzytelnianie dostępne w ramach uwierzytelniania internetowego.
Użytkownik uwierzytelnia się u integratora płatności za pomocą aktywności na Androidzie. Intencja uwierzytelniania jest wywoływana podczas wiązania konta i w przypadku wyzwań użytkownika. Aby zapobiec kończeniu odtwarzania na Androidzie w tle podczas uwierzytelniania, integrator musi umieścić w temacie aktywności ten kod.
<item name="android:windowIsTranslucent">true</item>
Definicja metody
Intencja musi mieć te właściwości:
Właściwości metody | |
---|---|
Działanie |
com.google.android.payments.standard.AUTHENTICATE_V1 |
Kategoria | android.intent.category.DEFAULT |
Prośba
Pola | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
Prośba o uwierzytelnienie. |
gspAssociationId
|
string
Jeśli występuje, zawiera identyfikator, którego używa integrator do wyszukiwania danych logowania użytkownika, którego dotyczy test. Jeśli go nie ma, użytkownik może zmienić identyfikator konta. |
Odpowiedź
Gdy użytkownik zakończy uwierzytelnianie, aplikacja musi odesłać wynik z powrotem do Google. Jeśli uwierzytelnianie się powiedzie, utwórz intencję i jako dodatkowy dodaj zaszyfrowany zakodowany obiekt gspAuthenticationResponse. Następnie ustaw odpowiedni kod wyniku aktywności.
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
Wynik
Pola | |||||||
---|---|---|---|---|---|---|---|
wynik |
int
|
Dodatkowe treści
Pola | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
Odpowiedź dotycząca uwierzytelnienia. Długość tej zakodowanej wartości nie może przekraczać 1 KB. |
Inne wymagania dotyczące aktywności
Działanie, które obsługuje powyższe działanie AUTHENTICATE_V1
, musi też sprawdzać, czy elementy wywołujące interfejs API pochodzą tylko z aplikacji podpisanych przez Google.
Dzięki temu inne aplikacje nie będą próbować wywoływać Twojej aktywności ani pobierać tokenów tożsamości. Aby to zrobić, użyj podanego StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
zaraz po super.onCreate
w implementacji Activity.
Oto przykład:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Wszystkie działania wywoływane w ramach procesu authenticate
muszą określać motyw aktywności z atrybutem windowIsTranslucent=true
. Należy to zrobić za pomocą atrybutu AndroidManifest android:theme, a nie Context.setTheme()
.
Zautomatyzowane ustawienie motywu nie działa poprawnie w przypadku przezroczystości okna. Google będzie egzekwować, aby pierwsze uruchomione działanie było zgodne z tym schematem, ale wszystkie uruchomione działania podrzędne również muszą być zgodne z tym schematem. W przeciwnym razie zakupy od zewnętrznych deweloperów mogą nie działać.