1

我正在制作一个 Android 应用程序,其中将包含使用来自 Google 的应用内计费的订阅(https://developer.android.com/google/play/billing/index.html)。

目的是让用户每台设备拥有 1 个订阅。我知道谷歌限制订阅 1 个谷歌邮件帐户而不是 1 个设备,这就是为什么我使用带有数据库的服务器进行自己的限制。

所以我在开发者控制台产品列表中创建了一个包含 10 个订阅的池,我希望当一个设备订阅第一个订阅时,第二个设备(使用相同的谷歌帐户)将订阅下一个订阅......

但是当我想要第二台设备自动选择下一个订阅时,甚至没有在帐户上购买,它对我说“产品已经拥有”。问题是当前库存没有刷新。

我正在使用 IabHelper,这是我试图购买下一个可用订阅的代码部分。

public void initIab() throws IabHelper.IabAsyncInProgressException {
        iabHelper = new IabHelper(this, AppConfig.APPLICATION_KEY);

        iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            public void onIabSetupFinished(IabResult result) throws IabHelper.IabAsyncInProgressException {
                if (result.isSuccess()) {
                    iabHelper.queryInventoryAsync(iabInventoryListener());
                    billingServiceReady = true;
                }
            }
        });
    }

private IabHelper.QueryInventoryFinishedListener iabInventoryListener() {
        return new IabHelper.QueryInventoryFinishedListener() {

            public void onQueryInventoryFinished(IabResult result, Inventory inventory) {

                if (iabHelper == null) {
                    return;
                }
                if (!result.isSuccess()) {
                    return;
                }

                String[] PREMIUM_KEYS = {"premium1","premium2","premium3","premium4","premium5","premium6","premium7","premium8","premium9","premium10"};

                Purchase premiumPurchase = null;
                String premiumKey;
                boolean payload = false;
                for(String key : PREMIUM_KEYS) {
                    if (inventory.hasPurchase(key)) {
                        premiumPurchase = inventory.getPurchase(key);
                        premiumKey = key;
                        payload = verifyDeveloperPayload(hasPurchase,premiumKey);
                        if(payload)
                            break;
                    }
                }

                session.setPremium(achatPremium != null && payload);

            }

        };
    }

请你能帮我找到解决办法吗?

对不起,我的英语不好。

谢谢你。

4

0 回答 0