Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-55861

Qt Purchasing (Android): Crash when testing IAP purchases due to missing field "orderId"

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • P2: Important
    • None
    • 5.7.0, 5.8.0 Alpha
    • Purchasing
    • None
    • Android

    Description

      When purchasing an item using a test account then the following Java exception occurs:

      W System.err: org.json.JSONException: No value for orderId
      W System.err: 	at org.json.JSONObject.get(JSONObject.java:389)
      W System.err: 	at org.json.JSONObject.getString(JSONObject.java:550)
      W System.err: 	at org.qtproject.qt5.android.purchasing.QtInAppPurchase.handleActivityResult(QtInAppPurchase.java:359)
      W System.err: 	at org.qtproject.qt5.android.QtNative.onActivityResult(Native Method)
      W System.err: 	at org.qtproject.qt5.android.QtActivityDelegate.onActivityResult(QtActivityDelegate.java:1016)
      W System.err: 	at java.lang.reflect.Method.invoke(Native Method)
      W System.err: 	at org.qtproject.qt5.android.bindings.QtApplication.invokeDelegateMethod(QtApplication.java:156)
      W System.err: 	at org.qtproject.qt5.android.bindings.QtActivity.onActivityResult(QtActivity.java:172)
      W System.err: 	at android.app.Activity.dispatchActivityResult(Activity.java:6456)
      W System.err: 	at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
      W System.err: 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
      W System.err: 	at android.app.ActivityThread.-wrap16(ActivityThread.java)
      W System.err: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
      W System.err: 	at android.os.Handler.dispatchMessage(Handler.java:102)
      W System.err: 	at android.os.Looper.loop(Looper.java:148)
      W System.err: 	at android.app.ActivityThread.main(ActivityThread.java:5422)
      W System.err: 	at java.lang.reflect.Method.invoke(Native Method)
      W System.err: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      W System.err: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
      

      The problem is that the orderId can be unset in testing mode:
      orderId = jo.getString("orderId"); //QtInAppPurchase.java

      Fix:

      // 2 times:
      if (jo.has("orderId")) {
      	orderId = jo.getString("orderId");
      }
      
      // Also in method queryPurchasedProducts()
      

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              esabraha Eskil Abrahamsen Blomfeldt
              DanielSt Peter Staab
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes