I'm currently testing my InApp billing mechanism (using the InApp Billing version 3 API, therefore taking the TrivialDrive example as reference).
I have one managed item, which is upgrade to premium version.
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.
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.
@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")); } } ); } }); }
I keep getting getPurchaseState = 0, which means is Purchased, even one hour after I cancelled the order. Why?
After having waited for about 12 hours and having tried everything suggested here, I was still facing the same issue. What did the trick for me was the following adb command:
adb shell pm clear com.android.vending
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With