From 8d570ceafd7060878c26da68c4f62d67f7d0d652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20Kwiecie=C5=84?= Date: Fri, 6 Feb 2015 10:39:49 +0100 Subject: [PATCH] added PurchaseInfo ResponseData object and parser --- .../anjlab/android/iab/v3/PurchaseInfo.java | 68 +++++++++++++++++-- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/library/src/com/anjlab/android/iab/v3/PurchaseInfo.java b/library/src/com/anjlab/android/iab/v3/PurchaseInfo.java index 04a14e76..39b948fc 100644 --- a/library/src/com/anjlab/android/iab/v3/PurchaseInfo.java +++ b/library/src/com/anjlab/android/iab/v3/PurchaseInfo.java @@ -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 here - * */ 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; + } + } }