Google Play 结算库版本说明

本文档包含 Google Play 结算库的版本说明。

Google Play 结算库 7.1.1 版本发布 (2024-10-03)

Google Play 结算库 7.1.1 版本和 Kotlin 扩展现已推出。

Bug 修复

Google Play 结算库 7.1.0 版本发布 (2024-09-19)

Google Play 结算库 7.1.0 版本和 Kotlin 扩展现已推出。

更改摘要

  • 改进了与连接状态和管理相关的线程安全性。
  • 引入了用于测试 BillingResult 响应代码的部分更改,该功能在 Play 结算库 7.1.1 中已完全发布。要使用此功能测试您的集成,您需要升级到 Play 结算库 7.1.1。存在一个 bug,只会影响启用结算覆盖测试的应用,但不影响常规使用。有关更多信息,请参阅测试 BillingResult 响应代码

Google Play 结算库 7.0.0 版本发布 (2024-05-14)

Google Play 结算库 7.0.0 版本和 Kotlin 扩展现已推出。

更改摘要

Google Play 结算库 6.2.1 版本发布 (2024-04-16)

Google Play 结算库 6.2.1 版本和 Kotlin 扩展现已推出。

更改摘要

Google Play 结算库 6.2.0 版本发布 (2024-03-06)

Google Play 结算库 6.2.0 版本和 Kotlin 扩展现已推出。

更改摘要

Google Play 结算库 6.1.0 版本发布 (2023-11-14)

Google Play 结算库 6.1.0 版本和 Kotlin 扩展现已推出。

更改摘要

Google Play 结算库 6.0.1 版本发布 (2023-06-22)

Google Play 结算库 6.0.1 版本和 Kotlin 扩展现已推出。

更改摘要

更新 Play 结算库以兼容 Android 14。

Google Play 结算库 6.0 版本发布 (2023-05-10)

Google Play 结算库 6.0.0 版本和 Kotlin 扩展现已推出。

更改摘要

  • 添加了新的 ReplacementMode 枚举,以取代 ProrationMode

    请注意,出于向后兼容性原因,ProrationMode 仍然可用。

  • 移除了 PENDING 购买的订单 ID。

    之前,即使购买待处理,订单 ID 也会始终创建。从版本 6.0.0 开始,待处理购买将不会创建订单 ID,对于这些购买,订单 ID 将在购买状态变为 PURCHASED 后填充。

  • 移除了 queryPurchaseslaunchPriceConfirmationFlow 方法。

    之前标记为弃用的 queryPurchaseslaunchPriceConfirmationFlow 方法已在 Play 结算库 6.0.0 中移除。开发者应使用 queryPurchasesAsync 代替 queryPurchases。对于 launchPriceConfirmationFlow 的替代方案,请参阅价格变化

  • 添加了新的网络错误响应代码。

    从 PBL 6.0.0 版本开始,添加了新的网络错误响应代码 NETWORK_ERROR。当因网络连接问题发生错误时,会返回此代码。这些网络连接错误之前报告为 SERVICE_UNAVAILABLE

  • 更新了 SERVICE_UNAVAILABLESERVICE_TIMEOUT

    从 PBL 6.0.0 版本开始,由于处理超时导致的错误将返回 SERVICE_UNAVAILABLE,而不是当前的 SERVICE_TIMEOUT

    在 PBL 的早期版本中,此行为不会改变。

  • 移除了 SERVICE_TIMEOUT

    从 PBL 6.0.0 版本开始,将不再返回 SERVICE_TIMEOUT。PBL 的早期版本仍将返回此代码。

  • 添加了额外的日志记录。

    Play 结算库 6 版本包含额外的日志记录,这提供了有关 API 使用情况(例如成功和失败)和服务连接问题的见解。这些信息将用于改进 Play 结算库的性能并为错误提供更好的支持。

Google Play 结算库 5.2.1 版本发布 (2023-06-22)

Google Play 结算库 5.2.1 版本和 Kotlin 扩展现已推出。

更改摘要

更新 Play 结算库以兼容 Android 14。

Google Play 结算库 5.2 版本发布 (2023-04-06)

