1

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

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

cl = BillingClient.newBuilder(mActivity).setListener(this).build();

这样:

cl = BillingClient.newBuilder(mActivity).enablePendingPurchases().setListener(this).build();

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

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

SkuDetailsParams.Builder spb = SkuDetailsParams.newBuilder();
cl.querySkuDetailsAsync(spb.build(), new SkuDetailsResponseListener() {
    @Override
    public void onSkuDetailsResponse(BillingResult br, List<SkuDetails> ls) {

    }
});

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

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

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

4

3 回答 3

1

-1 SERVICE DISCONNECTED手段onBillingClientSetupFinished()没有发生,.querySkuDetailsAsync()应该追究onBillingClientSetupFinished();如果它返回5 DEVELOPER_ERROR,包名称或公钥可能不匹配和/或计费服务可能无法连接。

于 2019-05-19T18:42:51.903 回答
0

根据使用时的文档querySkuDetailsAsync(...)https ://developer.android.com/google/play/billing/billing_library_overview#Query

SkuDetailsParam您传入的 还应该有 SKU 列表和 SkuType(或者SkuType.INAPPSkuType.SUBS。您提供的示例代码中缺少这两个字段。

来自文档的示例代码:

val skuList = ArrayList<String>()
skuList.add("premium_upgrade")
skuList.add("gas")
val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList).setType(SkuType.INAPP)
billingClient.querySkuDetailsAsync(params.build(), { billingResult, skuDetailsList ->
    // Process the result.
})

另外,此时,Google 的 GitHub 示例项目还没有针对 Billing v2 进行更新,但如果您想同时获取 SkuType.INAPP 和 SkuType.SUBS,它仍然很有帮助:https ://github.com/googlesamples/android -play-billing/blob/master/TrivialDrive_v2/shared-module/src/main/java/com/example/billingmodule/billing/BillingManager.java

于 2019-05-25T13:32:18.660 回答
0

可能是因为您的项目中已经有一个 IInAppBillingService.aidl。尝试删除它并清理项目。

于 2019-05-20T18:56:10.733 回答