Android APK Authentication API

身份验证可在三种不同的环境中进行:

  • 付款集成商的 Android 应用
  • 付款集成商的移动网站
  • 付款集成商的桌面版网站

无论流程如何,Google 都会将用户互动操作交给付款服务 集成商的软件付款集成商可以选择向用户显示 或者如果已有相应的数据,则直接返回。 所有流程都会导致集成商生成 AuthenticationResponse。这个 签名并发回给 Google。

移动网站和桌面版网站必须遵循 WebRedirect Authentication API 而 Android 应用流程必须遵循 Android 身份验证 API 规范。

集成商应实现 Android APK 解决方案来验证用户身份。 此身份验证是一种不同的模态,但与 由 Web 提供的 身份验证

用户通过 Android 设备向付款集成商进行身份验证 活动记录。 系统会在账号关联期间调用身份验证 intent, 用户面临的挑战为防止 Android 在 则集成商需要将 活动主题中的后续活动

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

方法定义

intent 需要具有以下属性:

方法属性
操作 com.google.android.payments.standard.AUTHENTICATE_V1
类别 android.intent.category.DEFAULT

请求

字段
gspAuthenticationRequest AuthenticationRequest

身份验证请求。

gspAssociationId string

如果存在,则包含集成商用于查找 提供凭据。如果不存在 用户可以更改账号标识。

响应

用户完成身份验证后,您的应用需要发送一个结果 返回给 Google。如果身份验证成功,请创建一个 intent 并添加 作为 extra 发送经过加密编码的 gspAuthenticationResponse。 接下来,将 activity 结果设置为相应的结果代码。

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

结果

字段
条结果 int

Activity.RESULT_OK
身份验证成功。
Activity.RESULT_CANCELED 用户手动取消了该流程,并且该流程应被取消。
Activity.RESULT_FIRST_USER 身份验证因严重原因而失败,应按照流程 已中止。IE 服务器在登录时返回了 HTTP 500 响应。

Extra

字段
gspAuthenticationResponse AuthenticationResponse

身份验证响应。此编码值不得超过 1KB。

其他 activity 要求

支持上述 AUTHENTICATE_V1 操作的 activity 必须 还要检查该 API 的调用方是否仅来自由 Google 签名的应用。 这有助于防止其他应用尝试调用您的 activity 检索身份令牌。这可以通过使用 StandardPaymentUtils.verifyCallingActivityIsGoogleSigned super.onCreate之后, 活动 实施。

示例如下:


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

  ....
}

authenticate 数据流中调用的所有 activity 都必须提供一个 activity 主题包含 windowIsTranslucent=true。必须使用 AndroidManifest android:theme 属性,并且未使用 Context.setTheme()。 程序化地无法为窗口正确设置主题 半透明性。Google 将强制要求启动的首个 activity 遵循此 模式,但同时启动的所有子 activity 也必须遵循此 模式。如果不能,则可能无法从第三方开发者处购买。