标签: play-billing-library

在App Purchase中似乎被多次调用

我根据Google的教程使用Play Billing Library 1.0实现了应用程序内购买.我只有1件商品可以购买,当它解锁时,我会显示一个Toast.LENGTH_SHORT长度的Toast消息.然而,Toast在那里呆了10秒钟,所以我认为它被多次调用.当我通过queryPurchases(如果有人先前购买并在此期间重新安装应用程序)解锁时,它不会发生.

任何人都知道为什么Toast会停留这么久/为什么它被多次调用?

在我的BillingManager类中:

@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
    if (responseCode == BillingClient.BillingResponse.OK) {
        for (Purchase purchase : purchases) {
            handlePurchases(purchase);
        }
        mBillingUpdatesListener.onPurchasesUpdated(mPurchases);
    } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {

    } else {

    }
}

public void handlePurchases(Purchase purchase) {
    //here could be validation on own server

    mPurchases.add(purchase);
}
Run Code Online (Sandbox Code Playgroud)

主Activity实现BillingUpdatesListener:

@Override
public void onPurchasesUpdated(List<Purchase> purchases) {
    for (Purchase purchase : purchases) {
        switch (purchase.getSku()) {
            case "premium":
                unlockPremium();
                break;
        }
    }
}

public void …
Run Code Online (Sandbox Code Playgroud)

android in-app-billing play-billing-library

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

Google结算库取消了所有订阅

我正在使用 Google 的计费库在我的应用程序内进行订阅。

~~ 3天后,google play已经退还了我用户的所有订阅,为什么呢?

一些带有活动的代码,用于进行订阅:

    private var billingClient: BillingClient? = null
    private val purchasesUpdateListener = PurchasesUpdatedListener { billingResult, purchases ->
        val isSuccessResult = billingResult.responseCode == BillingClient.BillingResponseCode.OK
        val hasPurchases = !purchases.isNullOrEmpty()
        if (isSuccessResult && hasPurchases) {
            purchases?.forEach(::confirmPurchase)
            viewModel.hasSubscription.value = true
        }
    }

    private fun confirmPurchase(purchase: Purchase) {
        val consumeParams = ConsumeParams.newBuilder()
            .setPurchaseToken(purchase.purchaseToken)
            .build()
        billingClient?.consumeAsync(consumeParams) { billingResult, _ ->
            if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
                //all done
            }
        }
    }
 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
   
        billingClient = BillingClient.newBuilder(this)
            .setListener(purchasesUpdateListener)
            .enablePendingPurchases() …
Run Code Online (Sandbox Code Playgroud)

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

0
推荐指数
1
解决办法
396
查看次数

Android - 更新计费库产品的 SkuDetailsResponse 按钮

我正在设置一个与 Google Play 结算库配合使用的界面。我使用querySkuDetailsAsync查询订阅产品,然后循环浏览返回的产品,以便启用购买按钮。

这是我正在使用的脚本

billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List<SkuDetails> list) {
            
            if (!list.isEmpty()) {
                for (int i = 0; i < list.size(); i++) {
                    
                    if (list.get(i).getSku().equals("core_monthly")) {
                        monthlyDetails = list.get(i);
                        

                    } else if (list.get(i).getSku().equals("core_annual")) {
                        annualDetails = list.get(i);
                        
                    }
                }

                monthlySubscribe.setEnabled(true);
                annualSubscribe.setEnabled(true);
                monthlySubscribe.setText("Monthly Subscription");
                annualSubscribe.setText("Annual Subscription");

            } else {
                Toast.makeText(getActivity(), "There was a problem getting available plans", Toast.LENGTH_SHORT);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

问题是 setText() 按钮文本永远不会更新。收到产品后如何更新按钮名称并启用它们?

android play-billing-library

0
推荐指数
1
解决办法
500
查看次数

无法在我的android studio sdk管理器中找到Google Play结算库

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

在此输入图像描述

我已经更新了我的sdk并且还完成了强制更新仍然无法找到此选项.请帮忙

macos android android-sdk-manager play-billing-library

-2
推荐指数
1
解决办法
629
查看次数