Testing in-app billing: "The publisher cannot purchase this item"
Asked Answered
T

13

66

My app seems ready to get a 'real life' test for an in-app purchase procedure on my device. However, I receive an "The publisher cannot purchase this item" error message in Play Store. Now, how am I supposed to test this? I don't want to lose my phone's configuration by reinstalling it with a dummy account just for testing. In the Developer Console under "Settings"-"License testing", I have added my email address under "GMail accounts with testing access", but this doesn't change anything... maybe I missed some simple way, but right now it feels very confusing!

Transom answered 3/1, 2013 at 12:32 Comment(0)
R
43

A developer cannot purchase anything from herself. To fully test, you will need to create a test account in the Developer Console and then install your app on a device where that is the primary account. There is no other way. See http://developer.android.com/google/play/billing/billing_testing.html

Russi answered 17/1, 2013 at 3:2 Comment(7)
As @richy said, adding a test account didn't work for me as well. I tried purchasing a subscription.Chalet
My problem was that I had connected several gmail-accounts with my device and among them was the developer account. Once i removed it, it worked for me.Prairial
What if I want to have the app installed as a regular user too, and wish to see that the purchasing works fine? Why shouldn't I be able to do so?Camillecamilo
@AlikElzin-kilaka, the documentation says you can't use test accounts to buy subscriptions: developer.android.com/google/play/billing/…Cap
You must also REMOVE your dev account from the device, simply signing into the test account alone wasn't enough for me.Komsomol
If you are looking to test in app features as the publisher, you can now issue promo codes and redeem them as the developer.Breathe
You DON'T create any test accounts in Developer Console, what are you talking about? What you do is adding email to test licensing list, that's all. What can you create there?Chalybite
C
21

Here's an attempt to put all the requirements into one answer. This is the simplest process that worked for me:

  1. Set up a new Gmail account, or use an existing Gmail account that is not your developer account.
  2. List the email address of the test account in the Google Play Developer Console in Settings > Account Details > License Testing.
  3. On your device, go to Settings > Accounts, select your developer account, tap the three-dots menu, then select Remove to remove the account from the device. You can add it again later.
  4. Build a signed, release variant of your app.
  5. Upload the app as an alpha in the Play Store, publish it, and wait several hours for it to become active. Or setup an internal test channel to get the update faster.
  6. If your device already has a debug version of the app installed, you will have to delete that. Or use this technique to run the debug and release versions in parallel (but you will still need to delete the debug version the first time).
  7. Download the release version onto your device. Apparently you can do this from the Play Store by navigating directly to the app URL, but whenever I tried this I received an "item not found" message. I uploaded the app to my own server and then downloaded it to the device from there.
  8. Download the release version onto your device. Or use this technique to sign the release build in Android Studio from your keystore, then deploy the app onto your device from Android Studio.
  9. Run the release version on your device. If the alpha in the Play Store is not yet active, you'll see an error that the app version isn't configured for in-app billing. If the alpha is ready, you will be able to proceed through the test process.
  10. When you get to the payment screen, you will have to enter real payment information, even though you will not be charged for your purchases. I opted to use an existing PayPal account rather than add my credit card info to my Google test account.
Cap answered 22/9, 2014 at 23:52 Comment(4)
Clicking "Publish" on an alpha app doesn't really publish it publicly in the store, right? If so, then what does it mean?Argive
No, this doesn't publish the app publicly. I don't know what other purpose an alpha app has; there must be a way to send it to testers, but I didn't explore that. I don't remember everything I tried, but in this context I think publishing the alpha is needed to activate the IAP items.Cap
Thanks for your concise answer! Really helps summing up this whole kind of messed up process. As an addition though I would add that once you added a Gmail account in the Tester group, go to play.google.com/apps/testing{your.package.name} to accept the invitation and install the application from the Play Store that will be visible to this tester.Hultin
You can add a second user to do the testing if you don't want to remove your primary google account.Disarticulate
T
14

