Interfejs API uwierzytelniania pakietu APK na Androida

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

Activity.RESULT_OK
Uwierzytelniono.
Activity.RESULT_CANCELED Użytkownik ręcznie anulował proces i powinien on zostać przerwany.
Activity.RESULT_FIRST_USER Uwierzytelnianie nie powiodło się z powodu błędu krytycznego i należy przerwać przepływ. Serwer IE podczas logowania zwrócił odpowiedź HTTP 500.

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ć.