title: the item you requested is not available for purchase - in-app billing
body: <p>I have a trouble of testing android billing!
  Someone help me! I do an example:</p>
  
  <p><strong>MainActivity</strong></p>
  
  <pre><code>public class MainActivity extends Activity {
      IabHelper mHelper;
  
      IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
          public void onQueryInventoryFinished(IabResult result, Inventory inventory){
              if (result.isFailure()) {
                  // handle error
                  Toast.makeText(getApplicationContext(), "debug: Query occur error!", Toast.LENGTH_SHORT).show();
                  return;
              }
  
              if (result.isSuccess()) {
                  Toast.makeText(getApplicationContext(), "debug: Query successfully!", Toast.LENGTH_SHORT).show();
                  Toast.makeText(getApplicationContext(), "debug: " + inventory.getSkuDetails("product_1").getTitle(), Toast.LENGTH_SHORT).show();
                  Toast.makeText(getApplicationContext(), "debug: " + inventory.getSkuDetails("product_2").getTitle(), Toast.LENGTH_SHORT).show();
                  return;
              }
          }
      };
  
      IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
          public void onIabPurchaseFinished(IabResult result, Purchase purchase)
          {
              if (result.isFailure()) {
                  Toast.makeText(getApplicationContext(), "debug: purcharge failed", Toast.LENGTH_SHORT).show();
                  Log.d("Purchrge", "Error purchasing: " + result);
                  return;
              }
              switch (purchase.getSku()){
                  case "product_1":
                      Toast.makeText(getApplicationContext(), "debug: purcharge product 1", Toast.LENGTH_SHORT).show();
                      break;
                  case "product_2":
                      Toast.makeText(getApplicationContext(), "debug: purcharge product 2", Toast.LENGTH_SHORT).show();
                      break;
              }
          }
      };
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn9zEWzKIvk/hScbZyrZ6HE4y679DUIQPsxfz0mQJmnv3RYCdd7Zcy+peOtnvRyZzmbrAcYmW1FOsH/3dJwuAmdO+Wd9HyDre+vJwAAQ/QI2WA4lbWSl4jVEr7AX9p3J8pBIy3UKRmhjk/PFN8N1jYDUnnPbZJnSkd6eRpiET+MMUsNHIoCxXzmqXvy3bFh/L61gtqUW/acOkWuXnLkn6rVVBzHUL9YLeVRdnN86DnejJySe8DniiAH0sfMP7wxU2y4GoKPjXDeZFNZr4ii22re7ogpIjEfUEb3+FxtxfbjPFz6hONsy/NofkEDznci5fPk8FtulhVbkJ82Rpiq6BXQIDAQAB";
          mHelper = new IabHelper(this, base64EncodedPublicKey);
  
      }
  
      public void query(View view){
          mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
              public void onIabSetupFinished(IabResult result) {
                  if (!result.isSuccess()) {
                      // Oh noes, there was a problem.
                      Log.d("Billing error: ", "Problem setting up In-app Billing: " + result);
                      Toast.makeText(getApplicationContext(), "debug: IAB is not set up!", Toast.LENGTH_SHORT).show();
                  }
                  // Hooray, IAB is fully set up!
                  Toast.makeText(getApplicationContext(), "debug: Hooray, IAB is fully set up!", Toast.LENGTH_SHORT).show();
                  List additionalSkuList = new ArrayList();
                  additionalSkuList.add("product_1");
                  additionalSkuList.add("product_2");
                  mHelper.queryInventoryAsync(true, additionalSkuList, mQueryFinishedListener);
              }
          });
      }
  
      public void pay(View view){
          mHelper.launchPurchaseFlow(this, "product_1", 10001, mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
      }
  
      @Override
      public void onDestroy() {
          super.onDestroy();
          if (mHelper != null) mHelper.dispose();
          mHelper = null;
      }
  }
  </code></pre>
  
  <p><strong>activity_main</strong></p>
  
  <pre><code>&lt;LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity"&gt;
      &lt;Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Query"
          android:onClick="query"/&gt;
      &lt;Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Pay"
          android:onClick="pay"/&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>when deploying the app, I got two buttons (Query, Pay). I click Query button before clicking Pay button.</p>
  
  <p>Then I get the form with: </p>
  
  <blockquote>
    <p>The item you requested is not available for purchase</p>
  </blockquote>
  
  <p>I signed the APK in release mode. The app is published and the Products are active. Someone help me with finding our the problem?</p>