Android APK API аутентификации

Аутентификация может происходить в трех различных средах:

  • Android-приложение платежного интегратора
  • Мобильный сайт платежного интегратора
  • Десктопный веб-сайт платежного интегратора

Независимо от потока, Google передает взаимодействие с пользователем программному обеспечению платежного интегратора. Платежный интегратор может показать пользователю интерфейс или просто немедленно вернуться, если у него уже есть соответствующие данные. Все потоки приводят к тому, что интегратор создает ответ AuthenticationResponse. Этот ответ подписывается и отправляется обратно в Google.

Веб-сайты для мобильных устройств и настольных компьютеров должны соответствовать спецификации API аутентификации WebRedirect, а поток приложений Android должен соответствовать спецификации API аутентификации Android.

Интеграторам следует реализовать решение Android APK для аутентификации пользователей. Эта аутентификация представляет собой другой метод, но имеет ту же цель, что и аутентификация, обеспечиваемая веб-аутентификацией .

Пользователь проходит аутентификацию у интегратора платежей через действие Android . Намерение аутентификации вызывается во время привязки учетной записи и для задач пользователя. Чтобы Android не завершал работу Play в фоновом режиме во время аутентификации, интегратору необходимо включить в тему действия следующее.

<item name="android:windowIsTranslucent">true</item>

Определение метода

Намерение должно иметь следующие свойства:

Свойства метода
Действие com.google.android.payments.standard.AUTHENTICATE_V1
Категория android.intent.category.DEFAULT

Запрос

Поля
gspAuthenticationRequest AuthenticationRequest

Запрос аутентификации.

gspAssociationId string

Если он присутствует, он содержит идентификатор, который интегратор использует для поиска учетных данных запрашиваемого пользователя. Если его нет, пользователь имеет возможность изменить идентификацию учетной записи.

Ответ

После того как пользователь завершит аутентификацию, вашему приложению необходимо отправить результат обратно в Google. Если аутентификация прошла успешно, создайте намерение и добавьте зашифрованный gspAuthenticationResponse в качестве дополнительного. Затем установите для результата действия соответствующий код результата.

...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();

Результат

Поля
результат int

Activity.RESULT_OK
Аутентификация прошла успешно.
Activity.RESULT_CANCELED Пользователь отменил поток вручную, и поток должен быть прерван.
Activity.RESULT_FIRST_USER Аутентификация не удалась по фатальной причине, и поток должен быть прерван. Сервер IE вернул ответ HTTP 500 при входе в систему.

Дополнительно

Поля
gspAuthenticationResponse AuthenticationResponse

Ответ аутентификации. Это закодированное значение не должно превышать 1 КБ.

Прочие требования к деятельности

Действие, поддерживающее вышеупомянутое действие AUTHENTICATE_V1 , также должно проверять, что вызывающие API поступают только из приложений, подписанных Google. Это поможет предотвратить попытки других приложений вызвать ваши действия и получить токены идентификации. Это можно сделать, используя предоставленный StandardPaymentUtils.verifyCallingActivityIsGoogleSigned сразу после super.onCreate в реализации вашей активности .

Вот образец:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

Все действия, вызываемые в потоке authenticate , должны предоставлять тему действия с windowIsTranslucent=true . Это необходимо сделать с помощью атрибута AndroidManifest android:theme, а не с помощью Context.setTheme() . Программно установка темы для прозрачности окна работает неправильно. Google будет следить за тем, чтобы первое запущенное действие соответствовало этому шаблону, но любые дополнительные действия, которые также запускаются, также должны следовать этому шаблону. В противном случае покупки у сторонних разработчиков могут не работать.