Потреблять в приложении биллинга

У меня есть некоторые проблемы с биллингом приложений, я хотел создать внутри приложения продукт, который можно купить несколько раз. Но Google сделал оплату в приложении таким образом, что продукт должен быть потреблен прежде, чем вы сможете купить его снова. Я попытался использовать его с помощью следующего кода:

     if (resultCode == RESULT_OK) {
            try {

                JSONObject jo = new JSONObject(purchaseData1);
                String sku = jo.getString(inappid);
                Toast.makeText(
                        ABActivity.this,
                        "Purchase Successful",
                        Toast.LENGTH_LONG).show();

                Bundle ownedItems = mservice.getPurchases(3, getPackageName(), "inapp", null);
                // Check response
                int responseCode = ownedItems.getInt("RESPONSE_CODE");
                if (responseCode != 0) {
                   throw new Exception("Error");
                }
                // Get the list of purchased items
                ArrayList<String> purchaseDataList = 
                    ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST");
                for (String purchaseData : purchaseDataList) {
                    JSONObject o = new JSONObject(purchaseData);
                    String purchaseToken = o.optString("token", o.optString("purchaseToken"));
                    // Consume purchaseToken, handling any errors
                    mservice.consumePurchase(3, getPackageName(), purchaseToken);

                    }

            } catch (JSONException e) {
                System.out.println("Failed to parse purchase data.");
                e.printStackTrace();
            } catch (RemoteException e) {
                System.out.println("Failed to parse purchase data.");
                e.printStackTrace();
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {System.out.println("Failed to parse purchase data.");
            e.printStackTrace();
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

В первый раз, когда я пытаюсь купить предмет, он работает отлично, но когда я пытаюсь купить его снова, приложение вылетает. Когда я пытаюсь использовать приложение с виртуальным устройством и регистрировать ошибку с помощью logcat, оно падает в первый раз, когда я пытаюсь купить предмет, и оно дает исключение NullPointerException, тогда как в первый раз на моем мобильном телефоне оно работает идеально, поэтому я не думаю, что NullPointerException является проблемой.

Заранее спасибо.

1 ответ

У меня та же проблема с потреблением предмета.

Вы не можете проверить биллинг в приложении на виртуальном устройстве. Это причина, почему вы получаете исключение NullPointerException.

Другие вопросы по тегам