历史上,开发者负载用于各种用途,包括欺诈预防和将购买归因于正确的用户。使用 2.2 版及更高版本的 Google Play 计费库,以前依赖开发者负载的预期用例现在已在库的其他部分得到完全支持。
有了这项支持,我们已经弃用了开发者负载,从 2.2 版的 Google Play 计费库开始。与开发者负载相关的 method 已在 2.2 版中弃用,并在 3.0 版中移除。请注意,您的应用可以继续检索使用库的先前版本或 AIDL 进行的购买的开发者负载。
有关更改的详细列表,请参阅 Google Play 计费库 2.2 发行说明 和 Google Play 计费库 3.0 发行说明。
购买验证
为确保购买是真实的,而不是伪造的或重播的,Google 建议使用购买令牌(从 getPurchaseToken()
方法(在 Purchase
对象中)获取)以及 Google Play 开发者 API 来验证购买的真实性。有关更多信息,请参阅 打击欺诈和滥用行为。
购买归因
许多应用,尤其是游戏,需要确保购买正确地归因于启动购买的游戏角色/头像或应用内用户资料。从 Google Play 计费库 2.2 版开始,您的应用可以在启动购买对话框时将模糊的帐户和个人资料标识符传递给 Google,并在检索购买时将其返回。
使用 setObfuscatedAccountId()
和 setObfuscatedProfileId()
参数(在 BillingFlowParams
中),并使用 getAccountIdentifiers()
方法(在 Purchase
对象中)检索它们。
将元数据与购买关联
Google 建议将有关购买的元数据存储在您维护的安全后端服务器上。此购买元数据应与使用 getPurchaseToken
方法(在 Purchase
对象中)获取的购买令牌相关联。在成功购买后,当您的 PurchasesUpdatedListener
被调用时,可以通过将购买令牌和元数据传递到您的后端来持久保存此数据。
为确保在购买流程中断的情况下关联元数据,Google 建议在启动购买对话框之前将元数据存储在您的后端服务器上,并将其与用户的帐户 ID、正在购买的 SKU 和当前时间戳关联。
如果购买流程在调用PurchasesUpdatedListener
之前中断,您的应用会在恢复并调用BillingClient.queryPurchasesAsync()
后发现该购买。然后,您可以将从Purchase
对象的getPurchaseTime()
、getSku()
和getPurchaseToken()
方法检索到的值发送到您的后端服务器,以查找元数据,将元数据与购买令牌关联,并继续处理购买。请注意,您最初存储的时间戳不会与Purchase
对象的getPurchaseTime()
中的值完全匹配,因此您需要以近似的方式进行比较。例如,您可以检查这些值是否在彼此的某个时间段内。