Skip to content

Purchases.canMakePayments unreliable #2942

@jscti

Description

@jscti

Describe the bug
I try to handle sideloaded apps / old unsupported Android version or Billing api versions / devices without Googleplay / etc
=> All the edge cases polluting my production logs/bugtracker.

I do several things to determine if my whole "paywall" feature should be active (everything fine on the user device) or not :

  • try catch around Purchases.configure
  • call to Purchases.canMakePayments
    But it seems not bulletproof because I have traces of errors while trying to fetch offerrings (with errors that would normally have been catched by canMakePayments) :

Last error in the user session is :

com.jscti.commons.ui.premium.PurchasesException: Failed to load product: There is an issue with your configuration. Check the underlying error for more details.
    at com.jscti.commons.ui.premium.PremiumManagerKt$fetchPremiumProduct$2$1$1.onError(PremiumManager.kt:310)
    at com.revenuecat.purchases.PurchasesOrchestrator$getOfferings$1.invoke(:7)
    at com.revenuecat.purchases.PurchasesOrchestrator$getOfferings$1.invoke(PurchasesOrchestrator.kt:530)
    at com.revenuecat.purchases.common.offerings.OfferingsManager$getOfferings$onErrorWithTracking$1.invoke(:25)
    at com.revenuecat.purchases.common.offerings.OfferingsManager$getOfferings$onErrorWithTracking$1.invoke(:4)
    at com.revenuecat.purchases.common.offerings.OfferingsManager$getOfferings$5.invoke(:9)
    at com.revenuecat.purchases.common.offerings.OfferingsManager$getOfferings$5.invoke(OfferingsManager.kt:78)
    at com.revenuecat.purchases.common.offerings.OfferingsManager$handleErrorFetchingOfferings$2.invoke(:6)
    at com.revenuecat.purchases.common.offerings.OfferingsManager$handleErrorFetchingOfferings$2.invoke(:0)
    at com.revenuecat.purchases.common.offerings.OfferingsManager.dispatch$lambda$7(OfferingsManager.kt:0)
    at com.revenuecat.purchases.common.offerings.OfferingsManager.$r8$lambda$Pldn3UTduixDp-oHHYCTcjyyHb4(OfferingsManager.kt:0)
    at N.AndroidTextContextMenuToolbarProvider$$ExternalSyntheticLambda5.run(:0)
    at android.os.Handler.handleCallback(Handler.java:959)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loopOnce(Looper.java:257)
    at android.os.Looper.loop(Looper.java:342)
    at android.app.ActivityThread.main(ActivityThread.java:9634)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)

But I can see a lot more errors before that for the same user session, and I think it's the real one :

PurchasesError(code=PurchaseNotAllowedError, underlyingErrorMessage=Error getting billing config - DebugMessage: Play Store version installed does not support get billing config.. ErrorCode: FEATURE_NOT_SUPPORTED. SubResponseCode: NO_APPLICABLE_SUB_RESPONSE_CODE., message='The device or user is not allowed to make the purchase.')

lastly, the first error in the stack confirms it :

BillingClient: Current client doesn't support get billing config.

Note that :

  • my revenuecat / googleplay config is totally fine, I have active purchases without issues
  • I even try to call BillingClient.startConnection before activating revenuecat, but that also didn't detect any issue
  • I aslo systematically receive a "NO_APPLICABLE_SUB_RESPONSE_CODE" when the app is being reviewed by google when uploading a new release .. In this case, also, canMakePayments don't detect any issue

Details about this user (installerStore is clearly weird) :

isSideLoaded: false
installerStore: ru.qjrnvtrr.bsamnhgfw
device: SM-G998U1
os: Android 15
os.build: AP3A.240905.015.A2.G998U1UESHHYI2
rooted: no
online: true
  1. Environment
    1. Platform: Android 15
    2. SDK version: 9.15.2
    3. OS version: Android 15
  2. Debug logs that reproduce the issue
  3. Steps to reproduce, with a description of expected vs. actual behavior
  4. Other information (e.g. stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, etc.)

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions