Android APK API пополнения счета

Пополнение может происходить в трех различных средах:

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

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

Все потоки приводят к тому, что интегратор создает TopUpRedirectResponse . Этот ответ подписывается и отправляется обратно в Google.

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

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

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

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

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

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

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

Запрос

Поля
gspTopUpRequest TopUpRedirectRequest

Запрос на пополнение.

gspAssociationId string

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

Ответ

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

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

Результат

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

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

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

Поля
gspTopUpResponse TopUpRedirectResponse

ОБЯЗАТЕЛЬНО : Ответ на пополнение счета. Это закодированное значение не должно превышать 1 КБ.
перенаправлениеRequestId string

ОБЯЗАТЕЛЬНО : requestId , отправленный в исходном/инициирующем запросе на перенаправление платежа. Google проверит, что это соответствует отправленному requestId , и поток полного перенаправления завершится ошибкой, если он не соответствует.

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

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

Вот образец:


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

  ....
}

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