Search code examples
androidin-app-purchasein-app-billing

Google Play store has stopped


I have in app purchase functionality in my app using google play store. I updated my play version to 11.0.1 from 9.8.0. After updating while trying to purchase a product in staging I am getting the popup saying google play store has stopped. But it's working fine in the production. I am a bit confuse is this crash happening because of the play service updation.

I am getting the below crash:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.firstrun.prototyze, PID: 10412
                                                                        Theme: themes:{default=overlay:system, iconPack:system, fontPkg:system, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system}
                                                                        java.lang.NullPointerException: Attempt to invoke interface method 'android.os.Bundle com.android.vending.billing.IInAppBillingService.getBuyIntent(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference
                                                                            at com.android.mobiefit.sdk.manager.PurchaseManager.purchase(PurchaseManager.java:123)
                                                                            at com.firstrun.prototyze.ui.selectprogram.ProgramPurchaseDetailActivity$8.onRequestSuccess(ProgramPurchaseDetailActivity.java:379)
                                                                            at com.android.mobiefit.sdk.manager.TransactionManager.lambda$transactionEvent$0(TransactionManager.java:46)
                                                                            at com.android.mobiefit.sdk.manager.TransactionManager$$Lambda$1.accept(Unknown Source)
                                                                            at io.reactivex.internal.observers.ConsumerSingleObserver.onSuccess(ConsumerSingleObserver.java:59)
                                                                            at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81)
                                                                            at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
                                                                            at android.os.Handler.handleCallback(Handler.java:739)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:148)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5461)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

and here is my purchase manager:

//Last parameter - RUN=false, BODY=true
    public boolean purchase(String productShortcode, String sku, Activity activityObj, boolean subscription) throws RemoteException, IntentSender.SendIntentException {
        Log.d(TAG, "Start Purchase");
        String type = "inapp";
        if(subscription)    {
            type = "subs";
        }
        Bundle buyIntentBundle = mService.getBuyIntent(3, activityObj.getPackageName(),
                sku, type, productShortcode);
        for(String key : buyIntentBundle.keySet())  {
            Log.d("Purchase", key +" :: " + buyIntentBundle.get(key));
        }
        if(buyIntentBundle.getInt("RESPONSE_CODE", 0) == 7)    {
            Log.d(TAG, "Item is already purchased, consume and try again");
            return false;
        }
        PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
        activityObj.startIntentSenderForResult(pendingIntent.getIntentSender(),
                1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
                Integer.valueOf(0));
        return true;
    }

Can someone tell me what is the issue?


Solution

  • this is google play store version bug no need to worry about that.
    just test in app purchase with older google play store version it will work :)

    for more details refer this question

    EDIT : Aug 11th 2017
    Now in new google play store version 8.0.73.R-all [0] [PR] 162689464 google fix this crash issue and I have successfully tested it on my devices so now you don't face this problem anymore. :)