Google Play IAP ridiculous success rate

I’m waiting to hear back from the engineers. 

Thanks Rob,

I’ll be waiting too… :slight_smile:

I’ve heard back from the engineering team.  Invalid Client happens for these reasons:

  1. You are logged into the Google Play app with your developer account.  These will always fail.  You must use a test account.

  2. You have not setup an account with the Google Play app yet.

  3. You have not agreeded to the Google Play App’s license agreement yet.

  4. The Google Play app is failing to connect to Google’s servers.

Try tapping on the Google Play app and make sure you can connect to the store successfully and view other apps.  If you need additional instructions on testing your app, please see:

http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-static

 

Hi Rob,

This isn’t what I expected…

I’m way passed the test account phase

Again, I have tested on my device and the IAP works, and there are some successful purchases.

The solution to the mystery is one of these two:

  1. More than 99% of google play users never agreed to google’s T&C and never made an IAP (unlikely but theoretically possible)

  2. Something else is wrong, In which case can I ask you or maybe someone from the tech team to download my game (from here: https://play.google.com/store/apps/details?id=com.mumblefish.interpolrunner) and make a purchase? I’ll cancel the transaction from my google checkout dashboard if it works. If it doesn’t, well, we’ll be on to something, since I can’t reproduce the error myself.

Thanks again,

Ron

I’m installing your app and I’ll check it out in a little while.

Some more info:

in the last week there were:

“Transaction failed, type: invalidClient desc: The Android Marketplace app has not been properly configured with an account.” 23 times

but “Transaction failed, type: invalidClient desc:” (with an empty description) 344 times

I guess this addresses the first option I mentioned above. 

Android Marketplace app

This is coming for the app before Google Play.   The empty description is because that’s what we get back from Google in the API call.  The only way to know what is going on is to do an adb logcat and watch for errors from Google Play’s app.

I’m back…

I’ve started discussing the issue with the google play game team.

I gave them the details I have and and they want to know “which errors will become invalidClient errors”.

As you mentioned, the invalidClient is caused by one of these conditions:

  • You are logged into the Google Play app with your developer account. Purchases always fail in this case.  You need to use a test account instead.
    • This one is irrelevant for released apps.
  • You have not set up an account with the Google Play app yet.
    • I’m guessing a user wouldn’t be able to download apps at all if he didn’t. if the apk somehow came from another source, i’m guessing this scenario is giving the invalidClient with the description
  • You have not agreed to the Google Play app’s license agreement yet.
    • same as above
  • The Google Play app is failing to connect to Google’s servers.
    • the only option remaining, though i doubt is the cause for a 99.5% fail rate.

Anyway, which one(s) of these will return an empty description?

Thanks again

The engineers have asked that you look at your log files (of course this isn’t going to help you on customer apps), and to look for clues as to the problem.  Look for a service called “finsky”.  This is the IAP service from google.  You might want to look at your code to make sure you are not doing an excessive number of resotres within a day.  Google will ban the app for several weeks.  The HTTP request result will be a 403 Forbidden, but that may not translate into a message back into Corona.

I’m back…

I’ve started discussing the issue with the google play game team.

I gave them the details I have and and they want to know “which errors will become invalidClient errors”.

As you mentioned, the invalidClient is caused by one of these conditions:

  • You are logged into the Google Play app with your developer account. Purchases always fail in this case.  You need to use a test account instead.
    • This one is irrelevant for released apps.
  • You have not set up an account with the Google Play app yet.
    • I’m guessing a user wouldn’t be able to download apps at all if he didn’t. if the apk somehow came from another source, i’m guessing this scenario is giving the invalidClient with the description
  • You have not agreed to the Google Play app’s license agreement yet.
    • same as above
  • The Google Play app is failing to connect to Google’s servers.
    • the only option remaining, though i doubt is the cause for a 99.5% fail rate.

Anyway, which one(s) of these will return an empty description?

Thanks again

The engineers have asked that you look at your log files (of course this isn’t going to help you on customer apps), and to look for clues as to the problem.  Look for a service called “finsky”.  This is the IAP service from google.  You might want to look at your code to make sure you are not doing an excessive number of resotres within a day.  Google will ban the app for several weeks.  The HTTP request result will be a 403 Forbidden, but that may not translate into a message back into Corona.

@paskuniak - wondering how you went with this?  I’m just getting the “invalidClient” message after what seemed like a valid purchase from Google Play dialog boxes, before they threw back to my app…

Invalid Client happens for these reasons:

  1. You are logged into the Google Play app with your developer account.  These will always fail.  You must use a test account.  You cannot even buy your live apps with your developer account.

  2. You have not setup an account with the Google Play app yet.

  3. You have not agreeded to the Google Play App’s license agreement yet.

  4. The Google Play app is failing to connect to Google’s servers.

  5. You’ve done too many restores in to short of a period of time and Google has brigged you for a while.

Try tapping on the Google Play app and make sure you can connect to
the store successfully and view other apps.  If you need additional
instructions on testing your app, please see:

http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-static

Hi Rob,

Testing again, I’ve got one of my IAP’s working fine, but noted re “invalid client”

 - 1st test:  worked in Google, then in Corona worked with state “purchased”

 - 2nd test: worked in Google, BUT then “invalid client” in Corona (i.e. failed)

 - 3rd test: same as 2nd

So you think this could be your item 5?  Do you know any more about this?  Able to expand on “Google has brigged you for a while”? Wondering what sort of user error to present here?

Also, do you happen to know what Corona response would be if you did a “restore” on Google Play but there was nothing to restore at all? (e.g. failed / no response …)  [just if you happen to know offhand…]

If you call store.restore() with both Google and Apple, and there are no items to restore, there will not be a response generated by either server.  Note:  consumables are never restorable.

As for #5, if you google:   Corona INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING  there are multiple threads where this has been discussed.  I don’t remember how long your app is blocked for, but it’s not a few minutes but its more like hours or days. 

Rob

Rob - this google IAP testing is certainly painful :frowning:

Can I ask what is the Google In-app Billing that Corona uses?  is it v2 API or v3 API?  

In the last couple of hours I’ve:

* realized I couldn’t test a new non-consumable purchase, so needed a new account

* had to create a new Google account - then when finalizing it submitted the name, which wasn’t real enough then had to be reviewed, so it wasn’t usage there and then

* so created another new Google Account

* try to purchase but it wants a credit card (even though I’ve got the email address down in the tester area of Google Play)

* got distracted as it was seemingly logging into the new account, but not working as I expect.  Then realized it was Game Services that it was logging in with the latest account, and when I was purchasing it would have been with the primary/first Google account on my device

* couldn’t work out how to trigger the app/device to ask me which account to use for purchase so deleted all my other google accounts on the device

* finally try again with the latest account, seems good, but then get a message back “high risk activity blar blar, try again in 30 mins”, probably because I’d used the same credit card on multiple accounts I assume

:frowning:  :)

