Skip to content

Commit e3136f6

Browse files
committed
Added local inventory of ownedItems and knownItems
1 parent 13755c4 commit e3136f6

3 files changed

Lines changed: 81 additions & 4 deletions

File tree

engine/src/java/com/runrev/android/billing/amazon/AmazonBillingProvider.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public class AmazonBillingProvider implements BillingProvider
2323
private PurchaseObserver mPurchaseObserver;
2424
private Map<String,Map<String,String>> itemProps = new HashMap<String, Map<String,String>>();
2525

26+
private List<Item> knownItems = new ArrayList<Item>();
27+
private Set<String> ownedItems = new HashSet<String>();
28+
2629
public void initBilling()
2730
{
2831
mPurchasingObserver = new MyPurchasingObserver(getActivity());
@@ -128,7 +131,7 @@ public String getPurchaseProperty(String productId, String propName)
128131

129132
public String getPurchaseList()
130133
{
131-
return itemProps.keySet().toString();
134+
return ownedItems.toString();
132135
}
133136

134137
public boolean consumePurchase(String productID)
@@ -197,6 +200,27 @@ boolean addPurchaseReceiptToLocalInventory(Receipt receipt)
197200

198201
}
199202

203+
boolean loadKnownItemToLocalInventory(Item item)
204+
{
205+
boolean success = true;
206+
if (success)
207+
success = setPurchaseProperty(item.getSku(), "itemType", item.getItemType().toString());
208+
209+
if (success)
210+
success = setPurchaseProperty(item.getSku(), "price", item.getPrice());
211+
212+
if (success)
213+
success = setPurchaseProperty(item.getSku(), "description", item.getDescription());
214+
215+
if (success)
216+
success = setPurchaseProperty(item.getSku(), "title", item.getTitle());
217+
218+
if (success)
219+
success = setPurchaseProperty(item.getSku(), "smallIconUrl", item.getSmallIconUrl());
220+
221+
return success;
222+
}
223+
200224
private class MyPurchasingObserver extends BasePurchasingObserver
201225
{
202226

@@ -269,6 +293,8 @@ public void onItemDataResponse(ItemDataResponse response)
269293
for (String key : availableSkus.keySet())
270294
{
271295
Item item = availableSkus.get(key);
296+
knownItems.add(item);
297+
loadKnownItemToLocalInventory(item);
272298
Log.v(TAG, "Item details : " + item.toString());
273299
}
274300

@@ -331,6 +357,7 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse response)
331357
//mPurchaseObserver.onPurchaseStateChanged(1,0);
332358
Log.v(TAG, "Time to add receipt to local inventory...");
333359
addPurchaseReceiptToLocalInventory(receipt);
360+
ownedItems.add(receipt.getSku());
334361
mPurchaseObserver.onPurchaseStateChanged(receipt.getSku(),0);
335362
break;
336363
}
@@ -342,6 +369,7 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse response)
342369
// TODO : How to get the purchase Id
343370
// mPurchaseObserver.onPurchaseStateChanged(1,0);
344371
addPurchaseReceiptToLocalInventory(receipt);
372+
ownedItems.add(receipt.getSku());
345373
mPurchaseObserver.onPurchaseStateChanged(receipt.getSku(),0);
346374
break;
347375
}
@@ -432,6 +460,7 @@ public void onPurchaseResponse(PurchaseResponse response)
432460
// Don't use tProductId = requestIds.get(response.getRequestId()), it does not work on subscriptions because it returns the child SKU, but we need the parent SKU
433461
tProductId = receipt.getSku();
434462
Log.d(TAG, "PRODUCT ID IS : " + tProductId);
463+
ownedItems.add(receipt.getSku());
435464
addPurchaseReceiptToLocalInventory(receipt);
436465
break;
437466
default:

engine/src/java/com/runrev/android/billing/google/GoogleBillingProvider.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public class GoogleBillingProvider implements BillingProvider
2222
private PurchaseObserver mPurchaseObserver;
2323
private Map<String,String> types = new HashMap<String,String>();
2424
private Map<String,Map<String,String>> itemProps = new HashMap<String, Map<String,String>>();
25+
26+
private List<SkuDetails> knownItems = new ArrayList<SkuDetails>();
27+
private Set<String> ownedItems = new HashSet<String>();
2528

