问题标签 [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 投票
0 回答
225 浏览

in-app-purchase - 这是什么原因?java.lang.IndexOutOfBoundsException

java.lang.IndexOutOfBoundsException:

在 java.util.ArrayList.get (ArrayList.java:411)

在 salavat.mahammad.xxx.salavat.aarlar$10.onSkuDetailsResponse$32ef7931 (aarlar.java)

在 com.android.billingclient.api.BillingClientImpl$10$1.run (BillingClientImpl.java)

在 android.os.Handler.handleCallback (Handler.java:836)

在 android.os.Handler.dispatchMessage (Handler.java:103)

在 android.os.Looper.loop (Looper.java:203)

在 android.app.ActivityThread.main (ActivityThread.java:6251)

在 java.lang.reflect.Method.invoke (Method.java)

在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1073)

在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:934)

0 投票
1 回答
3103 浏览

android - Google Play 计费库 - querySkuDetailsAsync 偶尔会返回 BillingResponseCode.ERROR (6)

我正在使用Google Play Billing Library 2.0.3 ( implementation 'com.android.billingclient:billing:2.0.3'),它在大多数情况下都可以正常工作,但对于某些用户来说,原因不明,querySkuDetailsAsync() method occasionally fails with BillingResponseCode.ERROR (6) error code...

有人知道吗?这个错误的原因没有在任何地方解释,除了它是“API操作期间的致命错误”。谁能告诉它为什么会发生?

编辑: 我正在使用文档中的方法(https://developer.android.com/google/play/billing/billing_library_overview):

然后我像这样使用它:

编辑: 用户可以简单地作弊吗?例如,使用破解的谷歌游戏商店/其他会影响购买的软件?因为无论我做什么,我都没有在我拥有的任何设备上收到此错误。

编辑: 到目前为止,我发现如果您使用幸运补丁程序破解应用程序,onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases)计费客户端的方法会返回此错误代码(BillingResponseCode.ERROR),但我没有收到任何错误querySkuDetailsAsync()......这可能与此有关吗?

编辑: 另外我在 google issuetracker 中创建了一个问题,如果你愿意,可以到那里支持我。https://issuetracker.google.com/issues/139631105

0 投票
1 回答
39 浏览

google-play-services - 如果我想直接向广告商出售广告空间,我必须使用 Google Play 计费库吗?

我想在 Play 商店中的 Android 应用中出售广告空间。我想直接将其出售给需要为其广告选择目标的广告商,是否必须使用 google play 计费库来为广告空间付费,或者如果我使用其他支付系统,我将违反 google play 条款。我浏览了这篇文章 https://play.google.com/about/monetization-ads/payments/不幸的是我不清楚。请提供任何帮助。

0 投票
3 回答
1725 浏览

google-api - 即使在服务器到服务器身份验证之后也无法使用 Google Play Developer API

我正在尝试Purchases.Subscriptions: get从我的本地服务器调用,但我收到一条错误消息说Error: Login Required.

我已经创建了一个具有项目所有者角色的服务帐户,如此处所述。然后我设置GOOGLE_APPLICATION_CREDENTIALS环境变量并使其指向下载的 JSON 文件,如此处所述

最后,我尝试根据网站文档示例运行一些用于服务器到服务器身份验证的示例代码,以查看是否可以成功进行身份验证:

我只是使用了 Billing API 而不是 Compute API,否则我的示例与 docs中给出的示例相同。我不确定为什么我遇到问题,任何帮助将不胜感激!


完整错误:

0 投票
1 回答
268 浏览

android - android google play billing library v2.0.3 acknowledgePurchase failed with error code 5 in Android Q (api 29)

我已经按照谷歌示例代码进行操作,但它无法确认购买了非消耗性产品并获得了退款,仅在 Android Q (api 29) 上。

返回的错误是代码 5,即 DEVELOPER_ERROR,定义为“提供给 API 的参数无效。此错误还可能表明应用程序未正确签名或未正确设置 Google Play 中的应用内结算,或者没有其清单中的必要权限”在文档中。

https://developer.android.com/google/play/billing/billing_library_overview#acknowledge

