There is no way to know the email which the user is buying.
Even using the Account Manager, returns you a whole list of all emails.
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
String possibleEmail = account.name;
...
}
}
It's not as simple as choosing the first of the list, since the user could buy with any email that is associated to the phone.
You can use the AbstractAccountAuthenticator#getAccountRemovalAllowed, to know that account can not be deleted, and know which is the main mail (since you cannot delete the main mail), but even this may change, the user can change the main mail in any time.
I would like to know how to do this, but unfortunately there is no way. In my case, it's not essential money, so I send me as "payload" all email accounts of the phone concatenated, and all of these which would allow unlock premium content in my application, what can I lose some sales? It is likely, but I prefer that to a negative score in the market because a user buy premium content and could not be unlocked because I chose the wrong mail.