Typical scenario, user has two accounts, xyz@gmail.com and abc@gmail.com, both on their Android device. The user buys my premium upgrade on version 1.0 using account xyz@gmail.com, then they update to version 1.1 and the code (the in-app purchases code) now thinks they are using account abc@gmail.com, so it thinks the user hasn't bought the premium upgrade. I know it is using the wrong account because they send me their order email and then they tell me the wrong email is listed on the buy dialog if they press on the $ amount. The only fix at this point is to uninstall and reinstall using the Play store desktop website and the right account.
I am using the IABHelper from the sample with some fixes from StackOverflow. As far as I know there is no way for me to even choose the account they are using for that.
Any ideas on what might be going on? has this happened to anyone else?
The code exceeded the length limit at StackOverflow so I've put it here http://pastebin.com/hLquZ6SP
EDIT: I now have a user who claims this happens to him every time he updates the app.
EDIT: This happens a lot more during staged rollouts, I think because the account that gets the staged update is not the one the user bought the IAP with.