2017-01-11 8 views
0

1つのことを何回も購入できますか?Androidアプリ内課金 - 1回のアプリ内購入を複数回購入するにはどうすればよいですか?

// [...] 
    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; 
    } 
} 

私はそれが言う私のボタンをクリックしてください:「成功した支払い」その後、私は再びそれを何もしない私のボタンをクリックすると、ここに私のコードです。単一アプリ内購入を複数回購入方法

  1. は、私は2つの質問がありますか?

  2. 支払いが成功した後にトーストを表示するにはどうすればよいですか?

お返事ありがとうございました。

答えて

1
  1. 購入するたびに購入を消費してから、もう一度購入する必要があります。商品を一度購入することはできますが、もう一度は購入できない場合、問題はあなたが正しく消費していないことがほぼ確実です。

  2. コードに問題はないようですが、Toast.makeText(...)は正常に動作するはずです。

+0

どうすれば正しく消費できますか? – Tms852

+0

コードをデバッグし、どのメッセージが報告されているのかを確認すると、どこに障害が発生しているのかがわかります。デバッグにトーストを使用する代わりに、System.out.printlnまたは同等のものを使用し、adbからメッセージを読むことをお勧めします。がんばろう! – TopCog

+0

また、購入が完了したら在庫を照会する必要はありません。 purchaseFinishedListenerからすぐにアイテムを消費することができます。 – TopCog

関連する問題