android – How can i test in-app payments when Google Play App Signing feature is enabled?-ThrowExceptions

Exception or error:

I want to test in-app payments and I have Google Play App Signing (GPAS) enabled.

To test payments, I need an apk signed with real key (signing key in terms of GPAS).

But I do not have private key for signing certificate. It was generated by Google and stored in Google Play.

How can I avoid necessity to upload apk to Google Play each time I want to test in-app payments?

How can I download signing private key somewhere?

How to solve:

I have an app in alpha channel and “Google Play App Signing” enabled and I have been able to test in-app billing without major problems using a few tester accounts.

In Google Dev Console >> Release Management >> App Release >> Manage Alpha >> Manage Testers you can create a list of tester accounts, after that passing to them a web link they can install and test the app.

The publisher (developer) account can’t buy items but I created another account for tests that I use in emulators (Genymotion + Gapps) without problems.

The only mishap found is that some testers when they buy the product the system ask them for a real payment !, they should not be charged as Google documents say, I have solved it by creating in the console a few promotion codes for them.

Maybe your problem is that you already have the app in production and not in alpha or beta?

Hope it will help.

UPDATE:

You said in a commnent to another answer : “But I don’t want to wait a few hours each time I make any change in my Application. That is the point.”

You don’t need to upload another release each time you make a change, you can continue debugging your app via USB or on an emulator with Play Store installed, as long as the debugging device uses a google tester account and she/he has accepted to be a tester on the received web link.

Of course this tester can be yourself using a google account other than the one of the app publisher

UPDATE 2

If the doubt is due to believe that in-app billing purchases are signed with the same key that the application then it is not true.
Purchases are signed with a key different than the application, you can get the Base64-encoded RSA public key in the developer console in Development Tools >> Services & APIs

###

if you need to test real transactions, the only way is to public at least an alpha version of your application, as mentioned here

Because Google Play does not allow you to use your developer account
to directly purchase in-app products that you have created yourself,
you’ll need to create test acccounts under your developer account
profile. To create a test account, simply enter a valid Google email
address. Users with these test accounts will then be able to make
in-app-billing purchases from uploaded, unpublished applications that
you manage.

To test your In-app Billing Version 3 application using your own
product IDs:

In the Play Console, add one or more tester accounts to the developer
account that you are using to publish your application. Login to the
Play Console with your developer account. Click Settings > Account
details, then in the License Testing section, add the Google email
addresses for your tester accounts. Build a signed APK file for your
In-app Billing application. To learn how to build and sign your APK,
see Building Your Application for Release. Make sure that you have
uploaded the signed APK for your application to the Play Console, and
associated one or more in-app products with your application. You
don’t need to publish the application on Google Play to test it.
Warning: It may take up to 2-3 hours after uploading the APK for
Google Play to recognize your updated APK version. If you try to test
your application before your uploaded APK is recognized by Google
Play, your application will receive a ‘purchase cancelled’ response
with an error message “This version of the application is not enabled
for In-app Billing.”

Install the APK file to your physical test device by using the adb
tool. To learn how to install the application, see Running on a
Device. Make sure that your test device is running on Android 2.2 (API
level 8) or higher and is installed with Google Play client Version
3.9.16 or higher. Login to the test device by using a tester account. Test your In-app Billing application by purchasing a few items, and
fix any issues that you encounter. To learn more about how you can
perform large-scale testing of your In-app Billing app, see Test
Purchases (In-app Billing Sandbox).

But, if you need just to check if your payment flow is correct you can use static requests, which allows you to test payments without publishing.

We recommend that you first test your In-app Billing implementation
using static responses from Google Play. This enables you to verify
that your application is handling the primary Google Play responses
correctly. You can do this even if the app hasn’t been published yet.

Another way of testing was Draft app, but as you can read in the second link,

Draft Apps are No Longer Supported

Previously, you could publish a
“draft” version of your app for testing. This functionality is no
longer supported. Instead, there are two ways you can test how a
pre-release app functions on the Google Play Store:

You can publish an app to the alpha or beta distribution channels.
This makes the app available on the Google Play Store, but only to the
testers you put on a “whitelist”.

In a few cases, you can test Google
Play functionality with an unpublished app. For example, you can test
an unpublished app’s in-app billing support by using static responses,
special reserved product IDs that always return a specific result
(like “purchased” or “refunded”).

So, in short words.. you can set up static payments all over your application (to test calls) and check this way if they work or not. Once the tests are done, replace static Requests with the final form and use your alpha version to test it. Sadly, no other ways are available (officially) since, as posted above, google doesn't allow developer account to purchase your own products.

Afaik, you can’t retrieve the keystore from google play

###

How can I download signing private key somewhere?

You cannot, since it would undermine Google Play App signing key security. If you’re indeed the legitimate owner of the publisher account, you could upload the upload_certificate.pem file as explained in the comments.

To test in-app billing, you need to publish your app to an alpha or beta channel in Google Play. Since, the Google Play App Signing feature is enabled, you can follow the official documentation here.

To test your In-app Billing implementation with actual purchases, follow these steps:

  1. Upload your application to the alpha distribution channel with the Play Console.
    Note: Previously you could test an app by uploading an unpublished “draft” version. This functionality is no longer supported; instead, you must publish it to the alpha or beta distribution channel. For more information, see Draft Apps are No Longer Supported.

  2. Add items to the application’s product list.
    Make sure that you publish the items (the application can remain unpublished). See Creating a product list to learn how to do this.

  3. Install your application on an Android-powered device.
    You cannot use the emulator to test In-app Billing; you must install your application on a device to test In-app Billing.
    To learn how to install an application on a device, see Running on a device.
  4. Verify that your device is running a supported version of the Google Play application or the MyApps application.
    If your device is running Android 3.0, In-app Billing requires version 5.0.12 (or higher) of the MyApps application. If your device is running any other version of Android, In-app Billing requires version 2.3.4 (or higher) of the Google Play application. To learn how to check the version of the Google Play application, see Updating Google Play.
  5. Make in-app purchases in your application.
    Note: The only way to change the primary account on a device is to do a factory reset, making sure you log on with your primary account first.

When you are finished testing your In-app Billing implementation, you are ready to publish your application on Google Play. You can follow the normal steps for preparing, signing, and publishing on Google Play.

Learn more with the sample app with detailed steps here: Google Play In-app Billing https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive#getting-started

Leave a Reply

Your email address will not be published. Required fields are marked *