Oh I do notice that when I go to purchase in this latest state I’m seeing two responses back from Google:

  • 1st one:  State:cancelled, errorType:cancelled

  • 2nd one: State:failed, errorType:invalidClient

We are currently using V2.  We are working on V3, but it’s not available yet.

To assist in testing, google has three or four products that you can use, one will always succeed, one will always fail, etc.  I forget the names of them, but the idea is that you test against Google’s test products, then put your real products in before you release them and then test a minimal amount of time against the real products.

ok thanks - yes I may have to drop back to just hard coding the test identifiers in and using this approach - was just moreso hoping to test the final/actual build - did ring the Merchant Center and they suggested that the “high risk transaction” would be due to the fact I’m using the same credit card number on the test account as I did on the developer account…was going to check this now and try another credit car…running out of credit cards to use here however  :)    Oh and they did say there was no way around testing with a test account without having a credit card/funding associated with it…

Hi Rob - had invalidClient raise its head in a specific scenario - have created a new thread/question here as I’m not sure how to handle this - would be good to get your advice:

http://forums.coronalabs.com/topic/42158-googleplay-gives-errorinvalidclient-for-you-already-own-this-item-scenario-how-to-handle/

@paskuniak - wondering how you went with this?  I’m just getting the “invalidClient” message after what seemed like a valid purchase from Google Play dialog boxes, before they threw back to my app…