2017-01-11 2 views
0

Как я могу купить одну вещь несколько раз? Вот мой код:Android-приложение-биллинг - Как купить однократную покупку в несколько раз?

// [...] 
    String base64EncodedPublicKey = 
       "MIIB...; 

     mHelper = new IabHelper(this, base64EncodedPublicKey); 

     mHelper.startSetup(new 
            IabHelper.OnIabSetupFinishedListener() { 
             public void onIabSetupFinished(IabResult result) { 
              if (!result.isSuccess()) { 
               Toast.makeText(gift.this, "Setup no Success", Toast.LENGTH_SHORT).show(); 
               Log.d(TAG, "In-app Billing setup failed: " + result); 
              } else { 
               Toast.makeText(gift.this, "Setup Success", Toast.LENGTH_SHORT).show(); 
              } 
             } 
            }); 


    } 


    public void insert(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()) { 
       Toast.makeText(gift.this, "Error 1", Toast.LENGTH_SHORT).show(); 
      } 
      else if (purchase.getSku().equals(ITEM_SKU)) { 
       consumeItem(); 
       Toast.makeText(gift.this, "OK 1", Toast.LENGTH_SHORT).show(); 
       // mHelper.consumeAsync(purchase, mConsumeFinishedListener); 
      } 

     } 
    }; 
    public void consumeItem() { 
     mHelper.queryInventoryAsync(mReceivedInventoryListener); 
    } 

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

      if (result.isFailure()) { 
       Toast.makeText(gift.this, "Error 2", Toast.LENGTH_SHORT).show(); 
      } else { 
       mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), 
         mConsumeFinishedListener); 
       Toast.makeText(gift.this, "OK 2", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }; 
    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = 
      new IabHelper.OnConsumeFinishedListener() { 
       public void onConsumeFinished(Purchase purchase, 
               IabResult result) { 

        if (result.isSuccess()) { 
         Toast.makeText(gift.this, "Success 1", Toast.LENGTH_SHORT).show(); 
         // mHelper.consumeAsync(purchase, mConsumeFinishedListener); 
        } else { 
         Toast.makeText(gift.this, "Error 3", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }; 

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

Когда я нажимаю на моей кнопке написано: «платеж успешно», и после этого, когда я нажимаю на мою кнопку еще раз, он ничего не делает.

У меня 2 вопроса:

  1. Как купить одну в приложение покупки несколько раз?
  2. Как я могу показать тост после того, как платеж был успешным?

Спасибо за ответы.

ответ

1
  1. Закупка должна потребляться после каждой покупки, после чего ее можно приобрести снова. Если вы можете приобрести товар один раз, но не снова, то почти наверняка проблема в том, что вы не потребляете его правильно.

  2. У вас нет проблем с кодом, Toast.makeText (...) должен работать нормально.

+0

Как я могу правильно его использовать? – Tms852

+0

Отлаживайте свой код и узнайте, какие сообщения сообщаются, и вы увидите, где он не работает. Я рекомендую использовать System.out.println или эквивалентное и читать сообщение из adb вместо использования тостов для отладки. Удачи! – TopCog

+0

Кроме того, нет необходимости запрашивать инвентарь, когда покупка завершается. Вы можете немедленно уничтожить предмет из покупкиFinishedListener. – TopCog

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