response: 7:Item Already Owned on google play IAP V3, How to handle?

Hey guys,

So I’ve made this purchase on my app, and after uninstall and reinstall when i try to purchase again 

i get this response:

I/Corona  ( 8697): [IAP] state: failed

I/Corona  ( 8697): [IAP] errorType: 7

I/Corona  ( 8697): [IAP] errorString: Unable to buy item (response: 7:Item Already Owned)

I/Corona  ( 8697): [IAP] Transaction failed, type: 7 Unable to buy item (response: 7:Item Already Owned)

 

 

All purchases are NON consumable. (one time only purchases)

Now, this is fine and as expected,also, i have in the main menu a button for “Restore Purchase”, but yet again, what if the user in not restoring, but pressing the normal purchase button in the app, he will see no feedback of successful purchase (and the above log will be written to the console), so my question is:

 

Upon pressing the purchase button, is there a way to tell if the user already purchased this item in the past? surly i can do a string check on the ‘event.transaction.errorString’ to see if it contains “Item Already Owned” but what if tomorrow google replaces this string to something else?

 

How do you deal with this situation?

 

thanks in advance

Roy.

You could call restore automatically on startup, so you can mark these items as purchased straight away.

Then on your store screen, change your price buttons to unclickable “purchased” buttons.

This means that: 

a) Users regain their items without having to manually click restore.

b) They can see at a glance which items they have already bought.

c) You don’t need to worry about this “already owned” issue.

@Alan ,

Thank you for the reply

What do you mean by calling store.restore on startup? do you mean that when the application is opened, then in the main menu secretly call this method behind the scenes?

And I’m a “bit” worry about the “already owned” issue, if the item is already owned so why does google returns a failure?!, return a successful and lets get on with this **** (sorry for the rant)…

I wish i could test the affect of calling store.restore on startup, but i need to wait another godda** 4 hours now for the build to be updated in google developer console (sorry again for the rant its just such a frustrating process)

Roy.

Yes I mean call the method behind the scenes - even without your “already owned” issue I’d recommend doing this to improve the user experience. Personally if I uninstall and reinstall a game, I don’t want to have to go into the store and hit “restore” if I don’t need to, I’d much prefer that the “super duper gem recharger” item I bought earlier was just made active immediately.

As for the “already owned” message, technically Google is doing the correct thing. Since you have not shown the item as already owned to the user, they need to get a message from Google explicitly telling them what is happening with this purchase. If it just said “success”, they might think they have paid for it twice, and you will get complaints. The “already owned” message is your opportunity to catch this ‘error’ and grant them the item straight away, and the user will know that they have not been charged twice for it.

You’re fortunate that all your items are all non-consumable, we were getting the “already owned” message on consumables, which is a much tougher thing to work around.

Oh my, sounds painful… thanks for your advice, ill give it try!

Roy.

You could call restore automatically on startup, so you can mark these items as purchased straight away.

Then on your store screen, change your price buttons to unclickable “purchased” buttons.

This means that: 

a) Users regain their items without having to manually click restore.

b) They can see at a glance which items they have already bought.

c) You don’t need to worry about this “already owned” issue.

@Alan ,

Thank you for the reply

What do you mean by calling store.restore on startup? do you mean that when the application is opened, then in the main menu secretly call this method behind the scenes?

And I’m a “bit” worry about the “already owned” issue, if the item is already owned so why does google returns a failure?!, return a successful and lets get on with this **** (sorry for the rant)…

I wish i could test the affect of calling store.restore on startup, but i need to wait another godda** 4 hours now for the build to be updated in google developer console (sorry again for the rant its just such a frustrating process)

Roy.

Yes I mean call the method behind the scenes - even without your “already owned” issue I’d recommend doing this to improve the user experience. Personally if I uninstall and reinstall a game, I don’t want to have to go into the store and hit “restore” if I don’t need to, I’d much prefer that the “super duper gem recharger” item I bought earlier was just made active immediately.

As for the “already owned” message, technically Google is doing the correct thing. Since you have not shown the item as already owned to the user, they need to get a message from Google explicitly telling them what is happening with this purchase. If it just said “success”, they might think they have paid for it twice, and you will get complaints. The “already owned” message is your opportunity to catch this ‘error’ and grant them the item straight away, and the user will know that they have not been charged twice for it.

You’re fortunate that all your items are all non-consumable, we were getting the “already owned” message on consumables, which is a much tougher thing to work around.

Oh my, sounds painful… thanks for your advice, ill give it try!

Roy.

@Alan,  then how to handle the situation for the consumable item?

@Alan,  then how to handle the situation for the consumable item?