Google Play 计费库发行说明

本主题包含 Google Play 计费库的发行说明。

Google Play 计费库 7.0.0 版本 (2024-05-14)

Google Play 计费库和 Kotlin 扩展的 7.0.0 版本现已推出。

更改摘要

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

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

更改摘要

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

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

更改摘要

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

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

更改摘要

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

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

更改摘要

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

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

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

更改摘要

  • 添加了新的 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 结算库和 Kotlin 扩展程序的 5.2.1 版本现已推出。

更改摘要

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

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

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

更改摘要

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

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

此版本包含以下更改。

更改摘要

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

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

此版本包含以下更改。

更改摘要

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

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

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

此版本包含以下更改。

更改摘要

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

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

更改摘要

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

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

Java 和 Kotlin 的错误修复

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

Unity 的错误修复

  • 更新到 Java 3.0.3 版本,以修复内存泄漏并解决当应用从 Android 启动器恢复,并且结算对话框在被挂起之前可见时,导致无法进行购买的问题。

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

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

错误修复

  • 修复了 Kotlin 扩展中的一个错误,该错误会导致协程以错误 "Already resumed" 失败。
  • 修复了当 Kotlin 扩展与 kotlinx.coroutines 库版本 1.4+ 一起使用时出现的未解析引用。

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

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

错误修复

  • 修复了如果应用在结算流程中被杀死并恢复,PurchasesUpdatedListener 可能不会被调用以返回购买结果。

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

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

更改摘要

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

错误修复

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

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

错误修复

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

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

Google Play 结算库 2.2.0 版本提供了帮助开发者确保购买归因于正确用户的功能。这些更改替换了基于开发者有效负载构建自定义解决方案的必要性。作为此更新的一部分,开发者有效负载功能已弃用,并将被移除。有关更多信息,包括推荐的替代方案,请参阅 开发者有效负载

Google Play 结算库 2 for Unity

除了当前的 Java 和 Kotlin 版本的 Google Play 结算库 2 之外,我们还发布了适用于 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 结算库和新的 Kotlin 扩展的 2.1.0 版本现已推出。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 版本现已推出。

错误修复

  • 修复了 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 版本现已推出。此版本包含以下更改。

错误修复

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

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 开发者 API 为 Purchases.productsPurchases.subscriptions 都包含确认布尔值。在确认购买之前,请务必使用这些方法来确定购买是否已确认。

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

  • 对于消耗型产品,请使用 consumeAsync(),该方法位于客户端 API 中。
  • 对于未消耗的产品,请使用 acknowledgePurchase(),它位于客户端 API 中。
  • 服务器 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() 确定购买状态是否为 PURCHASEDPENDING。请注意,您应该仅在状态为 PURCHASED 时授予权利。您应该通过以下操作来检查 Purchase 状态更新

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

此外,Google Play 开发者 API 还包括 PENDING 状态,用于 Purchases.products。订阅不支持待处理的交易。

此版本还引入了一种新的实时开发者通知类型 OneTimeProductNotification。此通知类型包含一条消息,其值要么是 ONE_TIME_PRODUCT_PURCHASED,要么是 ONE_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 本地化,不应显示给最终用户。

错误修复

Google Play 结算库 1.2.2 版本(2019 年 3 月 7 日)

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

错误修复

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

其他更改

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

Play 结算库 1.2.1 版本(2019 年 3 月 4 日)

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

主要更改

其他更改

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

错误修复

  • 不再将空回调侦听器传递到公共 API。

Google Play 结算库 1.2 版本(2018 年 10 月 18 日)

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

更改摘要

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

价格变更确认

您现在可以在 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 的新实例时,建议您直接使用 JSON 对象,通过 setSkuDetails() 进行操作,如下面的代码片段所示

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 年 5 月 7 日)

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 立即生效,新的价格将在下次续订时收取。计费周期保持不变。

replaceSkusProration 不再受 BillingFlowParams 类的支持。

过去,开发者可以设置一个布尔标志,为订阅升级请求收取按比例计算的费用。鉴于我们支持包含更多计费方式说明的 ProrationMode,因此不再支持此布尔标志。

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

结算库将始终触发 PurhcasesUpdatedListener 回调并异步返回 BillingResponseBillingResponse 的同步返回值也会保留。

错误修复

  • 在服务断开连接时,异步方法会尽早正确退出。
  • Builder 参数对象不再修改已构建的对象。
  • 问题 68087141launchBillingFlow() 现在会为失败的响应触发回调。

Google Play 结算库 1.0 版本发布(2017-09-19,公告

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

重要变更

  • 将结算权限嵌入库的清单中。不再需要在 Android 清单中添加 com.android.vending.BILLING 权限。
  • BillingClient.Builder 类中添加了新的构建器。
  • 引入了用于 SkuDetailsParams 类的构建器模式,用于在方法上查询 SKU。
  • 为了保持一致性,更新了多个 API 方法(相同的返回值参数名称和顺序)。

行为变更

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

BillingClient.Builder 类

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

Kotlin

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

Java

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

launchBillingFlow 方法现在使用 BillingFlowParams 类调用。

要启动购买或订阅的结算流程,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() 方法的参数被封装到构建器模式中。

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() {...})

结果现在通过结果代码和 SkuDetails 对象列表返回,而不是以前为了方便和保持 API 一致性而使用的包装类。

Kotlin

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

Java

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

onConsumeResponse() 方法的参数顺序已更改。

onConsumeResponse 接口的 ConsumeResponseListener 的参数顺序已更改,以保持 API 一致性。

Kotlin

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

Java

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

解开的 PurchaseResult 对象

PurchaseResult 已被解开,以保持 API 一致性。

Kotlin

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

Java

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

错误修复

开发者预览版 1 发布(2017-06-12,公告

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

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