标签: play-billing-library

BillingClient始终返回SERVICE_DISCONNECTED

所以我有一个实例化的计费客户

billingClient = BillingClient.newBuilder(this).setListener(this).build();
Run Code Online (Sandbox Code Playgroud)

然后我打电话

billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(int responseCode) {
            //TODO: use this for stuff
            com.android.billingclient.api.Purchase.PurchasesResult result;
result = billingClient.queryPurchases(BillingClient.SkuType.SUBS);
    Timber.d(result.toString());

        }

        @Override
        public void onBillingServiceDisconnected() {
            //TODO: use this for stuff
            Timber.d("something went wrong ");
        }
    });
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,木材线上的断点总是返回断开状态。谁能提供我将如何做的见解或示例?

android android-billing play-billing-library

6
推荐指数
2
解决办法
1260
查看次数

如何在Kotlin的应用购买中实现Android?

我想为我的android应用的应用内购买(使用kotlin编写)实施Google Play结算。我正在关注本教程

这是我的代码:

private lateinit var billingClient: BillingClient
    private lateinit var productsAdapter: ProductsAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setupBillingClient()
    }

    private fun setupBillingClient() {
        billingClient = BillingClient
            .newBuilder(this)
            .setListener(this)
            .build()

        billingClient.startConnection(object : BillingClientStateListener {
            override fun onBillingSetupFinished(@BillingClient.BillingResponse billingResponseCode: Int) {
                if (billingResponseCode == BillingClient.BillingResponse.OK) {
                    println("BILLING | startConnection | RESULT OK")
                } else {
                    println("BILLING | startConnection | RESULT: $billingResponseCode")
                }
            }

            override fun onBillingServiceDisconnected() {
                println("BILLING | onBillingServiceDisconnected | DISCONNECTED")
            }
        })
    }

    fun onLoadProductsClicked(view: …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-inapp-purchase play-billing-library

6
推荐指数
1
解决办法
892
查看次数

Google Play Billing Library 6.0 引入了 INTERNET 权限。可以避免吗?

Google Play 结算库以前不需要该android.permission.INTERNET许可。在 6.0 版本中,我可以从合并的清单中看到,现在确实如此。

它的来源是来自名为 的清单文件transport-backend-cct:3.1.8。谷歌搜索告诉我它是 Firebase 的一部分,但我没有使用它。也许计费库现在在底层使用 Firebase。

我想避免这种情况的原因是我的一个应用程序使用麦克风。我担心如果我在批准麦克风权限后在更新中“偷偷地”添加互联网权限,我的客户会感到震惊。

也许这可能性不大,但是否可以避免使用此权限并仍然使用 Google Play 结算服务?

android android-manifest google-play play-billing-library

6
推荐指数
1
解决办法
262
查看次数

为什么Google Play结算库未显示在SDK Manager中?

我想在应用内购买Android应用程序,我经常阅读我必须从SDK Manager下载Google Play结算库

(例如http://www.techotopia.com/index.php/An_Android_Studio_Google_Play_In-app_Billing_Tutorial#Installing_the_Google_Play_Billing_Library),但我找不到它.我需要这个文件吗?如果是,我如何管理它显示给我?在developers.android webside上没有写入Google Play结算库,但如果我将他们的示例代码复制到我的项目中,我会收到很多错误.我在github上搜索了示例项目,我找到了一个,但是当我运行它时,应用程序崩溃了.有没有示例项目,我认为这可以解决我的问题?

我的SDK Manager

谢谢 !!!

sdk android in-app-purchase in-app-billing play-billing-library

5
推荐指数
1
解决办法
6588
查看次数

播放计费库连接并查询sku详情

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

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

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

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

public BillingManager(Activity activity) {
    mActivity = activity;
    mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
    mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponse) {
            if (billingResponse == BillingClient.BillingResponse.OK) {
                Log.i(TAG, "onBillingSetupFinished() response: " + billingResponse);
            } else {
                Log.w(TAG, "onBillingSetupFinished() error code: " + billingResponse);
            }
        }
        @Override
        public void onBillingServiceDisconnected() {
            Log.w(TAG, "onBillingServiceDisconnected()");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

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

private void handleManagerAndUiReady() {
    // Start querying for SKUs
    List<String> inAppSkus = …
Run Code Online (Sandbox Code Playgroud)

connection android sku play-billing-library

5
推荐指数
1
解决办法
4278
查看次数

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

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

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

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

我也遵循了指导方针

可以使用许可证测试器来测试待处理的事务。除了两张测试信用卡外,许可证测试人员还可以使用两种延迟付款方式的测试工具,这些付款方式会在几分钟后自动完成或取消。

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

android android-billing google-play-console play-billing-library

5
推荐指数
0
解决办法
1370
查看次数

如何测试待购买?

我刚刚更新了我的应用程序以使用最新的播放计费计费 (2.0) 版本,这会迫使您支持待处理的事务,否则库初始化会快速失败。在该库有关待处理事务的发行说明中,我看到:

可以使用许可证测试器来测试待处理的事务。除了两张测试信用卡外,许可证测试人员还可以使用两种新的测试工具来延迟付款,几分钟后自动完成或取消。

然而,在运行时,在有效许可证测试程序的 Google Play 底部表单中,没有待处理交易的选项,那么我们如何测试呢?这个功能在google play还没有完全实现吗?

我只能在这两个选项中选择一个:

  • 测试卡,始终批准
  • 测试卡,总是拒绝

我错过了什么 ?

android in-app-purchase in-app-billing google-play play-billing-library

5
推荐指数
0
解决办法
388
查看次数

如何获取使用 Google Play Billing 制作的购买历史记录?

我正在使用 Google Play 结算库 v 4.0。有没有办法检索设备当前登录帐户的所有采购订单(采购历史记录)?我尝试过queryPurchaseHistoryAsync(String skuType, PurchaseHistoryResponseListener listener)billingClient 和回调内的结果onPurchaseHistoryResponse(BillingResult billingResult, List<PurchaseHistoryRecord> purchaseHistoryRecordList),列表 - 有 10 个元素,但不是最新的。

在调用该函数之前,计费客户端已设置并startConnection()已被调用。

在文档中,据说 queryPurchaseHistoryAsync() “返回用户对每个 SKU 进行的最近购买,即使该购买已过期、取消或消耗。”

任何想法都会有用。:)

编辑:

queryPurchaseHistoryAsync() 返回每个 sku 的最后一次购买,因此它们是最新的,但对于每个产品而言。是否有机会像 Google Play 应用 -> 付款和订阅 -> 预算和历史记录那样获取历史记录?

android android-billing android-inapp-purchase play-billing-library

5
推荐指数
0
解决办法
1182
查看次数

Google Play 结算 (v5):如何让用户从订阅升级到 IAP

假设我有两种产品:

  • 订阅:每年自动续订
  • 应用内购买:非消耗性终身购买

有没有什么方法可以从订阅升级到IAP而不强制用户手动取消订阅?

SubscriptionUpdateParamswith setOldPurchaseToken,但似乎只能用于从一个订阅基本计划升级到另一个订阅基本计划(例如按月升级到按年)。文档只说:

指定用户要升级或降级的 Google Play 结算购买令牌。

有没有什么好的方法来做这样的流程呢?

android in-app-billing google-play android-billing play-billing-library

5
推荐指数
0
解决办法
273
查看次数

迁移到 Google Play 结算库版本 5.1.0 - SkuDetails.getOriginalJson() 等效项

我正在从 Google Play 结算版本 4.0.0 升级到版本 5.1.0。在版本 4 中SkuDetails,有一个函数getOriginalJson()包含我发送到后端的 json 对象。我深入研究了API,但找不到 5.1.0 版本中的官方等效项。

我可以在两个地方看到此信息可能在我们不应该访问的com.android.billingclient.api.ProductDetails内部成员中可用,以及作为附加此信息的函数的一部分。我可能可以从 中提取我需要的内容,但我想知道是否有更好/官方的东西。JSONObjecttoString()parsedJsontoString()

java android in-app-billing play-billing-library

5
推荐指数
1
解决办法
892
查看次数