Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In-app billing API version 3 is not supported on this device. #1874

Open
jscti opened this issue Oct 8, 2024 · 5 comments
Open

In-app billing API version 3 is not supported on this device. #1874

jscti opened this issue Oct 8, 2024 · 5 comments

Comments

@jscti
Copy link

jscti commented Oct 8, 2024

Using an emulator (api25) with GooglePlay but not connected I got this error :

In-app billing API version 3 is not supported on this device.
2024-10-09 00:06:50.487 10022-10022 [Purchases] - ERROR     com.app.test            E  🤖‼️ PurchasesError(code=StoreProblemError, underlyingErrorMessage=Billing is not available in this device. Make sure there's an account configured in Play Store. Reopen the Play Store or clean its caches if this keeps happening. Original error message: DebugMessage: Google Play In-app Billing API version is less than 3. ErrorCode: BILLING_UNAVAILABLE., message='There was a problem with the store.')
2024-10-09 00:06:50.488 10022-10022 [Purchases] - ERROR     com.app.test            E  🤖‼️ Error fetching offerings - PurchasesError(code=StoreProblemError, underlyingErrorMessage=Billing is not available in this device. Make sure there's an account configured in Play Store. Reopen the Play Store or clean its caches if this keeps happening. Original error message: DebugMessage: Google Play In-app Billing API version is less than 3. ErrorCode: BILLING_UNAVAILABLE., message='There was a problem with the store.')
2024-10-09 00:06:50.488 10022-10022 RevenueCatUI            com.app.test            E  Paywall transitioned to error state: Error 2: There was a problem with the store.

using revenuecat_version = '8.8.0'

Multiple problems here :

  • I want my app to be usable even for users With Playstore/Playservices but NOT logged in
  • I want my app to be usable even if sideloaded outside playstore (so no playstore/playservices)
  • Using the PaywallFooter, there is no way to handle this error as it load as soon as the PaywallFooter load (not even on purchase/restore click) and in the setListener methods there are callback only for these 2 actions (onPurchaseError / onRestoreError) .. no onLoadingError
    - But the critical issue is that this error triggers the display of an undismissable error Dialog (not my UI but revenucat one with a message "Error 2: There was a problem with the store") . Clicking on "OK" doesn't do anything._
    Edit: on this last issue, I workaround-ed with " by using the dismissRequest callback to "close/navigate away" from my onboarding/paywall page (removing PaywallFooter from the loaded screen seems to also delete this DialogBox)... But it's totally hacky and your dialogs should never be non-dismissable when clicking "OK"

Thanks

@RCGitBot
Copy link
Contributor

RCGitBot commented Oct 8, 2024

👀 We've just linked this issue to our internal tracker and notified the team. Thank you for reporting, we're checking this out!

@jscti
Copy link
Author

jscti commented Nov 7, 2024

Okay so a little update :

dismissRequest hack does not work as it is triggered when :

  • a purchase is successfully completed (revenuecat seems to auto-dismiss the paywall)
  • an error like the one described occurs (I don't talk about purchase/restore errors that are handled by the PaywallListener)

So this callback is totally unreliable for error handling ..

=> Adding a nullable error would be a good enhancement to determine if this callback is called for an error or not (or adding a separate loadingErrorHandler, or stop auto-dismissing paywall on purchase, or ...)

Finally, with this issue + #1862 , I'm having a real hard/bad time to about error handling in revenuecat PaywallFooter ...

note: at first I reproducted this issue in emulator, but now, I detected this same behavior on production (app from playstore, not sideloaded), so this error handling really need to be done.

So last ugly workaround :

  • when the dismissRequest callback triggers
  • I init myself a BillingClient (from android billing sdk) + startConnection
  • if it don't succeed : the user have a bugged/old billing service or play store or connectivity issue or whatever
  • So I can consider this dismissRequest execution as an ERROR (and not a successfull purchase) because
    meh ><

=> a "isBillingReadyToUse / isBillingInitialized / whatever" from your SDK that performs this checks would be GREAT (in order, for example, to NOT show a will-be-bugged paywall instead of letting it miserably crash)

@HaleyRevcat
Copy link
Contributor

Hi, sorry for the delay in response here. If you are using our Android SDK, then this will need to go through Google Play. So side loading outside of the Play Store will not work if payments are not being processed via Google. If your app is using something like Stripe to process payments instead, then you can actually send those Stripe receipts to RevenueCat and we can log these for those users using the mobile app, see our blog here: https://www-origin.revenuecat.com/blog/cross-platform-subscriptions-ios-android-web/

@jscti
Copy link
Author

jscti commented Dec 19, 2024

Yeah I'm using your Android SDK on a PlayStore application (so, with, normally, GooglePlay up and running). No sideload/external payment.

But, some clients seems to encounter Paywall crash in production and error handling is hard to do ...

@HaleyRevcat
Copy link
Contributor

Thanks for clarifying that, in order to see what error those users are getting with the paywall it would be great to get some debug logs. We've had some developers enable debug logs in production and they are able to send them to their server to get those.

To get debug logs from production for the affected users, you will want to have the RevenueCat SDK code in your app enabling debug logs and then you can have in the settings page of your app a couple of buttons, such as 'Record Debug Logs' and 'Send Debug Logs' where this will tell your app to start saving the debug logs and then to send them to your server. You should have your user press the 'Record Debug Logs' button, then have them attempt to make the purchase and go through the flow you previously described. Afterwards, they should press the 'Send Debug Logs' so you can receive these from them.

After you get those can you please open a support ticket here and also include the app user ids of the affected users so I can check our server logs for anything amiss? Note that paywall crashes won't necessarily show up in our server logs which is why debug logs would be helpful here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants