Android Google Play应用内计费:测试购买不起作用+;没有可用的产品详细信息

Android Google Play应用内计费:测试购买不起作用+;没有可用的产品详细信息,android,in-app-billing,google-play,Android,In App Billing,Google Play,我正在尝试将谷歌的应用内账单添加到我的Android 4+应用中。我已按“”中所述设置了所有内容。现在,我已经将该应用程序上传到开发者控制台中的Alpha测试频道 此外,我还设置了一个测试帐户(),可以在不触发实际付款的情况下购买物品 在我的测试设备上从Play Store安装alpha版本后(当然使用测试帐户),存在两个问题: 没有从Play Store获取任何产品信息。因此,我无法显示任何价格信息等 当我开始购买时,绝对没有任何暗示,这将是一个免费的测试购买。一切看起来都像是真正的购买 这是

我正在尝试将谷歌的应用内账单添加到我的Android 4+应用中。我已按“”中所述设置了所有内容。现在,我已经将该应用程序上传到开发者控制台中的Alpha测试频道

此外,我还设置了一个测试帐户(),可以在不触发实际付款的情况下购买物品

在我的测试设备上从Play Store安装alpha版本后(当然使用测试帐户),存在两个问题:

  • 没有从Play Store获取任何产品信息。因此,我无法显示任何价格信息等

  • 当我开始购买时,绝对没有任何暗示,这将是一个免费的测试购买。一切看起来都像是真正的购买

  • 这是我使用的代码:

    String publicKey = MyApp.getPublicKey(); // de-code and get the public key
    final IabHelper googlePlayHelper = new IabHelper(context, publicKey);
    
    Log.d("TAG", "IabHelber Init");
    
    googlePlayHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                Log.d("TAG", "IabHelber Init - Non Success: " + result);
            } else {
                Log.d("TAG", "IabHelber Init - SUCCESS");
                try {
                    googlePlayHelper.queryInventoryAsync(true, new IabHelper.QueryInventoryFinishedListener() {
                        public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
                            if (result.isFailure()) {
                                Log.d("TAG", "query Inventory - Non Success: " + result);
                            } else {
                                Log.d("TAG", "query Inventory - SUCCESS");
    
                                if (inventory.hasDetails(2my.product.id")) {
                                    Log.d("TAG", "NO DETAILS");
                                } else {
                                    Log.d("TAG", "Has Details");
                                }
                            }
                        }
                    }      
                } catch (Exception e) { 
                    Log.d("TAG", "EXCEPTION: " + e.getMessage());
                }
            }
        }
    });
    
    日志显示以下内容:

    D/TAG (25995): IabHelber Init
    D/TAG (25995): IabHelber Init - SUCCESS
    D/TAG (25995): query Inventory - SUCCESS
    D/TAG (25995): NO DETAILS
    
    现在获取详细信息的原因可能是什么?
    文档说明在执行测试购买时应该有提示。为什么我要进行“真正的”购买呢?

    我无法找出为什么测试用户的购买不作为测试购买处理。但缺少产品详细信息的问题得到了解决:

    我使用以下调用查询库存:

    googlePlayHelper.queryInventoryAsync(true, new IabHelper.QueryInventoryFinishedListener() { ... });
    
    这是完全有效的代码,第一个参数(在本例中为true)表示查询应该获取产品详细信息。但是,在给出另一个参数之前,该参数似乎没有任何效果:必须明确指定要获取的产品的ID:

    List<String> productIDs = new ArrayList<String>();
    productIDs.add(IAP_ID_1);
    productIDs.add(IAP_ID_2);
    productIDs.add(IAP_ID_3); 
    
    googlePlayHelper.queryInventoryAsync(true, productIDs, new IabHelper.QueryInventoryFinishedListener() { ... });
    
    List productIDs=new ArrayList();
    productid.add(IAP_ID_1);
    productId.add(IAP_ID_2);
    productid.add(IAP_ID_3);
    queryInventoryAsync(true,productId,new IabHelper.QueryInventoryFinishedListener(){…});
    
    如果你的Play Store帐户已被激活,你是否已从该帐户检查你的应用内产品列表?是的,所有IAP的状态都是“活动”而“2my.product.id”SKU id存在于你的IAP列表中?是的,这是我检查的第一件事:-)否则我无法使用
    googlePlayHelper.launchPurchaseFlow(…,“my.product.id”,…)
    开始购买。但这没有任何问题,除了没有暗示这将是一个测试购买。。。