Skip to content
This repository has been archived by the owner on Apr 28, 2022. It is now read-only.

Generate Amazon originalJson on purchase restore #243

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -201,15 +201,16 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpda

switch (purchaseUpdatesResponse.getPurchaseUpdatesRequestStatus()) {
case SUCCESSFUL:
SubscriptionPeriod latestSubscriptionPeriod = null;
final LinkedList<SubscriptionPeriod> currentSubscriptionPeriods = new LinkedList<SubscriptionPeriod>();
// SubscriptionPeriod latestSubscriptionPeriod = null;
// final LinkedList<SubscriptionPeriod> currentSubscriptionPeriods = new LinkedList<SubscriptionPeriod>();
for (final Receipt receipt : purchaseUpdatesResponse.getReceipts()) {

final String storeSku = receipt.getSku();
Purchase purchase;
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);
Expand All @@ -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);
Expand Down Expand Up @@ -267,7 +269,6 @@ public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpda
return;
}
inventoryLatch.countDown();
return;
}

@Override
Expand Down Expand Up @@ -369,7 +370,9 @@ public void onPurchaseResponse(final PurchaseResponse purchaseResponse) {
} </pre>
*
* @param purchaseResponse
* The purchase response
* @return
* The generated JSON as String
*/
private String generateOriginalJson(PurchaseResponse purchaseResponse) {
JSONObject json = new JSONObject();
Expand All @@ -388,6 +391,40 @@ private String generateOriginalJson(PurchaseResponse purchaseResponse) {
return json.toString();
}

/**
* Converts receipt to json for transfer with purchase object
*
* <pre>
{
"productId" : "receipt.getSku"
"purchaseStatus" : "SUCCESSFUL"
"userId" : "userId" // can be null
"itemType" : "receipt.getItemType().name()" // if non-null
"purchaseToken" : "receipt.purchaseToken"
} </pre>
*
* @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
Expand Down