Google Play 结算库 5.2.0 版本和 Kotlin 扩展现已推出。

更改摘要

Google Play 结算库 5.1 版本发布 (2022-10-31)

Google Play 结算库 5.1.0 版本和 Kotlin 扩展现已推出。

此版本包含以下更改。

更改摘要

Google Play 结算库 5.0 版本发布 (2022-05-11)

Google Play 结算库 5.0.0 版本和 Kotlin 扩展现已推出。

此版本包含以下更改。

更改摘要

  • 引入了新的订阅模型,包括新的实体,使您能够为单个订阅产品创建多个优惠。有关更多信息,请参阅迁移指南
  • 添加了 BillingClient.queryProductDetailsAsync(),以取代 BillingClient.querySkuDetailsAsync()
  • 添加了 setIsOfferPersonalized() 方法,用于满足欧盟个性化定价披露要求。要了解如何使用此方法,请参阅指明个性化价格
  • 移除了之前已弃用并在 Google Play 结算库 4.0.0 中被 queryPurchasesAsync 取代的 queryPurchases()
  • launchPriceChangeFlow 已弃用,并将在未来的版本中移除。要了解替代方案,请参阅启动价格变更确认流程
  • 移除了 setVrPurchaseFlow(),该方法之前在实例化购买流程时使用。在之前的版本中,此方法会将用户重定向到其 Android 设备上完成购买。移除此方法后,用户将通过标准购买流程完成购买。

Google Play 结算库 4.1 版本发布 (2022-02-23)

Google Play 结算库 4.1.0 版本和 Kotlin 扩展现已推出。

此版本包含以下更改。

更改摘要

Google Play 结算库 4.0 版本发布 (2021-05-18)

Google Play 结算库 4.0.0 版本和 Kotlin 扩展现已推出。

更改摘要

Google Play 结算库 3.0.3 版本发布 (2021-03-12)

Google Play 结算库 3.0.3 版本、Kotlin 扩展和 Unity 插件现已推出。

Java 和 Kotlin Bug 修复

  • 修复调用 endConnection() 时出现的内存泄漏问题。
  • 修复了 Google Play 结算库被使用单一任务启动模式的应用使用时出现的问题。当应用从 Android 启动器恢复,且在暂停前结算对话框可见时,会触发 onPurchasesUpdated() 回调。

Unity Bug 修复

  • 更新到 Java 3.0.3 版本,以修复内存泄漏并解决当应用从 Android 启动器恢复且在暂停前结算对话框可见时阻止购买的问题。

Google Play 结算库 3.0.2 版本发布 (2020-11-24)

Google Play 结算库 3.0.2 版本和 Kotlin 扩展现已推出。

Bug 修复

  • 修复了 Kotlin 扩展中协程因错误“Already resumed”而失败的 bug。
  • 修复了将 Kotlin 扩展与 kotlinx.coroutines 库 1.4+ 版本一起使用时未解析的引用问题。

Google Play 结算库 3.0.1 版本发布 (2020-09-30)

Google Play 结算库 3.0.1 版本和 Kotlin 扩展现已推出。

Bug 修复

  • 修复了一个 bug,当应用在结算流程中被终止并恢复时,PurchasesUpdatedListener 可能不会被调用并返回购买结果。

Google Play 结算库 3.0 版本发布 (2020-06-08)

Google Play 结算库 3.0.0 版本、Kotlin 扩展和 Unity 插件现已推出。

更改摘要

  • 移除了奖励 SKU 支持。
  • 移除了 ChildDirectedUnderAgeOfConsent 参数。
  • 移除了已弃用的开发者载荷方法。
  • 移除了已弃用的方法 BillingFlowParams.setAccountId()BillingFlowParams.setDeveloperId()
  • 移除了已弃用的方法 BillingFlowParams.setOldSkus(String oldSku)BillingFlowParams.addOldSku(String oldSku)
  • 添加了可空性注解。

Bug 修复

Google Play 结算库 2.2.1 版本发布 (2020-05-20)

Google Play 结算库 2.2.1 版本现已推出。

Bug 修复

  • 更新了 Kotlin 扩展所依赖的 Java Play 结算库的默认版本。

