title: Android In-App Billing: Purchase state stays "purchased" after order cancelation
body: <p>I'm currently testing my InApp billing mechanism (using the InApp Billing version 3 API, therefore taking the TrivialDrive example as reference).</p>
  
  <p>I have one managed item, which is upgrade to premium version.</p>
  
  <p>Now, purchasing the item with my test account works, but when I do a cancellation of the entire order in Google checkout afterwards, my code still tells me that the item is purchased an therefore grants the premium features.</p>
  
  <p>Here is how I check for the purchase in my MainActivity. I do not save the purchase state locally somewhere, as I understood that the with the billing API v3, you can query for purchases ad hoc as needed.</p>
  
  <pre><code>@Override
      protected void onStart() {
          // TODO Auto-generated method stub
          super.onStart();
  
          iabHelper = new IabHelper(this, Helper.getPKey());
          iabHelper.enableDebugLogging(true);
  
          iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
  
              @Override
              public void onIabSetupFinished(IabResult result) {
                  Log.d("IAB", "SETUP FINISHED");
  
                  if(!result.isSuccess())
                  {
                      Log.d("IAB", "SETUP NOT OK");
                      return;
                  }
                  else
                      Log.d("IAB", "SETUP OK");
  
                  iabHelper.queryInventoryAsync(
                      new QueryInventoryFinishedListener() {
  
                          @Override
                          public void onQueryInventoryFinished(IabResult result, Inventory inv) {
                              Log.d("IAB", "Query inventory finished.");
                              if (result.isFailure()) {
                                  Log.d("IAB","Failed to query inventory: " + result);
                                  return;
                              }
  
                              Log.d("IAB", "Query inventory was successful.");
  
                              // Do we have the premium upgrade?
                              boolean mIsPremium = inv.hasPurchase(Helper.premiumSku);
                              Purchase p = inv.getPurchase(Helper.premiumSku);
                              if(p != null)
                                  Log.d("IAB PURCHASE STATE", IabHelper.getResponseDesc(p.getPurchaseState()));
                              else
                                  Log.d("IAB PURCHASE STATE", "Purchase is null");
  
                              Log.d("IAB", "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
  
  
                          }
                      }                       
  
                  );              
              }
          });       
      }
  </code></pre>
  
  <p>I keep getting getPurchaseState = 0, which means is Purchased, even one hour after I cancelled the order. Why?</p>