From 2490ae0c15b3aa99ba161a3436688e25d41b0bd7 Mon Sep 17 00:00:00 2001 From: Tolriq Date: Wed, 25 Jun 2014 11:26:10 +0200 Subject: [PATCH] Generate Amazon originalJson on purchase restore --- .../AmazonAppstoreBillingService.java | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/library/src/org/onepf/oms/appstore/AmazonAppstoreBillingService.java b/library/src/org/onepf/oms/appstore/AmazonAppstoreBillingService.java index 30ae3ef8..58b0f777 100644 --- a/library/src/org/onepf/oms/appstore/AmazonAppstoreBillingService.java +++ b/library/src/org/onepf/oms/appstore/AmazonAppstoreBillingService.java @@ -201,8 +201,8 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpda switch (purchaseUpdatesResponse.getPurchaseUpdatesRequestStatus()) { case SUCCESSFUL: - SubscriptionPeriod latestSubscriptionPeriod = null; - final LinkedList currentSubscriptionPeriods = new LinkedList(); + // SubscriptionPeriod latestSubscriptionPeriod = null; + // final LinkedList currentSubscriptionPeriods = new LinkedList(); for (final Receipt receipt : purchaseUpdatesResponse.getReceipts()) { final String storeSku = receipt.getSku(); @@ -210,6 +210,7 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpda switch (receipt.getItemType()) { case ENTITLED: purchase = new Purchase(OpenIabHelper.NAME_AMAZON); + purchase.setOriginalJson(generateOriginalJson(receipt, purchaseUpdatesResponse.getUserId())); purchase.setItemType(IabHelper.ITEM_TYPE_INAPP); purchase.setSku(OpenIabHelper.getSku(OpenIabHelper.NAME_AMAZON, storeSku)); inventory.addPurchase(purchase); @@ -219,6 +220,7 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpda final SubscriptionPeriod subscriptionPeriod = receipt.getSubscriptionPeriod(); if (subscriptionPeriod.getEndDate() == null) { purchase = new Purchase(OpenIabHelper.NAME_AMAZON); + purchase.setOriginalJson(generateOriginalJson(receipt, purchaseUpdatesResponse.getUserId())); purchase.setItemType(IabHelper.ITEM_TYPE_SUBS); purchase.setSku(OpenIabHelper.getSku(OpenIabHelper.NAME_AMAZON, storeSku)); inventory.addPurchase(purchase); @@ -267,7 +269,6 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpda return; } inventoryLatch.countDown(); - return; } @Override @@ -369,7 +370,9 @@ public void onPurchaseResponse(final PurchaseResponse purchaseResponse) { } * * @param purchaseResponse + * The purchase response * @return + * The generated JSON as String */ private String generateOriginalJson(PurchaseResponse purchaseResponse) { JSONObject json = new JSONObject(); @@ -388,6 +391,40 @@ private String generateOriginalJson(PurchaseResponse purchaseResponse) { return json.toString(); } + /** + * Converts receipt to json for transfer with purchase object + * + *
+     {
+     "productId"         : "receipt.getSku"
+     "purchaseStatus"    : "SUCCESSFUL"
+     "userId"            : "userId" // can be null
+     "itemType"          : "receipt.getItemType().name()" // if non-null
+     "purchaseToken"     : "receipt.purchaseToken"
+     } 
+ * + * @param receipt + * The receipt + * @param userId + * The userId + * @return + * The generated JSON as String + */ + private String generateOriginalJson(Receipt receipt, String userId) { + JSONObject json = new JSONObject(); + try { + json.put(JSON_KEY_PRODUCT_ID, receipt.getSku()); + json.put(JSON_KEY_PURCHASE_STATUS, PurchaseResponse.PurchaseRequestStatus.SUCCESSFUL.name()); + json.put(JSON_KEY_USER_ID, userId); + if (receipt.getItemType() != null) json.put(JSON_KEY_RECEIPT_ITEM_TYPE, receipt.getItemType().name()); + json.put(JSON_KEY_RECEIPT_PURCHASE_TOKEN, receipt.getPurchaseToken()); + if (isDebugLog()) Log.d(TAG, "generateOriginalJson(): JSON\n" + json.toString()); + } catch (JSONException e) { + Log.e(TAG, "generateOriginalJson() failed to generate JSON", e); + } + return json.toString(); + } + @Override public void consume(Purchase itemInfo) { // Nothing to do here