开发者载荷

开发者载荷历来用于各种目的,包括防欺诈和将购买归因于正确的用户。通过 Google Play 结算库 2.2 及更高版本,以前依赖开发者载荷的预期用例现在已在库的其他部分得到全面支持。

由于已提供这些支持,从 Google Play 结算库 2.2 版开始,我们已弃用开发者载荷。与开发者载荷相关的方法已在 2.2 版中被弃用,并在 3.0 版中被移除。请注意,对于使用该库早期版本或 AIDL 进行的购买,您的应用可以继续检索开发者载荷。

如需查看详细的更改列表,请参阅 Google Play 结算库 2.2 版本说明Google Play 结算库 3.0 版本说明

购买验证

为确保购买真实有效,且未被伪造或重放,Google 建议使用购买令牌(从 Purchase 对象中的 getPurchaseToken() 方法获取)以及 Google Play Developer API 来验证购买的真实性。如需了解详情,请参阅防欺诈与滥用

购买归因

许多应用,尤其是游戏,需要确保将购买正确归因于发起购买的游戏内角色/头像或应用内用户资料。从 Google Play 结算库 2.2 版开始,您的应用可以在启动购买对话框时向 Google 传递经过混淆处理的账号和资料标识符,并在检索购买时将其返回。

BillingFlowParams 中使用 setObfuscatedAccountId()setObfuscatedProfileId() 参数,并使用 Purchase 对象中的 getAccountIdentifiers() 方法进行检索。

将元数据与购买关联

Google 建议将购买相关的元数据存储在您维护的安全后端服务器上。此购买元数据应与使用 Purchase 对象中的 getPurchaseToken 方法获得的购买令牌关联。在成功购买后调用 PurchasesUpdatedListener 时,可以通过将购买令牌和元数据传递给后端来保留此数据。

为了确保在购买流程中断的情况下仍能关联元数据,Google 建议您在启动购买对话框之前将元数据存储在后端服务器上,并将其与用户的账号 ID、正在购买的 SKU 以及当前时间戳关联。

如果在调用 PurchasesUpdatedListener 之前购买流程中断,您的应用在恢复并调用 BillingClient.queryPurchasesAsync() 后会发现该购买。然后,您可以将从 Purchase 对象的 getPurchaseTime()getSku()getPurchaseToken() 方法中检索到的值发送到后端服务器,以查找元数据,将元数据与购买令牌关联,并继续处理购买。请注意,您最初存储的时间戳不会与 Purchase 对象的 getPurchaseTime() 的值完全匹配,因此您需要近似比较它们。例如,您可以检查这些值是否在彼此的某个时间段内。