Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In-app purchases with multiple accounts

I am facing a problem with in app purchases/subscriptions:

If there are multiple accounts on the device, I can't get the purchases, which were made with the second account. This can sometimes be temporarily fixed, by installing the app from the Google Play web interface, but after a while, the purchases won't appear in the query, forcing the user to reinstall.

I am using the IabHelper classes from this sample.

Doing some Google searches, I found that this bug exists since a while, but unfortunately I couldn't find out if the error is in the IabHelper classes or on Google's side.

I'd like to draw attention to Google, so they provide a proper fix for this, either in the IabHelper classes or in the Play Services or to provide information, how this should be handled.

I am using the code in an app with (at the time of writing) 900.000 active user installs and I have to trigger quite a lot of refunds, due to this.

If there is a fix for this, which I missed, please let me know.

Edit: Sometimes it's not possible at all to retrieve the purchases, even if there is only one account on the phone.

like image 951
stefple Avatar asked Mar 02 '15 13:03

stefple


People also ask

Can in-app purchases be shared?

What is purchase sharing? When you turn on purchase sharing, everyone in your family gets access to apps, music, movies, TV shows, and books that family members buy. The family organizer is billed for family members' purchases.

Do in-app purchases work on multiple devices?

If you have made an in-app purchase then these should automatically show up with Android devices, however, if you made in-app purchases on an iOS device you will need to visit the shop to restore your purchases.

Can you make in-app purchases with a different Apple ID?

Fortunately, this can be done without having to change the Apple ID that you're primarily logged into on your iPhone or iPad. When you set up your iPhone for the first time, you're prompted to sign in with an Apple account to access the App Store, make purchases, access iCloud, and other services.


1 Answers

It seems like there isn't a one way road to solve this, but let's try do this.

  1. When the user first install the app get his/her primary email or all accounts on the device

  2. Ask the user what email will they be using for future payment/ or which account is active for google play.

    you can use this code to get the account

    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;         ...     } } 

    Don't forget to ask for permission

    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

    After the user selects the email, you can send a link via email to confirm this email address

  3. Lead all the payment to that specific email.

Method 2

Use the new "Send & Receive money using Gmail" future

  1. Create a email intent and send specific data to the email intent and make payments.

  2. Upon success, send a code to the user email

  3. Use the code to activate whatever purchased they make.

Method 3

Use another payment library or gateway for your in app purchase instead of Google play.

like image 194
Lucien Mendela Avatar answered Sep 24 '22 13:09

Lucien Mendela