/** * Copyright 2014 AnjLab and Unic8 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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 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 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; } } 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; } } }