Google Play 结算库 2.2.0 版本发布和 Unity 支持 (2020-03-23)

Google Play 结算库 2.2.0 版本提供了帮助开发者确保购买归属正确用户的功能。这些更改取代了基于开发者载荷构建自定义解决方案的需求。作为本次更新的一部分,开发者载荷功能已弃用,并将在未来的版本中移除。有关更多信息(包括推荐的替代方案),请参阅开发者载荷

Google Play 结算库 2 Unity 版本

除了当前的 Google Play 结算库 2 Java 和 Kotlin 版本外,我们还发布了用于 Unity 的库版本。使用 Unity 应用内购 API 的游戏开发者现在可以升级,以利用 Google Play 结算库 2 的所有功能,并使后续升级到未来版本的 Google Play 结算库更加容易。

要了解更多信息,请参阅将 Google Play 结算与 Unity 配合使用

更改摘要

Google Play 结算库 2.1.0 版本发布和 Kotlin 扩展 2.1.0 版本发布 (2019-12-10)

Google Play 结算库 2.1.0 版本和新的 Kotlin 扩展现已推出。Play 结算库 Kotlin 扩展为 Kotlin 使用提供了惯用的 API 替代方案,具有更好的空安全和协程。有关代码示例,请参阅使用 Google Play 结算库

此版本包含以下更改。

更改摘要

  • BillingFlowParams 中,弃用了 setOldSku(String oldSku),并替换为 setOldSku(String oldSku, String purchaseToken),以区分设备上多个账户拥有相同 SKU 的情况。

Google Play 结算库 2.0.3 版本发布 (2019-08-05)

Google Play 结算库 2.0.3 版本现已推出。

Bug 修复

  • 修复了一个 bug,querySkuDetailsAsync() 有时会因代码 DEVELOPER_ERROR 而失败,而不是返回成功结果。

Google Play 结算库 2.0.2 版本发布 (2019-07-08)

Google Play 结算库 2.0.2 版本现已推出。此版本包含对参考文档的更新,不改变库的功能。

Google Play 结算库 2.0.1 版本发布 (2019-06-06)

Google Play 结算库 2.0.1 版本现已推出。此版本包含以下更改。

Bug 修复

  • 修复了在某些情况下调试消息返回 null 的 bug。
  • 修复了潜在的内存泄漏问题。

Google Play 结算库 2.0 版本发布 (2019-05-07)

Google Play 结算库 2.0 版本现已推出。此版本包含以下更改。

购买必须在三天内确认

Google Play 支持在您的应用内部(应用内)或应用外部(应用外)购买产品。为了让 Google Play 无论用户在哪里购买您的产品都能确保一致的购买体验,您必须在授予用户权限后尽快确认通过 Google Play 结算库收到的所有购买。如果您未在三天内确认购买,用户将自动收到退款,并且 Google Play 将撤销购买。对于 待处理交易(版本 2.0 中的新增功能),三天窗口期从购买状态变为 PURCHASED 开始计算,在购买处于 PENDING 状态时此规则不适用。

对于订阅,您必须确认任何具有新购买令牌的购买。这意味着所有初始购买、计划变更和重新注册都需要确认,但您无需确认后续的续订。要确定购买是否需要确认,您可以检查购买中的确认字段。

Purchase 对象现在包含一个 isAcknowledged() 方法,该方法指示购买是否已被确认。此外,Google Play Developer API 为 Purchases.productsPurchases.subscriptions 提供了确认布尔值。在确认购买之前,请务必使用这些方法确定购买是否已被确认。

您可以使用以下任一方法确认购买

  • 对于可消耗产品,请使用客户端 API 中的 consumeAsync()
  • 对于不可消耗的产品,请使用客户端 API 中的 acknowledgePurchase()
  • Server API 中也提供了一个新的 acknowledge() 方法。

BillingFlowParams.setSku() 已移除

此版本中已移除之前已弃用的 BillingFlowParams#setSku() 方法。在购买流程中渲染产品之前,您现在必须调用 BillingClient.querySkuDetailsAsync(),并将生成的 SkuDetails 对象传递给 BillingFlowParams.Builder.setSkuDetails()

有关代码示例,请参阅使用 Google Play 结算库

