2014-10-12 3 views
0

Я пытаюсь использовать в покупке приложения, после того, как я хочу купить свой товар, я получаю следующую ошибку в результате «IabHelper.OnConsumeFinishedListener mConsumeFinishedListener» my Item is not a subscription!Потребляющий в App Purchase item

result.getmessage выглядит следующим образом: «Элементы„подлодки“типа не может быть потреблен (ответ: -1010: Invalid попытка потребления)»

что мне делать?

мой полный код:

BuyCoins общественного класса расширяет активность {

String TAG="TESTPURCHASE"; 
IabHelper mHelper; 
static final String ITEM_100_SKU = "ir.e_rundev.brainwars.test"; 
static final String ITEM_500_SKU = "ir.e_rundev.brainwars.test2"; 
static final String ITEM_1000_SKU = "ir.e_rundev.brainwars.1000coins"; 
String ITEM_SKU=""; 





protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.buy_coins); 

    Swarm.setActive(this); 



    String base64EncodedPublicKey = 
      "(I HAVE MY CODE HERE)"; 

    mHelper = new IabHelper(this, base64EncodedPublicKey); 

    mHelper.startSetup(new 
           IabHelper.OnIabSetupFinishedListener() { 
            public void onIabSetupFinished(IabResult result) 
            { 
             if (!result.isSuccess()) { 
             // Log.d(TAG, "In-app Billing setup failed: " + 
               // result); 
             } else { 
             // Log.d(TAG, "In-app Billing is set up OK"); 
             } 
            } 
           }); 

    Button btn100 = (Button) findViewById(R.id.btn_Buy_100); 
    Button btn500 = (Button) findViewById(R.id.btn_Buy_500); 
    Button btn1000 = (Button) findViewById(R.id.btn_Buy_1000); 

    btn100.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ITEM_SKU=ITEM_100_SKU; 
      buyCoin(view); 
     } 
    }); 

    btn500.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ITEM_SKU=ITEM_500_SKU; 
      buyCoin(view); 
     } 
    }); 

    btn1000.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // ITEM_SKU=ITEM_1000_SKU; 
      // buyCoin(view); 

     } 
    }); 


} 

public void buyCoin (View view) { 
    mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001, 
      mPurchaseFinishedListener, "mypurchasetoken"); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent data) 
{ 
    if (!mHelper.handleActivityResult(requestCode, 
      resultCode, data)) { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 


IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
     = new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, 
             Purchase purchase) 

    { 
     if (result.isFailure()) { 
      // Handle error 
      return; 
     } else if (purchase.getSku().equals(ITEM_100_SKU)) { 
      consumeItem(); 
      Log.d(TAG, "Here"+purchase.getItemType()); 

     } else if (purchase.getSku().equals(ITEM_500_SKU)) { 

      consumeItem(); 


     } else if (purchase.getSku().equals(ITEM_1000_SKU)) { 
      consumeItem(); 


     } 

    } 



    public void consumeItem() { 
     mHelper.queryInventoryAsync(mReceivedInventoryListener); 
     Log.d(TAG,"here 3"); 
    } 

    IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener 
      = new IabHelper.QueryInventoryFinishedListener() { 
     public void onQueryInventoryFinished(IabResult result, 
              Inventory inventory) { 

      if (result.isFailure()) { 
       // Handle failure 
      } else { 
       mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), 
         mConsumeFinishedListener); 
       Log.d(TAG,"here 4"+inventory.getPurchase(ITEM_SKU).getItemType()); 
      } 
     } 
    }; 

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

        if (result.isSuccess()) { 
         //clickButton.setEnabled(true); 

         // Log.d(TAG,"SUCCESSFUL"); 
         purchaseFinished(ITEM_SKU); 
         Log.d(TAG,"here2"); 

         SharedPreferences settings = getSharedPreferences("MYSETTINGS", 0); 
         SharedPreferences.Editor editor = settings.edit(); 
         editor.putBoolean("isPremium", true); 
         editor.apply(); 

         Adad.setDisabled(true); 


        } else { 
         // handle error 
         Log.d(TAG,"here 5"); 
         Log.d(TAG,result.getMessage()); 
         Log.d(TAG,purchase.toString()); 
        } 
       } 
      }; 
}; 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (mHelper != null) { 
     mHelper.dispose(); 

     mHelper = null; 
    } 
} 


public void onResume() { 
    super.onResume(); 
    Swarm.setActive(this); 
    TextView tvCoins = (TextView) findViewById(R.id.tv_Buy_Coins); 
    GameInventory gameInventory = new GameInventory(getApplicationContext()); 
    tvCoins.setText(String.valueOf(gameInventory.getCoinsCount())); 
} 

public void onPause() { 
    super.onPause(); 
    Swarm.setInactive(this); 
} 


private void purchaseFinished(String SKU){ 
    GameInventory gameInventory = new GameInventory(getApplicationContext()); 

    if (SKU==ITEM_100_SKU) { 

     gameInventory.updateCoinsCount(gameInventory.getCoinsCount() + 100); 
    }else if(SKU==ITEM_500_SKU){ 
     gameInventory.updateCoinsCount(gameInventory.getCoinsCount() + 520); 
    }else if (SKU==ITEM_1000_SKU){ 
     gameInventory.updateCoinsCount(gameInventory.getCoinsCount() + 1100); 
    } 
    ITEM_SKU = ""; 
} 

}

ответ

2

Эй я работаю на InApp покупки начиная с 10 дней и Я успешно интегрирована в мое существующее приложение и готова сделать его живым. Изначально, когда я начал это делать, я загрузил Google Payment InApp Billing Example под названием «Trivial Drive» с here.

Но это не помогло мне, так как у него много проблем и ошибок. Поэтому я решил сделать это самостоятельно, используя новый v3 api, который вы можете найти here. В этом руководстве есть четкое объяснение, которое поможет вам, а также если у вас есть время, см. this youtube video, где сотрудник Google объяснил, как его интегрировать.

Также, если вы хотите быстрый пример, у меня есть пример приложения, которое вы можете скачать с here.

В следующем видео также объясняется, как интегрировать InApp Purchase. Пожалуйста, пройдите через это.

https://www.youtube.com/watch?v=-h2ESH71hAI

Спасибо