![](/img/trans.png)
[英]Buy same item over and over without consuming - In App purchase android
[英]Buying same item over and over - In App Purchase Android
我想一遍又一遍地購買同一物品,但是當嘗試第二次購買時,代碼給了我空指針異常。
這是代碼;
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();
}
當此代碼腳本再次運行時,pendinIntent將變為null。
我們可以問谷歌用戶是否已經購買了上述代碼
inventory.hasPurchase(sku_id);
但我想在打開屏幕時都出售相同的物品。
感謝您的幫助。
Google禁止用戶購買相同的物品。 因此,如果您這樣做,則必須告訴Google“讓我”。 這就是“消費”。
這是所有消耗的方法
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());
}
}
來自purchaseData的PurschaseToken將轉到此代碼
int responsee = iInAppBillingService.consumePurchase(3, getPackageName(), purchaseTokenString);
在您告訴Google之后,這些物品可以再次購買。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.