in-app purchase crashes when fetching products from the Play Store in Flutter

1,519

This took a while, but none of the above seemed to work for me. I found out, as I'm also using RevenueCat that the two dependencies were clashing. As of today resolving purchases_flutter to 1.2.1 instead of 1.4.3 resolved this for me.

Share:
1,519
Aleksandar
Author by

Aleksandar

Experienced mobile technical team lead with more than 3 years of experience in leading small and mid scale teams including software engineers and software testers. iOS and Flutter Developer with a demonstrated history of working in the information technology and services industry. Skilled in both Objective-C and Swift with background in Android development. Strong engineering professional with a Master's Degree focused in Electrical and Computer Engineering from Faculty Of Technical Science in Novi Sad.

Updated on December 21, 2022

Comments

  • Aleksandar
    Aleksandar over 1 year

    I am facing an issue after installing and implementing in-app purchase plugin Flutter team provided. What I did so far:

    1. added 2 products on Play Store that are visible and active.
    2. submitted build for alpha testing, since that is required for in-app purchase to work.
    3. added InAppPurchaseConnection.enablePendingPurchases(); at the app launch
    4. created a sequence of requests to the app store out of which last one fails with nasty log I can't work around
    bool available = await _iap.isAvailable();
      if (!available) {
        print('=========> The store cannot be reached or accessed.');
      } else {
        Set<String> _kIds = {'farm', 'forest'};
        ProductDetailsResponse productsResponse = await _iap.queryProductDetails(_kIds);
        List<ProductDetails> products = productsResponse.productDetails;
      }      
    }
    
    1. At the moment queryProductDetails crashes every single time with the following log:
    E/AndroidRuntime( 9053): java.lang.NoSuchMethodError: No virtual method getIntroductoryPriceCycles()Ljava/lang/String; in class Lcom/android/billingclient/api/SkuDetails; or its super classes (declaration of 'com.android.billingclient.api.SkuDetails' appears in /data/app/com.my.fancy.app-6ImcBn8ELPgiO8hTXXp_3Q==/base.apk)
    E/AndroidRuntime( 9053):    at io.flutter.plugins.inapppurchase.Translator.fromSkuDetail(Translator.java:27)
    E/AndroidRuntime( 9053):    at io.flutter.plugins.inapppurchase.Translator.fromSkuDetailsList(Translator.java:49)
    E/AndroidRuntime( 9053):    at io.flutter.plugins.inapppurchase.MethodCallHandlerImpl$1.onSkuDetailsResponse(MethodCallHandlerImpl.java:185)
    E/AndroidRuntime( 9053):    at com.android.billingclient.api.zzj.run(com.android.billingclient:billing@@3.0.0:8)
    E/AndroidRuntime( 9053):    at android.os.Handler.handleCallback(Handler.java:873)
    E/AndroidRuntime( 9053):    at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime( 9053):    at android.os.Looper.loop(Looper.java:193)
    E/AndroidRuntime( 9053):    at android.app.ActivityThread.main(ActivityThread.java:6746)
    E/AndroidRuntime( 9053):    at java.lang.reflect.Method.invoke(Native Method)
    E/AndroidRuntime( 9053):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    E/AndroidRuntime( 9053):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    

    I've tried running this on multiple example projects, and it fails. Tried with both Kotlin and Java project, just to see if there is something buggy with one or the other, but no luck.

    EDIT (fixed the issue): Issue was result of a billingClient linked in build.gradle file that was causing this issue. Once I removed it from gradle file, everything started working as expected.