支持开发者载荷

Google Play 结算库 2.0 版本增加了对开发者载荷的支持,开发者载荷是可以附加到购买上的任意字符串。您可以将开发者载荷参数附加到购买,但只能在购买被确认或消耗时附加。这与 AIDL 中的开发者载荷不同,在 AIDL 中可以在启动购买流程时指定载荷。由于现在可以从应用外部发起购买,因此此更改确保您始终有机会将载荷添加到购买中。

要在新库中访问载荷,Purchase 对象现在包含一个 getDeveloperPayload() 方法。

一致的优惠

当您提供打折 SKU 时,Google Play 现在会返回 SKU 的原始价格,以便您可以向用户显示他们正在获得折扣。

SkuDetails 包含两个用于检索原始 SKU 价格的新方法

待处理交易

使用 Google Play 结算库 2.0 版本,您必须支持在授予权限之前需要额外操作的购买。例如,用户可能选择在实体店使用现金购买您的应用内产品。这意味着交易在您的应用外部完成。在这种情况下,您应仅在用户完成交易后授予权限。

要启用待处理购买,请在初始化应用时调用 enablePendingPurchases()

使用 Purchase.getPurchaseState() 确定购买状态是 PURCHASED 还是 PENDING。请注意,您应该仅在状态为 PURCHASED 时授予权限。您应该通过执行以下操作检查 Purchase 状态更新

  1. 启动应用时,调用 BillingClient.queryPurchases() 检索与用户关联的未消耗产品列表。
  2. 对每个返回的 Purchase 对象调用 Purchase.getPurchaseState()
  3. 实现 onPurchasesUpdated() 方法,以响应 Purchase 对象的更改。

此外,Google Play Developer API 为 Purchases.products 包含 PENDING 状态。订阅不支持待处理交易。

此版本还引入了一种新的实时开发者通知类型 OneTimeProductNotification。此通知类型包含一个消息,其值为 ONE_TIME_PRODUCT_PURCHASEDONE_TIME_PRODUCT_CANCELED。此通知类型仅发送给与延迟付款方式(如现金)相关的购买。

确认待处理购买时,请务必仅在购买状态为 PURCHASED 时确认,而不是在 PENDING 时确认。

API 变更

Google Play 结算库 2.0 版本包含多项 API 变更,以支持新功能并澄清现有功能。

consumeAsync

consumeAsync() 现在接受一个 ConsumeParams 对象,而不是 purchaseTokenConsumeParams 包含 purchaseToken 以及可选的开发者载荷。

此版本已移除之前的 consumeAsync() 版本。

queryPurchaseHistoryAsync

为了尽量减少混淆,queryPurchaseHistoryAsync() 现在返回一个 PurchaseHistoryRecord 对象,而不是 Purchase 对象。PurchaseHistoryRecord 对象与 Purchase 对象相同,只是它仅反映 queryPurchaseHistoryAsync() 返回的值,并且不包含 autoRenewingorderIdpackageName 字段。请注意,返回的数据没有变化——queryPurchaseHistoryAsync() 返回与之前相同的数据。

BillingResult 返回值

之前返回 BillingResponse 整数值的 API 现在返回一个 BillingResult 对象。BillingResult 包含 BillingResponse 整数以及可用于诊断错误的调试字符串。调试字符串使用 en-US 区域设置,不 intended 用于显示给最终用户。

Bug 修复

Google Play 结算库 1.2.2 版本发布 (2019-03-07)

Google Play 结算库 1.2.2 版本现已推出。此版本包含以下更改。

Bug 修复

  • 修复了 v1.2.1 中引入的线程问题。后台调用不再阻塞主线程。

其他更改

  • 尽管仍建议使用主线程,但您现在可以从后台线程实例化 Google Play 结算库。
  • 实例化已完全迁移到后台线程,以减少导致 ANR 的可能性。

Play 结算库 1.2.1 版本发布 (2019-03-04)

Google Play 结算库 1.2.1 版本现已推出。此版本包含以下更改。

主要更改

其他更改

  • 添加了 PurchasesResultSkuDetailsResult 的公共构造函数,以使测试更容易。
  • SkuDetails 对象可以使用一个新方法 getOriginalJson()
  • 所有 AIDL 服务调用现在都由后台线程处理。

Bug 修复

  • 不再将 Null 回调监听器传递给公共 API。

Google Play 结算库 1.2 版本发布 (2018-10-18)

Google Play 结算库 1.2 版本现已推出。此版本包含以下更改。

更改摘要

  • Google Play 结算库现在根据 Android 软件开发工具包许可协议获得许可。
  • 添加了 launchPriceChangeConfirmationFlow API,该 API 提示用户查看订阅价格的待定更改。
  • 在升级或降级用户订阅时,添加了对新分摊模式 DEFERRED 的支持。
  • BillingFlowParams 类中,将 setSku() 替换为 setSkuDetails()
  • 次要错误修复和代码优化。

价格变更确认

您现在可以在 Google Play 管理中心更改订阅价格,并在用户进入应用时提示用户查看并接受新价格。

要使用此 API,请使用订阅产品的 skuDetails 创建一个 PriceChangeFlowParams 对象,然后调用 launchPriceChangeConfirmationFlow()。实现 PriceChangeConfirmationListener 来处理价格变更确认流程完成时的结果,如下面的代码片段所示

Kotlin

val priceChangeFlowParams = PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build()

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        object : PriceChangeConfirmationListener() {
            override fun onPriceChangeConfirmationResult(responseCode: Int) {
                // Handle the result.
            }
        })

Java

PriceChangeFlowParams priceChangeFlowParams =
        PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build();

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        new PriceChangeConfirmationListener() {
            @Override
            public void onPriceChangeConfirmationResult(int responseCode) {
                // Handle the result.
            }
        });

价格变更确认流程会显示一个包含新定价信息的对话框,要求用户接受新价格。此流程返回类型为 BillingClient.BillingResponse 的响应代码。

新的分摊模式

在升级或降级用户订阅时,您可以使用新的分摊模式 DEFERRED。此模式会在用户订阅下次续订时更新。要了解如何设置此分摊模式,请参阅设置分摊模式

设置 SKU 详情的新方法

BillingFlowParams 类中,setSku() 方法已弃用。此更改旨在优化 Google Play 结算流程。

在应用内结算客户端中构造 BillingFlowParams 的新实例时,建议您改为直接使用 setSkuDetails() 处理 JSON 对象,如下面的代码片段所示

BillingFlowParams Builder 类中,setSku() 方法已弃用。请改为使用 setSkuDetails() 方法,如下面的代码片段所示。传递给 setSkuDetails() 对象的对象来自 querySkuDetailsAsync() 方法。

Kotlin

private lateinit var mBillingClient: BillingClient
private val mSkuDetailsMap = HashMap<String, SkuDetails>()

private fun querySkuDetails() {
    val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder()
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build()
    ) { responseCode, skuDetailsList ->
        if (responseCode == 0) {
            for (skuDetails in skuDetailsList) {
                mSkuDetailsMap[skuDetails.sku] = skuDetails
            }
        }
    }
}

private fun startPurchase(skuId: String) {
    val billingFlowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(mSkuDetailsMap[skuId])
    .build()
}

Java

private BillingClient mBillingClient;
private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>();

private void querySkuDetails() {
    SkuDetailsParams.Builder skuDetailsParamsBuilder
            = SkuDetailsParams.newBuilder();
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(int responseCode,
                        List<SkuDetails> skuDetailsList) {
                    if (responseCode == 0) {
                        for (SkuDetails skuDetails : skuDetailsList) {
                            mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                        }
                    }
                }
            });
}

private void startPurchase(String skuId) {
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
}

Play 结算库 1.1 版本发布 (2018-05-07)

Google Play 结算库 1.1 版本现已推出。此版本包含以下更改。

更改摘要

  • 在升级/降级现有订阅时,添加了在 BillingFlowParams 中指定分摊模式的支持。
  • BillingFlowParams 中的 replaceSkusProration 布尔标志不再受支持。请改用 replaceSkusProrationMode
  • launchBillingFlow() 现在会触发失败响应的回调。

行为变更

Google Play 结算库 1.1 版本包含以下行为变更。