知道这是怎么回事吗?它在其他 Android 版本的手机上运行良好。

0 投票
1 回答
539 浏览

android - 多次测试订阅

我有一个免费试用期和降价期的订阅。根据开发者网站 ( https://developer.android.com/google/play/billing/billing_testing#testing-renewals ) 测试订阅时有一些等待时间。

我正在使用 lates 计费库 com.android.billingclient:billing:2.0.3

我进行了初始测试,没有任何问题,但现在如果我想再次测试订阅(使用相同的帐户),我没有获得免费试用/降价选项,只有常规订阅价格。

有没有办法重置订阅(仅用于测试),所以我可以多次测试整个流程?

0 投票
0 回答
84 浏览

java - BillingManager$6.run NullPointerException

我在我发布的应用程序中使用计费:

在开发者控制台中,我看到了几个与之相关的崩溃。但是,当我测试它时,它按预期工作。我可以从日志中读取的唯一消息是:

就这样。没有任何痕迹,甚至没有显示 Android 版本(是的,我已将 proguard 混淆文件上传到控制台)。

有谁知道它是什么原因?

0 投票
0 回答
50 浏览

play-billing-library - 在 Android 上的应用购买库中使用 Alternative

我正在开发一个提供应用内购买的安卓应用。但我喜欢在应用购买库中添加替代方案,而不是 google play 计费库。谷歌在 Playstore 上允许吗?

0 投票
1 回答
2386 浏览

android - 如何在新的 Google In App Purchase 中处理具有购买历史记录的购买状态

我正在尝试创建一个恢复购买系统。我想要,用户可以在他/她登录的任何设备上访问其购买的产品。所以我在应用程序启动时使用“queryPurchaseHistoryAsync()”方法。我的问题从这里开始。

随着谷歌的新实现,与文档相反,queryPurchaseHistoryAsync() 参数发生了变化。现在它将 PurchaseHistoryRecord 对象列表作为参数,而不是 Purchase 对象列表。

Android studio 无法解决文档中所述的方法。使用新的 queryPurchaseHistoryAsync() 我无论如何都找不到检查购买状态。(如果它已购买、取消或待处理)。我可以使用“purchase.getPurchaseState()”方法来处理购买对象。

queryPurchaseHistoryAsync() 的文档

我的实现

我的应用程序中的 queryPurchaseHistoryAsync() 方法

谷歌发布说明(05-2019):

“为了最大程度地减少混淆,queryPurchaseHistoryAsync() 现在返回 PurchaseHistoryRecord 对象而不是 Purchase 对象。PurchaseHistoryRecord 对象与 Purchase 对象相同,只是它仅反映 queryPurchaseHistoryAsync() 返回的值并且不包含 autoRenewing、orderId , 和 packageName 字段。请注意,返回的数据没有任何变化——queryPurchaseHistoryAsync() 返回的数据与以前相同。”

但发行说明和文档都没有说明如何使用 PurchaseHistoryRecord 检查购买状态。

感谢您阅读本文,感谢您的帮助。

0 投票
2 回答
928 浏览

in-app-billing - 如何区分可消费产品和非消费产品?

我使用了“com.android.billingclient:计费:2.0.3”。

如何区分消耗品和非消耗品?

消耗品通过 批准购买,consumeAsync()非消耗品通过 批准购买acknowledgePurchase()

似乎消耗品和非消耗品是通过是否调用 consumeAsync() 来分类的。

1、还有其他分类方法吗?

https://developer.android.com/google/play/billing/billing_library_overview#acknowledge/

2. acknowledgePurchase() 指向非消耗品的api。它不应该用于消费品吗?

我可以通过这种方式添加开发人员paylaod:

对于消耗品,consumeAsync() 采用包含开发人员有效负载字段的 ConsumeParams 对象,如以下示例所示:

对于未使用的产品,acknowledgePurchase() 采用包含开发人员有效负载字段的 AcknowledgePurchaseParams 对象,如以下示例所示:

https://developer.android.com/google/play/billing/billing_library_overview#attach_a_developer_payload

3. 未来是否计划增加消耗品和非消耗品的管理类型?

4. 是否会因输入错误的函数而限制调用?