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

android - 将 Android 计费库更新到最新 2.0 后,应用无法正确连接到许可服务

我已将 Android 计费库更新到2.0 版(本月发布)。

除了微小的变化(在这里报告没用)我已经编辑了这一行以支持新的库版本:

这样:

因为如发行说明所述enablePendingPurchases()是必需的(并且没有此应用程序崩溃)。

为了让所有 Sku 完成删除 Sku 硬编码的方法(老实说,我不认为删除它们应该如何改进),我尝试使用以下代码进行查询querySkuDetails()

但是BillingResult如果5 DEVELOPER_ERROR我将方法调用放在onBillingClientSetupFinished.

以前的版本没有问题,我想知道我是否遗漏了一些东西来正确支持新版本。

计费服务能够连接到其后端,但此操作由于某种原因失败。所以似乎错误是我使用的方式,querySkuDetails()因为尽管我得到的状态代码是,但onSkuDetailsResponse总是返回代码。5 DEVELOPER ERRORonBillingSetupFinishedOK

0 投票
2 回答
2907 浏览

android - Google Play 计费库 2.0 确认测试购买的购买时间限制

我一直在测试新的 Google 计费库版本。发行说明指出“必须在三天内确认购买”。

发行说明

在测试过程中,我注意到如果我不确认购买,几分钟内,购买会自动退款。

是不是谷歌对待测试订单的方式不同,只允许几分钟来确认订单而不是 3 天,还是我错过了什么?

这是我用来确认购买的代码。PurchaseHolder 是一个包含购买和 SKU 以及来自我的后端服务器的响应代码的类

...以及确认购买方法

0 投票
1 回答
77 浏览

android - queryPurchaseHistoryAsync 是否从另一个包返回购买?

queryPurchaseHistoryAsync的文档描述:

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

我的假设是,这只会返回该 SKU 的购买,该 SKU 属于发出请求的应用程序的特定包。我的一些测试结果显示了其他东西。是否所有与提供的 SKU 匹配的购买都被退回,而不管它们属于哪个包裹?

0 投票
0 回答
927 浏览

android - Google Play Billing 2.0 测试待处理交易和确认

我正在过渡到 Google Play 计费库 v2.0.0,有两个主要的流程差异。一个是购买确认https://developer.android.com/google/play/billing/billing_library_overview#acknowledge,另一个是处理待处理的交易https://developer.android.com/google/play/billing/billing_library_overview#pending

对于待处理的交易,文档声明

除了两张测试信用卡外,执照测试人员还可以使用两种测试工具来进行延迟付款,几分钟后会自动完成或取消

...但我只能使用两张常规测试卡,没有延迟测试卡。

还有:

对于许可证测试人员进行的购买,确认窗口较短。如果在五分钟内未确认,购买将被退还和撤销,而不是三天。

但是我仍然可以按月订阅 6 次 5 分钟的续订,这是一种常规行为,而不是新行为。

当然,我调用enablePendingPurchases()了 init。

显然,我没有启用新流程,但这是为什么呢?

0 投票
0 回答
1143 浏览

android - Google Play Billing 2.0:如何触发待处理交易

我最近实现了 Google Play Billing Library 2.0,但我无法成功触发待处理的交易。当我打开 Google Play 购买对话框时,我没有“获取付款代码”按钮之类的选项,而是一个带有“购买”按钮的普通购买对话框

预期结果: 预期购买对话框

实际结果: 实际购买对话框

我也遵循了指导方针

可以使用许可证测试器测试待处理的交易。除了两张测试信用卡外,执照测试员还可以使用两种测试工具来进行延迟付款,几分钟后会自动完成或取消。

在 Google Play 控制台中添加了“许可证测试”帐户(设置-> 开发者帐户-> 帐户详细信息-> 许可证测试),但它仍然无法正常工作。那么如何测试待处理的交易购买流程呢?

0 投票
4 回答
5620 浏览

java - skuDetailsList 返回 null

我正在尝试使用最新的Google Play 计费库 (2.0.1)实现应用内购买

• 在Internal App Testing 中发布apk 后,我已将产品ID 添加到skuList 和Google Play 控制台中

• 但是当我启动 billingFlow 时,我得到以下信息

这是我的代码:

这是logcat

我也尝试过使用保留的测试产品 ID android.test.purchase但同样的错误

我还在 Play Console 上上传了应用程序(内部测试),但它也没有从那里工作

任何帮助表示赞赏...

编辑: 经过大量实验后,我发现计费服务正在断开连接,但原因不如下 https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponse#service_disconnected (-1)

在得到响应后 onBillingSetupFinished 被调用

0 投票
1 回答
2372 浏览

android - 如何从 skuDetails 对象加载单个产品?

由于Google Play Billing Library 2.0.x中的“setProductId”已被删除,我们必须使用 setSkuDetails 来启动BillingFlow。那么如何启动 BillingFlow 来购买商品

• 我有 3 个单选按钮

• 用户必须选择一项并通过点击按钮付款

我从文档中执行了以下操作来获取价格

用户选择商品后如何通过按钮点击购买单品?

0 投票
0 回答
1146 浏览

android - Google Play 结算中断购买:结算结果响应代码为 ITEM_ALREADY_OWNED

当我中断应用内购买时,我有一个使用 Google Play Billing 库版本2.0.1的场景,场景如下:

  1. 用户单击按钮以从 Android 应用程序购买订阅。
  2. 在显示 Google Play 进度对话框时,互联网连接被中断。
  3. Google Play 显示“连接超时”错误对话框。

当用户再次点击按钮进行购买并开始计费流程时,Google 会通过对话框响应以下消息:

“您的订单正在处理中,您的商品将在几分钟内到货”

问题是用户在 Google Play 应用程序的“订阅”屏幕中看到了订阅,但由于该购买未被确认,购买将在 3 天后退款。

我正在尝试找到一种方法来检测这种情况,我发现的唯一一件事是我PurchasesUpdatedListener.onPurchasesUpdated返回了一个空的购买清单List<Purchase>BillingResult一个responseCode ITEM_ALREADY_OWNED

queryPurchaseHistoryAsync还通过返回确认购买(由于流程中断而没有发生)来查询以前的购买。

我在 Github 上的示例应用程序仓库中发现了类似的问题:https ://github.com/googlesamples/android-play-billing/issues/127

但我想知道这个问题是否有真正的解决方案?

0 投票
1 回答
940 浏览

android - 如何使确认购买工作Android IAB

我正在尝试确认我在 android 上的购买,但我每次都收到响应代码 3 并显示消息“Google Play In-app Billing API version is less than 9”。购买正在使用所需的所有详细信息、令牌等来实现此功能。但是,它仍然无法正常工作。

我在我的应用程序中使用最新版本的 IAB 库:

0 投票
1 回答
172 浏览

android - 在没有互联网连接的情况下查询购买

我正在使用以下代码检查用户是否已支付订阅费用和/或订阅是否已过期。

这很完美,但是如果用户没有互联网连接,我该如何检查呢?我不能限制访问,只是因为他没有互联网连接 - 那你怎么办?存储用户应该在设备上本地访问的时间段?任何建议都非常感谢!