2014-02-07 2 views
0

Я использую in-app для своего приложения для викторины, чтобы купить монеты. И я добавил 2 монеты категории 100 монет и 500 монет соответственно. Я также добавил 2 SKU.My обе покупки монеты работает хорошо. Пока я покупаю 100 монет и потребляю. 100 монет добавляются в приложение, но когда я покупаю 500 монет, еще раз 100 монет добавляются, а не 500. Мне действительно нужна помощь, так как я застрял с этим в течение нескольких недель. потреблять приложение кодЧто касается покупки в приложении: Android

процедура закупки
private void update() { 
    ArrayList<String> moreSkus = new ArrayList<String>(); 
    moreSkus.add(SKU); 
    moreSkus.add(SKU_500); 

    buyHelper.queryInventoryAsync(true, moreSkus, new QueryInventoryFinishedListener() { 
     @Override 
     public void onQueryInventoryFinished(IabResult result, Inventory inv) { 
      if(result.isSuccess()) { 
       // SkuDetails details = inv.getSkuDetails(SKU); 
       //String price = details.getPrice(); 

       //TextView tvPrice = (TextView)GameActivity.this.findViewById(R.id.textview_price); 
       // tvPrice.setText(price); 

       purchase = inv.getPurchase(SKU); 
       // purchase = inv.getPurchase(SKU_500); 
       purchase=inv.getPurchase(SKU_500); 
       if(purchase!=null) { 
       // buy100coins.setEnabled(false); 
        //coins_one_hundred.setVisibility(View.GONE); 
        // buy100coins.setVisibility(View.GONE); 


        buy100coins.setEnabled(false); 
        buy500coins.setEnabled(false); 


        //boughtcoins.setEnabled(true); 
        //boughtcoins.setVisibility(View.VISIBLE); 
        boughtcoins.setEnabled(true); 

       } else { 
        // buy100coins.setEnabled(true); 
        //coins_one_hundred.setVisibility(View.VISIBLE); 
        // buy100coins.setVisibility(View.VISIBLE); 
        buy100coins.setEnabled(true); 
        buy500coins.setEnabled(true); 

        //boughtcoins.setEnabled(false); 
        //boughtcoins.setVisibility(View.INVISIBLE); 
        boughtcoins.setEnabled(false); 

       } 

       Toast.makeText(GameActivity.this, "Successful got inventory!", Toast.LENGTH_SHORT).show(); 

      } else { 
       Toast.makeText(GameActivity.this, "Error getting inventory!", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

и кнопку, чтобы потреблять

   boughtcoins = (Button) buycoinsdialog.findViewById(R.id.bought_coins); 
         //boughtcoins.setVisibility(View.GONE); 
         // if button is clicked, close the custom dialog 
         boughtcoins.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           Helper.playSound(getApplicationContext(), "click"); 
           buyHelper.consumeAsync(purchase, new OnConsumeFinishedListener() { 

            @Override 
            public void onConsumeFinished(Purchase purchase, IabResult result) { 
             if(result.isSuccess()) { 
              Toast.makeText(GameActivity.this, "Coins consumed!", Toast.LENGTH_SHORT).show(); 
              Helper.playSound(getApplicationContext(), "cash");          
               money += 100; 
               money_text.setText("$" + money); 

              try { 
               // Small HACK: Give the system some time to realize the consume... without the sleep here, 
               // you have to press "Update" to see that the item can be bought again... 
               Thread.sleep(600); 
               update(); 
              } catch(Exception e) { 
               // ignored 
              } 

             } else { 
              Toast.makeText(GameActivity.this, "Error consuming: "+result.getMessage(), Toast.LENGTH_SHORT).show(); 
             } 
            } 
           }); 


           buycoinsdialog.dismiss(); 


          } 
         }); 
+0

вы добавляете деньги + = 100; только для обоих приобретений. Проверь это. – Rama

+0

@Rama Я попытался изменить это на 500, т. Е. Если (purchase.getsku(). Equals (SKU) {}, но он не работает –

+0

@Rama я не уверен относительно выше кода, то есть в методе update(). Как добавьте второй SKU к нему? –

ответ

0

похоже, г egardless того, что пользователь выбирает ваши увеличивая количество денег/монет на 100, как в этой строке:

money += 100; 

Где вы обработка покупки 500 монет?

+0

Я попытался добавить деньги + = 500, но он не работает. Скажите, пожалуйста, если приведенный выше код, т. е. метод update(), то есть, это способ добавить второй SKU? –

+0

вы можете проверьте, пожалуйста, пожалуйста? –

+0

Я использовал биллинг в приложении один раз раньше, но не могу точно запомнить ... но ваш метод onConsumeFinished возвращает объект Purchase. Возможно, у него есть какой-то идентификатор, чтобы вы знали, какая покупка была сделана Если это так, возможно, вы можете сделать что-то вроде этого: if (purchase.code (SKU_500) {money + = 500}, имеет смысл? –

0

вы должны делать, как следовать

if(purchase.getSKU() == SKU_500){ 
money += 500; 
}else if(purchase.getSKU() == SKU_100){ 
money += 100; 
} 
0
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener2 
    = new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, 
        Purchase purchase) 
    { 
     if (result.isFailure()) { 
      // Handle error 
      return; 
    }else { 
if (purchase.getSku().equals(ITEM_SKU1)) { 
       // do things 
    }else if(purchase.getSku().equals(ITEM_SKU2){} 
} 

    } 
}; 

проверить это может помочь вам

+0

спасибо за вышеуказанный код. Как обсуждалось с The Hungry Androider, я изменил название пакета SKU и добавил код в том, что купил и он возвращает 500 монет. Но мой вопрос в том, может ли использоваться тестовый пакет для Android? –

+0

, которые вы используете. Какие тестовые SKU или ваши идентификаторы? Если вы используете свои собственные идентификаторы, тогда вы можете назначить свой заинтересованный путь. Но эти идентификаторы не должны быть похожими. – Rama

+0

Я использовал тестовое имя пакета sku для SKU, т.е. SKU и SKU_500 –

0

// щелкать этот метод вашей кнопки вызова

if (mHelper!=null) mHelper.flagEndAsync(); 
        mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001, 
          mPurchaseFinishedListener, ""); 
       } catch (Exception e) { 
        Toast.makeText(getApplicationContext(), "Please try after a few seconds"+e, Toast.LENGTH_SHORT).show(); 

реализации слушателя как folloew :

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
     = new IabHelper.OnIabPurchaseFinishedListener() { 
     public void onIabPurchaseFinished(IabResult result, 
         Purchase purchase) 
     { 
      if (result.isFailure()) { 
       // Handle error 
       return; 
     }  
     else{ 

    mHelper.consumeAsync(purchase, mConsumeFinishedListener); 
     } 

     } 
    }; 

// реализовать перехватчик для "mConsumeFinishedListener" следующим образом:

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = 
     new IabHelper.OnConsumeFinishedListener() 
     { 
      public void onConsumeFinished(Purchase purchase, 
        IabResult result) 
      { 

       if (result.isSuccess()) 
       {     
         if(purchase.getSKU().equals("android.test.purchase")){ 
}else if(purchase.getSKU().equals("android.test.cancel")){ 
} 


       } 
      } 
     }; 
+0

вы должны реализовать таким образом для расходных материалов. – Rama

+0

Хорошо попробует :) –

Смежные вопросы