2629
/*
2730
Temp var for holding the productId, to pass it in onIabPurchaseFinished(IabResult result, Purchase purchase), in case purchase is null.
@@ -243,6 +246,8 @@ public void onQueryInventoryFinished(IabResult result, Inventory inventory)
243246
return;
244247
}
245248

249+
knownItems.add(skuDetails);
250+
loadKnownItemToLocalInventory(skuDetails);
246251
Log.d(TAG, "Details for requested product : " + skuDetails.toString());
247252
// TODO : Call productDetailsReceived
248253
}
@@ -303,7 +308,7 @@ public String getPurchaseProperty(String productId, String propName)
303308

304309
public String getPurchaseList()
305310
{
306-
return itemProps.keySet().toString();
311+
return ownedItems.toString();
307312
}
308313

309314
//some helper methods
@@ -332,10 +337,28 @@ boolean addPurchaseToLocalInventory(Purchase purchase)
332337
return success;
333338

334339
}
340+
341+
boolean loadKnownItemToLocalInventory(SkuDetails skuDetails)
342+
{
343+
boolean success = true;
344+
if (success)
345+
success = setPurchaseProperty(skuDetails.getSku(), "itemType", skuDetails.getType());
346+
347+
if (success)
348+
success = setPurchaseProperty(skuDetails.getSku(), "price", skuDetails.getPrice());
349+
350+
if (success)
351+
success = setPurchaseProperty(skuDetails.getSku(), "title", skuDetails.getTitle());
352+
353+
if (success)
354+
success = setPurchaseProperty(skuDetails.getSku(), "description", skuDetails.getDescription());
355+
356+
return success;
357+
}
335358

336359
void removePurchaseFromLocalInventory(Purchase purchase)
337360
{
338-
itemProps.remove(purchase.getSku());
361+
ownedItems.remove(purchase.getSku());
339362

340363
}
341364

@@ -396,6 +419,7 @@ public void onIabPurchaseFinished(IabResult result, Purchase purchase)
396419

397420
Log.d(TAG, "Purchase successful.");
398421
pendingPurchaseSku = "";
422+
ownedItems.add(purchase.getSku());
399423
addPurchaseToLocalInventory(purchase);
400424
offerPurchasedItems(purchase);
401425

@@ -457,6 +481,7 @@ public void onQueryInventoryFinished(IabResult result, Inventory inventory)
457481
for (Purchase p : purchaseList)
458482
{
459483
addPurchaseToLocalInventory(p);
484+
ownedItems.add(p.getSku());
460485
offerPurchasedItems(p);
461486
}
462487
}

engine/src/java/com/runrev/android/billing/samsung/SamsungBillingProvider.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public void onSucceedInitIap()
5858
public void onSucceedGetItemList(ArrayList<ItemVO> itemList)
5959
{
6060
knownItems.addAll(itemList);
61+
for (ItemVO knownItem : itemList)
62+
loadItemToLocalInventory(knownItem);
6163

6264
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd", Locale.getDefault());
6365
String today = sdf.format(new Date());
@@ -188,6 +190,26 @@ boolean loadInboxToLocalInventory(InBoxVO inboxVO)
188190

189191
}
190192

193+
boolean loadItemToLocalInventory(ItemVO itemVO)
194+
{
195+
boolean success = loadBaseToLocalInventory(itemVO);
196+
//Log.d(TAG, "Inbox Item id is : " + inboxVO.getItemId());
197+
//Log.d(TAG, "Inbox Item name is : " + inboxVO.getItemName());
198+
199+
if (success)
200+
success = setPurchaseProperty(itemVO.getItemId(), "type", itemVO.getType());
201+
202+
//TODO : check if itemType is not subscription
203+
if (success)
204+
success = setPurchaseProperty(itemVO.getItemId(), "subscriptionDurationUnit", itemVO.getSubscriptionDurationUnit());
205+
206+
if (success)
207+
success = setPurchaseProperty(itemVO.getItemId(), "subscriptionDurationMultiplier", itemVO.getSubscriptionDurationMultiplier());
208+
209+
return success;
210+
211+
}
212+
191213
/**
192214
* Start the IAP initialization process
193215
*/
@@ -465,7 +487,8 @@ public String getPurchaseProperty(String productId, String propName)
465487

466488
public String getPurchaseList()
467489
{
468-
return itemProps.keySet().toString();
490+
return ownedItems.toString();
491+
//return itemProps.keySet().toString();
469492
}
470493

471494
public boolean confirmDelivery(int purchaseId)

0 commit comments

Comments
 (0)