问题标签 [play-billing-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
571 浏览

in-app-billing - GooglePlay 结算生命周期

我正在尝试使用此示例的最新应用计费库,但我怀疑它的生命周期onConsumeFinished是在之前还是之后调用的onPurchasesUpdated

我应该什么时候释放资源?

用户从 Google Play 购买对话框购买商品后,我应该更新状态onPurchasesUpdated还是必须使用?onActivityResult

0 投票
1 回答
872 浏览

android - 在我的 android studio sdk 管理器中找不到 Google Play Billing 库

没有播放计费库的 Android SDK 管理器工具

在此处输入图像描述

我已经更新了我的 sdk 并进行了强制更新,但仍然找不到这个选项。请帮忙

0 投票
2 回答
3307 浏览

android - 播放计费库连接和查询sku详情

我需要一些关于如何建立连接和查询 sku 详细信息的输入。我正在编写教程并将应用内计费逻辑复制到我的应用中。

https://codelabs.developers.google.com/codelabs/play-billing-codelab

我按照教程没有任何问题。问题在于如何建立连接,然后查询 sku 详细信息。

当我创建 BillingManager 类的实例时,它会尝试建立连接 -

然后,我将进行异步查询以获取 sku 详细信息 -

然后我让监听器出错,但连接没有任何问题。

所以我不得不弄清楚一段时间并放弃检查 Play Billing Library 的基础知识 -

https://medium.com/exploring-android/exploring-the-play-billing-library-for-android-55321f282929

那就是我找到解决方案的地方,我只是将查询放在成功连接的连接中。我意识到播放计费库在查询 sku 详细信息之前没有检查连接,或者我在某个地方做错了,因为教程工作正常?

我尝试了这个逻辑来检查连接是否准备好,然后像普通驱动器一样执行 runnable - 引用这个 url。看起来逻辑不检查计费连接是否处于挂起状态......

https://github.com/zumrywahid/in_app_example

0 投票
1 回答
6623 浏览

java - 为什么在 launchBillingFlow 之后不调用 onPurchasesUpdated

我正在为 Android 实施应用内计费,并且已经到了可以从商店中检索产品列表的地步。并且可以通过调用 launchBillingFlow() 方法激活 Google 购买对话框。文档表明,一旦调用了它,就会使用结果调用 onPurchasesUpdated。然而,这对我来说并没有发生。日志记录确认请求购买(在我的方法中:startPurchaseFlow())。我的 onPurchasesUpdated() 在活动首次运行时也会被调用,并提供 OK 结果 (0) 以确认连接设置。

但是为什么在 launchBillingFlow() 之后不调用它呢?

持有购买机制的类:

实现接口并发起购买请求并显示产品信息的类:

0 投票
3 回答
13127 浏览

java - queryPurchase() 与 queryPurchaseHistoryAsync() 以“恢复”功能?

我正在使用 Play Billing Library 来触发和管理购买,这反过来又解锁了应用程序中的额外功能。这部分正在工作。

但是,“恢复”购买的最佳方式是什么。例如,购买了该应用程序的人购买了一部新手机。登录 Play 商店,下载我的应用程序,然后发现正在显示“升级”的支付屏幕。iOS 对此有一种特定的方法,但我不知道有一种适用于 Android 的方法。

我的想法是查询Play商店并确认该帐户之前是否成功购买过该物品,如果是,我将调用应用程序内的本地升级功能。

似乎有两种类似的方法。但是在这种情况下我应该使用哪一个?用户在哪里擦除了手机或购买了新手机?

queryPurchases()? 或者queryPurchaseHistoryAsync()

0 投票
0 回答
309 浏览

android - Android 订阅 - 获取可靠的介绍性价格信息

我有一个订阅项目,其中包含 1 个周期的介绍价格。我可以通过getIntroductoryPrice()方法在应用程序中获取此价格。购买完成后,我无法获得在服务器端为订阅支付的确切价格。尤其是:

  • 在应用程序方面,即使用户不符合条件(例如,他正在将订阅从全价更改),我从上面的电话中获得的“介绍价格”信息似乎也是相同的。有没有办法查看用户实际支付的价格(从应用程序或服务器端?)

  • 在服务器端,当我从服务器请求购买收据时,我得到了有关正常价格的信息,没有关于介绍价格的信息,也没有用户实际支付的信息。

有什么方法可以让我获得关于用户实际为包含介绍期的订阅支付了多少费用的可靠信息?

0 投票
0 回答
383 浏览

android - Android Play 计费库:订阅到期?

我正在努力寻找使用Play Billing Library的应用内订阅的到期时间。

在购买对象上,我可以获得购买时间 (getPurchaseTime()) 并使用它来计算到期时间(因为我知道 SKU 代表哪个时期)。问题是似乎购买时间不会在订阅续订时得到更新。

我需要帮助来获取订阅的到期日期。有什么建议么?

0 投票
2 回答
1746 浏览

play-billing-library - 我在 Android Studio SDK 管理器中找不到 Google Play 计费库

我想制作一个带有应用内购买的 android 应用程序。所以我阅读了一些文档,知道我必须从 SDK Manager 下载 Google Play Billing Library。但我在我的 Android Studio SDK 管理器中找不到那个库。我试图compile 'com.android.billingclient:billing:1.0' 为我的应用程序添加到 build.gradle 文件的依赖项部分。但我仍然找不到图书馆..

在此处输入图像描述

我该如何解决我的问题?

0 投票
0 回答
834 浏览

android - Play Billing Library - V3 vs Async vs Sync - 不同的结果

我的用户SkuType.INAPP从我的应用程序中购买了商品 ( )。

在之前推荐的应用内计费实现中,IabHelper.QueryInventoryFinishedListener返回不包含Inventory他们拥有的项目的一个。

在新的Play Billing Library中,我使用以下方法:

假设响应代码成功,我查询:

对于这一小部分用户,列表是空的。

作为故障保险,对于上述负面结果,我继续尝试:

onPurchaseHistoryResponse(final int responseCode, final List<Purchase> purchasesList)

成功详细说明购买。

对此感到困惑,我要求运行这两种实现的受影响用户确认以下内容:

  • 他们在设备上只有一个 Google 帐户
  • 一个账号收到购买确认邮件
  • 这是 Google Play 商店应用程序中的唯一帐户选项
  • Google Play 商店应用“订单历史”详细说明了购买情况

这个线程中得到建议,我要求他们:

  • 从 Google Play 商店应用中清除数据和缓存
  • 重启
  • 重新登录 Google Play 商店
  • 再次打开我的应用

尽管如此,仍然只能queryPurchaseHistoryAsync正确地识别出他们的帐户拥有的物品。

问:为什么?

计费库实现状态:

queryPurchaseHistoryAsync() 返回用户为每个 SKU 进行的最新购买,即使该购买已过期、取消或已消费。尽可能使用 queryPurchase() 方法,因为它使用本地缓存,而不是 queryPurchaseHistoryAsync() 方法。

我已在我的订单管理中确认购买有效且未被取消。我不消费它们,因此它们不会过期

现在我有一个问题

鉴于对于这些用户,我只能通过上述方式识别他们的购买行为,因此我不得不为所有人实施这种故障保护。

除了因必须这样做而感到沮丧之外,这似乎不是什么大问题,直到您再次阅读:

queryPurchaseHistoryAsync() 返回用户为每个 SKU 进行的最近购买,即使该购买已过期、取消或消耗

因此,在我的标准实现中,我需要检查此购买是否仍然有效。

不幸的是,Purchase对象没有这样的方法来检查其有效性。

所以,我可能需要执行外部检查


当我的应用程序启动并且我的逻辑决定是否显示广告时。


帮助。请。

0 投票
0 回答
2268 浏览

android - billingClient.queryPurchases 返回已取消订阅的列表

复现步骤(测试账号):

  1. Complete subscription process in the app
  2. Cancel subscription in Play Store app and wait till it ends to completion (for monthly test subscriptions 5 minutes for the date of writing)

Expected: Subscription is no longer in the list which billingClient.queryPurchases(SUB_SKU_TYPE) returns

Actual: Subscription is still in the list which billingClient.queryPurchases(SUB_SKU_TYPE) returns (even after ~1 hour)

Reported bug: https://github.com/googlesamples/android-play-billing/issues/122

As it is stated in the documentation queryPurchases works with cache without doing any network calls, this could be a reason for this issue. queryPurchaseHistoryAsync could be a good alternative but Purchase class doesn't have state of the actual purchase (i.e. SUBSCRIBED, CANCELLED, etc.).

Is there any option to fix this issue using Play Billing Lib or it is required to make direct network calls using old In-App Billing Api?