/* Copyright (c) 2012 Google Inc.
*
* 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.appsimobile.appsii.iab;
import android.text.format.DateUtils;
import com.appsimobile.appsii.BuildConfig;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.UUID;
/**
* Represents an in-app billing purchase.
*/
public class Purchase {
public static final int PURCHASE_STATE_PURCHASED = 0;
public static final int PURCHASE_STATE_CANCELED = 1;
public static final int PURCHASE_STATE_REFUNDED = 2;
final String mItemType; // ITEM_TYPE_INAPP or ITEM_TYPE_SUBS
String mOrderId;
String mPackageName;
String mSku;
long mPurchaseTime;
int mPurchaseState;
String mDeveloperPayload;
String mToken;
String mOriginalJson;
String mSignature;
public Purchase(String itemType, String jsonPurchaseInfo, String signature)
throws JSONException {
mItemType = itemType;
mOriginalJson = jsonPurchaseInfo;
JSONObject o = new JSONObject(mOriginalJson);
mOrderId = o.optString("orderId");
mPackageName = o.optString("packageName");
mSku = o.optString("productId");
mPurchaseTime = o.optLong("purchaseTime");
mPurchaseState = o.optInt("purchaseState", PURCHASE_STATE_CANCELED);
mDeveloperPayload = o.optString("developerPayload");
mToken = o.optString("token", o.optString("purchaseToken"));
mSignature = signature;
}
Purchase(String sku, String itemType) {
this(sku, itemType, PURCHASE_STATE_PURCHASED);
}
Purchase(String sku, String itemType, int purchaseState) {
mItemType = itemType;
mOrderId = UUID.randomUUID().toString();
mPackageName = BuildConfig.APPLICATION_ID;
mSku = sku;
mPurchaseTime = System.currentTimeMillis() - DateUtils.WEEK_IN_MILLIS;
mPurchaseState = purchaseState;
mDeveloperPayload = null;
mToken = null;
mSignature = null;
}
public boolean isPurchased() {
return mPurchaseState == PURCHASE_STATE_PURCHASED;
}
public String getItemType() {
return mItemType;
}
public String getOrderId() {
return mOrderId;
}
public String getPackageName() {
return mPackageName;
}
public String getSku() {
return mSku;
}
public long getPurchaseTime() {
return mPurchaseTime;
}
public int getPurchaseState() {
return mPurchaseState;
}
public String getDeveloperPayload() {
return mDeveloperPayload;
}
public String getToken() {
return mToken;
}
public String getOriginalJson() {
return mOriginalJson;
}
public String getSignature() {
return mSignature;
}
@Override
public String toString() {
return "PurchaseInfo(type:" + mItemType + "):" + mOriginalJson;
}
}