Skip to content

Commit

Permalink
Merge pull request #63 from jkwiecien/purchase-info-data
Browse files Browse the repository at this point in the history
added PurchaseInfo ResponseData object and parser
  • Loading branch information
serggl committed Feb 8, 2015
2 parents 9b5b694 + 8d570ce commit 4e2fcac
Showing 1 changed file with 61 additions and 7 deletions.
68 changes: 61 additions & 7 deletions library/src/com/anjlab/android/iab/v3/PurchaseInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,75 @@

package com.anjlab.android.iab.v3;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.Date;

/**
* With this PurchaseInfo a developer is able verify
* a purchase from the google play store on his own
* server. An example implementation of how to verify
* a purchase you can find <a href="https://github.com/mgoldsborough/google-play-in-app-billing-verification/blob/master/library/GooglePlay/InAppBilling/GooglePlayResponseValidator.php#L64">here</a>
*
*/
public class PurchaseInfo {

public final String responseData;
public enum PurchaseState {
PurchasedSuccessfully, Canceled, Refunded, SubscriptionExpired;
}

public final String responseData;
public final String signature;

PurchaseInfo(String responseData, String signature) {
this.responseData = responseData;
this.signature = signature;
}

public class ResponseData {

public String orderId;
public String packageName;
public String productId;
public Date purchaseTime;
public PurchaseState purchaseState;
public String developerPayload;
public String purchaseToken;
public boolean autoRenewing;
}

public final String signature;
public static PurchaseState getPurchaseState(int state) {
switch (state) {
case 0:
return PurchaseState.PurchasedSuccessfully;
case 1:
return PurchaseState.Canceled;
case 2:
return PurchaseState.Refunded;
case 3:
return PurchaseState.SubscriptionExpired;
default:
return PurchaseState.Canceled;
}
}

PurchaseInfo(String responseData, String signature) {
this.responseData = responseData;
this.signature = signature;
}
public ResponseData parseResponseData() {
try {
JSONObject json = new JSONObject(responseData);
ResponseData data = new ResponseData();
data.orderId = json.optString("orderId");
data.packageName = json.optString("packageName");
data.productId = json.optString("productId");
long purchaseTimeMillis = json.optLong("purchaseTime", 0);
data.purchaseTime = purchaseTimeMillis != 0 ? new Date(purchaseTimeMillis) : null;
data.purchaseState = getPurchaseState(json.optInt("purchaseState", 1));
data.developerPayload = json.optString("developerPayload");
data.purchaseToken = json.getString("purchaseToken");
data.autoRenewing = json.optBoolean("autoRenewing");
return data;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
}

0 comments on commit 4e2fcac

Please sign in to comment.