Meanwhile, I have helped myself by changing the SKU ID to "android.test.purchased" (see http://developer.android.com/google/play/billing/billing_testing.html ) that allows to "kind of" walk through the purchase process and play a bit around with it.

However, this is not a smooth solution in my opinion and only partially satisfying as the developer doesn't see what a 'real' user sees and experiences, but rather receives some result codes from a black box with a fake name (it is even titled that way) and can't make it beyond the Google Play interface.

Transom answered 12/1, 2013 at 19:59 Comment(1)
How do you reset the purchase of this special SKU ID ? Also, it seems I always get an error for the onQueryInventoryFinished method of QueryInventoryFinishedListener interface. How come?Camillecamilo
F
6

For all those who are still stuck with this annoying feature, there's a solution with the newest version of android (5+ Lollipop).

Simple solution 1. Go to settings, then scroll down to "Users" 2. Add a new test user. 3. Open the app with this user

You can now test you're in app purchases with a test user.

Fall answered 7/5, 2015 at 18:16 Comment(1)
Worked for me on Android 7.0! Makes it easy to switch between the test user and your normal user for those of us who use our personal everyday devices for testing.Tiresias
T
4

I solved this by uninstalling the app, going to Play Store and switching to my non-developer account and downloading and installing the app.

Tedi answered 19/5, 2014 at 17:11 Comment(0)
P
4

You are trying to purchase that item using the same account that you used to upload the app to the store.

If you upload an app on the android store using [email protected] and you try to make a purchase on that app using [email protected] you will get that error.

Try making the puchase using another Google play-store account, on someone else's phone for example.

Bottom line: You can't purchase it yourself.

Poliard answered 29/8, 2016 at 16:54 Comment(0)
D
3

Summarizing my own pitfalls:

  • upload your app in alpha or beta channel
  • publish your app(publishing in beta or alpha channels didn't make your app visible to anyone except those in testers list)
  • add your account to the "testers" list
  • go to "testers" link (something like "https://play.google.com/apps/testing/< package_name>") and click "participate" (That's one that I missed)
  • publish your inapp items
  • build release(!) version of the app and upload it onto device.
  • make sure that device version and market version are signed by the same release key

  • make sure that market version number is not smaller than one defined in the build gradle

Dryer answered 22/6, 2016 at 9:25 Comment(0)
T
0

I was facing same error, now solved there were two main reasons of my failure:
1. I had not activated in-app products, means they were in Inactive mode
2. If you want to test, you must add Beta testers.

Throng answered 1/2, 2014 at 19:35 Comment(0)
H
0

I had fixed this issue by:
1. Using Signed apk
2. I had not activated in-app products, means they were in Inactive mode

Huskey answered 2/2, 2014 at 12:57 Comment(2)
How come do you make in-app purchase, when you make your products inactive?Moyra
When I deactivated a previously active in-app product, the error message changed from "the publisher cannot purchase this item" to "this item is not available for purchase." At least the active/inactive change occurred immediately so I didn't have to waste time waiting to test it.Cap
P
0

I solved this error by

  1. used the signed apk for testing
  2. sku name same as inapp product name
  3. in app product is active status
  4. app must published status show
Peptonize answered 12/9, 2014 at 10:18 Comment(0)
J
0

I faced same issue when installed manually the APK from eclipse to my phone then manually opening it. The correct procedure is to send it to Google play for alpha testing then wait several hours to be published to your alpha or beta testers which you ofcourse you must manage , must create, must give them access to your app. The developer shall receive an email with a link to provide to his testers after several hours. Once that happens just forward it to your community . In your mobile create an extra google account (that belongs to the community) and with that open gmail and press the link. It shall guide you to google play where you will automatically download the app as tester. Install , buy gass .. tada!!

Jaundiced answered 26/5, 2015 at 22:58 Comment(0)
D
0

Best way in my opinion is to fully test the paid/free version features without the Google Play inapp code. Only at the very end, add the inapp code to switch between free or pro. Upload the APK to the alpha release and get a device which has never seen your developer account nor the app itself. Install and buy it with redeemable codes. If the codes work then the actual payment should (the payment method is not part of your codebase, it's on Google side)

Degauss answered 26/5, 2018 at 17:22 Comment(0)
C
-1

I think the reason you got this result is because you ran the app in development environment.

To test in-app billing, you'll need to sign the app. See more info here and here.

This is indeed a nuisance and prolongs the dev cycle :(

Chalet answered 19/12, 2013 at 6:34 Comment(2)
i didn't downvote but it deserves one. "The publisher cannot buy this item" indicates that the publisher has already signed the apk.Moyra
One does need to sign the app in --release mode to test in-app billing, but the error message indicates that it was already signed, so that's not the problem. Perhaps you should delete your answer, or rewrite it?Broughton

© 2022 - 2024 — McMap. All rights reserved.