开发者可以在 BillingFlowParams 类中设置 replaceSkusProrationMode

ProrationMode 在升级或降级用户订阅时提供有关分摊类型的更多详细信息。

Kotlin

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build()

Java

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build();

目前,Google Play 支持以下分摊模式

IMMEDIATE_WITH_TIME_PRORATION 替换立即生效,新的过期时间将按比例计算并计入或扣除用户的费用。这是当前的默认行为。
IMMEDIATE_AND_CHARGE_PRORATED_PRICE 注意:此选项仅适用于订阅升级。

IMMEDIATE_WITHOUT_PRORATION

替换立即生效,新价格将在下次续订时收取。结算周期保持不变。 BillingFlowParams 类中不再支持 replaceSkusProration

开发者过去可以设置一个布尔标志,以便对订阅升级请求收取按比例计算的金额。鉴于我们支持包含更详细分摊说明的 ProrationMode,因此不再支持此布尔标志。

launchBillingFlow() 现在会触发失败响应的回调

结算库将始终触发 PurhcasesUpdatedListener 回调,并异步返回一个 BillingResponse。同时也保留了 BillingResponse 的同步返回值。

在服务断开连接时,异步方法会正确提前退出。

Bug 修复

Google Play 结算库 1.0 版本现已推出。此版本包含以下更改。

重要变更

在库的清单中嵌入了结算权限。不再需要在 Android 清单中添加 com.android.vending.BILLING 权限。

  • BillingClient.Builder 类添加了新的构建器。
  • SkuDetailsParams 类引入了构建器模式,用于查询 SKU 的方法。
  • 为了保持一致性,更新了几个 API 方法(相同的返回参数名称和顺序)。
  • Google Play 结算库 1.0 版本包含以下行为变更。

行为变更

BillingClient.Builder 类

BillingClient.Builder 现在通过 newBuilder 模式初始化

launchBillingFlow 方法现在使用 BillingFlowParams 类调用

Kotlin

billingClient = BillingClient.newBuilder(context).setListener(this).build()

Java

billingClient = BillingClient.newBuilder(context).setListener(this).build();

要启动购买或订阅的结算流程,launchBillingFlow() 方法接收一个使用请求特定参数初始化的 BillingFlowParams 实例

查询可用产品的新方法

Kotlin

BillingFlowParams.newBuilder().setSku(skuId)
        .setType(billingType)
        .setOldSku(oldSku)
        .build()

// Then, use the BillingFlowParams to start the purchase flow
val responseCode = billingClient.launchBillingFlow(builder.build())

Java

BillingFlowParams.newBuilder().setSku(skuId)
                              .setType(billingType)
                              .setOldSku(oldSku)
                              .build();

// Then, use the BillingFlowParams to start the purchase flow
int responseCode = billingClient.launchBillingFlow(builder.build());

queryPurchaseHistoryAsync()querySkuDetailsAsync() 方法的参数被封装到 Builder 模式中

为了您的方便并与我们的 API 保持一致,结果现在通过结果代码和 SkuDetails 对象列表返回,而不是之前的包装类

Kotlin

val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList)
        .setType(itemType)
billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() {
    ...
})

Java

SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList)
        .setType(itemType);
billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})

onConsumeResponse() 方法的参数顺序发生变化

Kotlin

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

Java

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

为了与我们的 API 保持一致,来自 ConsumeResponseListener 接口的 onConsumeResponse 的参数顺序已更改

解包的 PurchaseResult 对象

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

为了与我们的 API 保持一致,PurchaseResult 已被解包

PURCHASES_UPDATED Bundle 中没有响应代码

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

Bug 修复

开发者预览版已启动,旨在简化结算相关的开发流程,使开发者能够将精力集中在实现 Android 应用特有的逻辑上,例如应用架构和导航结构。

该库包含多个方便的类和功能,您可以在将 Android 应用与 Google Play Billing API 集成时使用。该库还在 Android Interface Definition Language (AIDL) 服务之上提供了一个抽象层,使开发者更容易定义应用与 Google Play Billing API 之间的接口。

本页面上的内容和代码示例受内容许可中描述的许可协议约束。Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。