充值可以在三种不同的环境中进行:
- 付款集成商的 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
|
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 也必须遵循此
模式。如果不能,则可能无法从第三方开发者处购买。