Android APK Top Up API

充值可以在三种不同的环境中进行:

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

无论流程如何,Google 都会将用户互动操作交给付款服务 集成商的软件付款集成商实现让人熟悉的界面 但该流程必须专门用于为 用户的余额,这意味着系统应引导用户完成一个充值流程 而不是直接跳转到通用界面 进入充值流程

所有流都会导致集成商生成 TopUpRedirectResponse.此回复已经过签名并发送 返回 Google。

移动网站和桌面版网站都必须遵守 Web Top Up API 规范 而 Android App 流程必须遵守 Android Top Up API 规范。

集成商应实现 Android APK 解决方案来验证用户身份 引导用户完成一个充值流程这个 充值是一种不同的形式,但与 该 网站充值

用户通过 Android Activity。 充值 intent 可直接从用户登录的 Play 应用中调用 并有意购买。为防止 Android 在 因此集成商需要将以下内容添加到 activity 主题。

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

方法定义

intent 需要具有以下属性:

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

请求

字段
gspTopUpRequest TopUpRedirectRequest

充值请求。

gspAssociationId string

包含集成商用于查找凭据的标识符 为用户正在充值的账号这是关联 ID 关联期间在 AssociateAccountRequest 中发送的。

响应

用户完成充值流程后,您的应用需要发送 结果 intent 传回 Google。如果充值成功,请创建一个 intent 并 将经过编码的经过编码的 gspTopUpResponse 和 redirectRequestId 添加为 extra。接下来,设置活动 传递给相应的结果代码。

...
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 响应。

Extra

字段
gspTopUpResponse TopUpRedirectResponse

必需:充值响应。此编码值不得超过 1KB。
redirectRequestId string

必需:在原始/发起重定向付款请求中发送的 requestId。Google 会验证此信息是否与发送的 requestId 匹配,如果不匹配,“完成重定向”流程将失败。

其他 activity 要求

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

示例如下:


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

  ....
}

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