2016-05-05 3 views
0

Ich möchte das gleiche Element immer und immer wieder kaufen, aber Code gibt mir null Zeiger Ausnahme, wenn Sie versuchen, das zweite Mal zu kaufen.Immer und immer wieder dasselbe Produkt kaufen - In App Purchase Android

Hier ist der Code;

try { 
     Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), "ucret", "inapp", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ"); 

     PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT"); 

     startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); 

    } catch (RemoteException e) { 
     e.printStackTrace(); 
    } catch (IntentSender.SendIntentException e) { 
     e.printStackTrace(); 
    } 

Wenn dieses Code-Skript wieder pendinIntent kommt null.

können wir fragen, ob Benutzer Google bereits wie oben Code gekauft haben

inventory.hasPurchase(sku_id); 

Aber ich will gleichen Artikel verkaufen, wenn ich den Bildschirm öffnen.

Danke für Ihre Hilfe.

Antwort

1

Google verhindert, dass Benutzer dieselben Artikel kaufen. Also wenn du das tust, musst du dem Google sagen "lass mich". Und das heißt "verbrauchen".

Hier ist alles aufwändige Methode

private void consumeBilling() { 

    try { 

     Bundle ownedItems = iInAppBillingService.getPurchases(3, getPackageName(), "inapp", null); 

     int response = ownedItems.getInt("RESPONSE_CODE"); 

     if (response == 0) { 

      ArrayList<String> ownedSkus = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); 

      ArrayList<String> purchaseDataList = ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST"); 

      ArrayList<String> signatureList = ownedItems.getStringArrayList("INAPP_DATA_SIGNATURE_LIST"); 

      String continuationToken = ownedItems.getString("INAPP_CONTINUATION_TOKEN"); 

      for (int i = 0; i < purchaseDataList.size(); ++i) { 

       String purchaseData = purchaseDataList.get(i); 

       // String signature = signatureList.get(i); 

       // String sku = ownedSkus.get(i); 

       // RDALogger.info("purchaseData " + purchaseData + " signature " + signature + " sku " + sku); 

       RDALogger.info("purchaseData " + purchaseData); 

       String purchaseTokenString = new JSONObject(purchaseData).getString("purchaseToken"); 

       int responsee = iInAppBillingService.consumePurchase(3, getPackageName(), purchaseTokenString); 

       RDALogger.info("Consuming response " + responsee); 
      } 
     } 

    } catch (Exception e) { 

     e.printStackTrace(); 

     ErrorHandlers.handle(PaymentActivity.this, new HoustonWeGotAProblemException()); 
    } 
} 

PurschaseToken von purchaseData zu diesem Code gehen

int responsee = iInAppBillingService.consumePurchase(3, getPackageName(), purchaseTokenString); 

nachdem diese Sie Google gesagt, kann dieser Artikel wieder gekauft werden.

Verwandte Themen