- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
517 lines
23 KiB
Java
517 lines
23 KiB
Java
package com.amazon.device.iap.internal.a;
|
|
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.util.Log;
|
|
import com.amazon.device.iap.PurchasingListener;
|
|
import com.amazon.device.iap.PurchasingService;
|
|
import com.amazon.device.iap.internal.model.ProductBuilder;
|
|
import com.amazon.device.iap.internal.model.ProductDataResponseBuilder;
|
|
import com.amazon.device.iap.internal.model.PurchaseResponseBuilder;
|
|
import com.amazon.device.iap.internal.model.PurchaseUpdatesResponseBuilder;
|
|
import com.amazon.device.iap.internal.model.ReceiptBuilder;
|
|
import com.amazon.device.iap.internal.model.UserDataBuilder;
|
|
import com.amazon.device.iap.internal.model.UserDataResponseBuilder;
|
|
import com.amazon.device.iap.internal.util.e;
|
|
import com.amazon.device.iap.model.FulfillmentResult;
|
|
import com.amazon.device.iap.model.Product;
|
|
import com.amazon.device.iap.model.ProductDataResponse;
|
|
import com.amazon.device.iap.model.ProductType;
|
|
import com.amazon.device.iap.model.PurchaseResponse;
|
|
import com.amazon.device.iap.model.PurchaseUpdatesResponse;
|
|
import com.amazon.device.iap.model.Receipt;
|
|
import com.amazon.device.iap.model.RequestId;
|
|
import com.amazon.device.iap.model.UserData;
|
|
import com.amazon.device.iap.model.UserDataResponse;
|
|
import com.applovin.sdk.AppLovinEventParameters;
|
|
import com.google.android.gms.drive.DriveFile;
|
|
import com.ironsource.cr;
|
|
import com.unity3d.ads.core.domain.HandleInvocationsFromAdViewer;
|
|
import java.math.BigDecimal;
|
|
import java.text.DateFormat;
|
|
import java.text.ParseException;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Currency;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedHashSet;
|
|
import java.util.Set;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class c implements com.amazon.device.iap.internal.c {
|
|
private static final String a = "c";
|
|
|
|
@Override // com.amazon.device.iap.internal.c
|
|
public void a(RequestId requestId) {
|
|
e.a(a, "sendGetUserDataRequest");
|
|
a(requestId.toString(), false, false);
|
|
}
|
|
|
|
private void a(String str, boolean z, boolean z2) {
|
|
try {
|
|
Context b = com.amazon.device.iap.internal.d.d().b();
|
|
Bundle bundle = new Bundle();
|
|
JSONObject jSONObject = new JSONObject();
|
|
jSONObject.put("requestId", str);
|
|
jSONObject.put(HandleInvocationsFromAdViewer.KEY_PACKAGE_NAME, b.getPackageName());
|
|
jSONObject.put("sdkVersion", PurchasingService.SDK_VERSION);
|
|
jSONObject.put("isPurchaseUpdates", z);
|
|
jSONObject.put("reset", z2);
|
|
bundle.putString("userInput", jSONObject.toString());
|
|
Intent a2 = a("com.amazon.testclient.iap.appUserId");
|
|
a2.addFlags(DriveFile.MODE_READ_ONLY);
|
|
a2.putExtras(bundle);
|
|
b.startService(a2);
|
|
} catch (JSONException unused) {
|
|
e.b(a, "Error in sendGetUserDataRequest.");
|
|
}
|
|
}
|
|
|
|
@Override // com.amazon.device.iap.internal.c
|
|
public void a(RequestId requestId, String str) {
|
|
e.a(a, "sendPurchaseRequest");
|
|
try {
|
|
Context b = com.amazon.device.iap.internal.d.d().b();
|
|
Bundle bundle = new Bundle();
|
|
JSONObject jSONObject = new JSONObject();
|
|
jSONObject.put(AppLovinEventParameters.PRODUCT_IDENTIFIER, str);
|
|
jSONObject.put("requestId", requestId.toString());
|
|
jSONObject.put(HandleInvocationsFromAdViewer.KEY_PACKAGE_NAME, b.getPackageName());
|
|
jSONObject.put("sdkVersion", PurchasingService.SDK_VERSION);
|
|
bundle.putString("purchaseInput", jSONObject.toString());
|
|
Intent a2 = a("com.amazon.testclient.iap.purchase");
|
|
a2.addFlags(DriveFile.MODE_READ_ONLY);
|
|
a2.putExtras(bundle);
|
|
b.startService(a2);
|
|
} catch (JSONException unused) {
|
|
e.b(a, "Error in sendPurchaseRequest.");
|
|
}
|
|
}
|
|
|
|
@Override // com.amazon.device.iap.internal.c
|
|
public void a(RequestId requestId, Set<String> set) {
|
|
e.a(a, "sendItemDataRequest");
|
|
try {
|
|
Context b = com.amazon.device.iap.internal.d.d().b();
|
|
Bundle bundle = new Bundle();
|
|
JSONObject jSONObject = new JSONObject();
|
|
JSONArray jSONArray = new JSONArray((Collection) set);
|
|
jSONObject.put("requestId", requestId.toString());
|
|
jSONObject.put(HandleInvocationsFromAdViewer.KEY_PACKAGE_NAME, b.getPackageName());
|
|
jSONObject.put("skus", jSONArray);
|
|
jSONObject.put("sdkVersion", PurchasingService.SDK_VERSION);
|
|
bundle.putString("itemDataInput", jSONObject.toString());
|
|
Intent a2 = a("com.amazon.testclient.iap.itemData");
|
|
a2.addFlags(DriveFile.MODE_READ_ONLY);
|
|
a2.putExtras(bundle);
|
|
b.startService(a2);
|
|
} catch (JSONException unused) {
|
|
e.b(a, "Error in sendItemDataRequest.");
|
|
}
|
|
}
|
|
|
|
@Override // com.amazon.device.iap.internal.c
|
|
public void a(RequestId requestId, boolean z) {
|
|
if (requestId == null) {
|
|
requestId = new RequestId();
|
|
}
|
|
e.a(a, "sendPurchaseUpdatesRequest/sendGetUserData first:" + requestId);
|
|
a(requestId.toString(), true, z);
|
|
}
|
|
|
|
@Override // com.amazon.device.iap.internal.c
|
|
public void a(RequestId requestId, String str, FulfillmentResult fulfillmentResult) {
|
|
e.a(a, "sendNotifyPurchaseFulfilled");
|
|
try {
|
|
Context b = com.amazon.device.iap.internal.d.d().b();
|
|
Bundle bundle = new Bundle();
|
|
JSONObject jSONObject = new JSONObject();
|
|
jSONObject.put("requestId", requestId.toString());
|
|
jSONObject.put(HandleInvocationsFromAdViewer.KEY_PACKAGE_NAME, b.getPackageName());
|
|
jSONObject.put("receiptId", str);
|
|
jSONObject.put("fulfillmentResult", fulfillmentResult);
|
|
jSONObject.put("sdkVersion", PurchasingService.SDK_VERSION);
|
|
bundle.putString("purchaseFulfilledInput", jSONObject.toString());
|
|
Intent a2 = a("com.amazon.testclient.iap.purchaseFulfilled");
|
|
a2.addFlags(DriveFile.MODE_READ_ONLY);
|
|
a2.putExtras(bundle);
|
|
b.startService(a2);
|
|
} catch (JSONException unused) {
|
|
e.b(a, "Error in sendNotifyPurchaseFulfilled.");
|
|
}
|
|
}
|
|
|
|
@Override // com.amazon.device.iap.internal.c
|
|
public void a(Context context, Intent intent) {
|
|
e.a(a, "handleResponse");
|
|
intent.setComponent(new ComponentName("com.amazon.sdktestclient", "com.amazon.sdktestclient.command.CommandBroker"));
|
|
try {
|
|
String string = intent.getExtras().getString("responseType");
|
|
if (string.equalsIgnoreCase("com.amazon.testclient.iap.purchase")) {
|
|
g(intent);
|
|
} else if (string.equalsIgnoreCase("com.amazon.testclient.iap.appUserId")) {
|
|
e(intent);
|
|
} else if (string.equalsIgnoreCase("com.amazon.testclient.iap.itemData")) {
|
|
c(intent);
|
|
} else if (string.equalsIgnoreCase("com.amazon.testclient.iap.purchaseUpdates")) {
|
|
a(intent);
|
|
}
|
|
} catch (Exception e) {
|
|
Log.e(a, "Error handling response.", e);
|
|
}
|
|
}
|
|
|
|
private Intent a(String str) {
|
|
Intent intent = new Intent(str);
|
|
intent.setComponent(new ComponentName("com.amazon.sdktestclient", "com.amazon.sdktestclient.command.CommandBroker"));
|
|
return intent;
|
|
}
|
|
|
|
public void a(final Object obj) {
|
|
com.amazon.device.iap.internal.util.d.a(obj, cr.n);
|
|
Context b = com.amazon.device.iap.internal.d.d().b();
|
|
final PurchasingListener a2 = com.amazon.device.iap.internal.d.d().a();
|
|
if (b == null || a2 == null) {
|
|
e.a(a, "PurchasingListener is not set. Dropping response: " + obj);
|
|
return;
|
|
}
|
|
new Handler(b.getMainLooper()).post(new Runnable() { // from class: com.amazon.device.iap.internal.a.c.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
try {
|
|
Object obj2 = obj;
|
|
if (obj2 instanceof ProductDataResponse) {
|
|
a2.onProductDataResponse((ProductDataResponse) obj2);
|
|
} else if (obj2 instanceof UserDataResponse) {
|
|
a2.onUserDataResponse((UserDataResponse) obj2);
|
|
} else if (obj2 instanceof PurchaseUpdatesResponse) {
|
|
a2.onPurchaseUpdatesResponse((PurchaseUpdatesResponse) obj2);
|
|
} else if (obj2 instanceof PurchaseResponse) {
|
|
a2.onPurchaseResponse((PurchaseResponse) obj2);
|
|
} else {
|
|
e.b(c.a, "Unknown response type:" + obj.getClass().getName());
|
|
}
|
|
} catch (Exception e) {
|
|
e.b(c.a, "Error in sendResponse: " + e);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private void a(Intent intent) throws JSONException {
|
|
PurchaseUpdatesResponse b = b(intent);
|
|
if (b.getRequestStatus() == PurchaseUpdatesResponse.RequestStatus.SUCCESSFUL) {
|
|
String optString = new JSONObject(intent.getStringExtra("purchaseUpdatesOutput")).optString("offset");
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("Offset for PurchaseUpdatesResponse:");
|
|
sb.append(optString);
|
|
com.amazon.device.iap.internal.util.b.a(b.getUserData().getUserId(), optString);
|
|
}
|
|
a(b);
|
|
}
|
|
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
/* JADX WARN: Type inference failed for: r4v3 */
|
|
private PurchaseUpdatesResponse b(Intent intent) {
|
|
UserData userData;
|
|
ArrayList arrayList;
|
|
Exception e;
|
|
RequestId requestId;
|
|
boolean z;
|
|
boolean z2;
|
|
JSONObject jSONObject;
|
|
PurchaseUpdatesResponse.RequestStatus requestStatus = PurchaseUpdatesResponse.RequestStatus.FAILED;
|
|
ArrayList arrayList2 = null;
|
|
int i = 0;
|
|
try {
|
|
jSONObject = new JSONObject(intent.getStringExtra("purchaseUpdatesOutput"));
|
|
requestId = RequestId.fromString(jSONObject.optString("requestId"));
|
|
try {
|
|
requestStatus = PurchaseUpdatesResponse.RequestStatus.valueOf(jSONObject.optString("status"));
|
|
z2 = jSONObject.optBoolean("isMore");
|
|
try {
|
|
userData = new UserDataBuilder().setUserId(jSONObject.optString("userId")).setMarketplace(jSONObject.optString("marketplace")).build();
|
|
} catch (Exception e2) {
|
|
e = e2;
|
|
userData = null;
|
|
arrayList = null;
|
|
}
|
|
} catch (Exception e3) {
|
|
userData = null;
|
|
arrayList = null;
|
|
e = e3;
|
|
}
|
|
try {
|
|
z = z2;
|
|
} catch (Exception e4) {
|
|
e = e4;
|
|
arrayList = null;
|
|
e = e;
|
|
i = z2 ? 1 : 0;
|
|
Log.e(a, "Error parsing purchase updates output", e);
|
|
z2 = i;
|
|
arrayList2 = arrayList;
|
|
z = z2;
|
|
return new PurchaseUpdatesResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).setReceipts(arrayList2).setHasMore(z).build();
|
|
}
|
|
} catch (Exception e5) {
|
|
userData = null;
|
|
arrayList = null;
|
|
e = e5;
|
|
requestId = null;
|
|
}
|
|
if (requestStatus == PurchaseUpdatesResponse.RequestStatus.SUCCESSFUL) {
|
|
arrayList = new ArrayList();
|
|
try {
|
|
JSONArray optJSONArray = jSONObject.optJSONArray("receipts");
|
|
if (optJSONArray != null) {
|
|
while (i < optJSONArray.length()) {
|
|
JSONObject optJSONObject = optJSONArray.optJSONObject(i);
|
|
try {
|
|
arrayList.add(a(optJSONObject));
|
|
} catch (Exception unused) {
|
|
Log.e(a, "Failed to parse receipt from json:" + optJSONObject);
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
} catch (Exception e6) {
|
|
e = e6;
|
|
i = z2 ? 1 : 0;
|
|
Log.e(a, "Error parsing purchase updates output", e);
|
|
z2 = i;
|
|
arrayList2 = arrayList;
|
|
z = z2;
|
|
return new PurchaseUpdatesResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).setReceipts(arrayList2).setHasMore(z).build();
|
|
}
|
|
arrayList2 = arrayList;
|
|
z = z2;
|
|
}
|
|
return new PurchaseUpdatesResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).setReceipts(arrayList2).setHasMore(z).build();
|
|
}
|
|
|
|
private void c(Intent intent) {
|
|
a(d(intent));
|
|
}
|
|
|
|
private ProductDataResponse d(Intent intent) {
|
|
LinkedHashSet linkedHashSet;
|
|
HashMap hashMap;
|
|
Exception e;
|
|
RequestId requestId;
|
|
ProductDataResponse.RequestStatus requestStatus;
|
|
ProductDataResponse.RequestStatus requestStatus2 = ProductDataResponse.RequestStatus.FAILED;
|
|
LinkedHashSet linkedHashSet2 = null;
|
|
try {
|
|
JSONObject jSONObject = new JSONObject(intent.getStringExtra("itemDataOutput"));
|
|
requestId = RequestId.fromString(jSONObject.optString("requestId"));
|
|
try {
|
|
requestStatus = ProductDataResponse.RequestStatus.valueOf(jSONObject.optString("status"));
|
|
if (requestStatus != requestStatus2) {
|
|
try {
|
|
LinkedHashSet linkedHashSet3 = new LinkedHashSet();
|
|
try {
|
|
hashMap = new HashMap();
|
|
try {
|
|
JSONArray optJSONArray = jSONObject.optJSONArray("unavailableSkus");
|
|
if (optJSONArray != null) {
|
|
for (int i = 0; i < optJSONArray.length(); i++) {
|
|
linkedHashSet3.add(optJSONArray.getString(i));
|
|
}
|
|
}
|
|
JSONObject optJSONObject = jSONObject.optJSONObject("items");
|
|
if (optJSONObject != null) {
|
|
Iterator<String> keys = optJSONObject.keys();
|
|
while (keys.hasNext()) {
|
|
String next = keys.next();
|
|
hashMap.put(next, a(next, optJSONObject.optJSONObject(next)));
|
|
}
|
|
}
|
|
linkedHashSet2 = linkedHashSet3;
|
|
} catch (Exception e2) {
|
|
e = e2;
|
|
linkedHashSet = linkedHashSet3;
|
|
requestStatus2 = requestStatus;
|
|
Log.e(a, "Error parsing item data output", e);
|
|
requestStatus = requestStatus2;
|
|
linkedHashSet2 = linkedHashSet;
|
|
return new ProductDataResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setProductData(hashMap).setUnavailableSkus(linkedHashSet2).build();
|
|
}
|
|
} catch (Exception e3) {
|
|
hashMap = null;
|
|
e = e3;
|
|
}
|
|
} catch (Exception e4) {
|
|
linkedHashSet = null;
|
|
hashMap = null;
|
|
e = e4;
|
|
}
|
|
} else {
|
|
hashMap = null;
|
|
}
|
|
} catch (Exception e5) {
|
|
hashMap = null;
|
|
e = e5;
|
|
linkedHashSet = null;
|
|
}
|
|
} catch (Exception e6) {
|
|
linkedHashSet = null;
|
|
hashMap = null;
|
|
e = e6;
|
|
requestId = null;
|
|
}
|
|
return new ProductDataResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setProductData(hashMap).setUnavailableSkus(linkedHashSet2).build();
|
|
}
|
|
|
|
private Product a(String str, JSONObject jSONObject) throws JSONException {
|
|
ProductType valueOf = ProductType.valueOf(jSONObject.optString("itemType"));
|
|
JSONObject jSONObject2 = jSONObject.getJSONObject("priceJson");
|
|
Currency currency = Currency.getInstance(jSONObject2.optString("currency"));
|
|
String str2 = currency.getSymbol() + new BigDecimal(jSONObject2.optString("value"));
|
|
return new ProductBuilder().setSku(str).setProductType(valueOf).setDescription(jSONObject.optString("description")).setPrice(str2).setSmallIconUrl(jSONObject.optString("smallIconUrl")).setTitle(jSONObject.optString("title")).build();
|
|
}
|
|
|
|
private void e(Intent intent) {
|
|
JSONObject jSONObject;
|
|
UserDataResponse f = f(intent);
|
|
RequestId requestId = f.getRequestId();
|
|
String stringExtra = intent.getStringExtra("userInput");
|
|
try {
|
|
jSONObject = new JSONObject(stringExtra);
|
|
} catch (JSONException e) {
|
|
Log.e(a, "Unable to parse request data: " + stringExtra, e);
|
|
jSONObject = null;
|
|
}
|
|
if (requestId == null || jSONObject == null) {
|
|
a(f);
|
|
return;
|
|
}
|
|
if (!jSONObject.optBoolean("isPurchaseUpdates", false)) {
|
|
a(f);
|
|
return;
|
|
}
|
|
if (f.getUserData() == null || com.amazon.device.iap.internal.util.d.a(f.getUserData().getUserId())) {
|
|
Log.e(a, "No Userid found in userDataResponse" + f);
|
|
a(new PurchaseUpdatesResponseBuilder().setRequestId(requestId).setRequestStatus(PurchaseUpdatesResponse.RequestStatus.FAILED).setUserData(f.getUserData()).setReceipts(new ArrayList()).setHasMore(false).build());
|
|
return;
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("sendGetPurchaseUpdates with user id");
|
|
sb.append(f.getUserData().getUserId());
|
|
a(requestId.toString(), f.getUserData().getUserId(), jSONObject.optBoolean("reset", true));
|
|
}
|
|
|
|
private void a(String str, String str2, boolean z) {
|
|
try {
|
|
Context b = com.amazon.device.iap.internal.d.d().b();
|
|
String a2 = com.amazon.device.iap.internal.util.b.a(str2);
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("send PurchaseUpdates with user id:");
|
|
sb.append(str2);
|
|
sb.append(";reset flag:");
|
|
sb.append(z);
|
|
sb.append(", local cursor:");
|
|
sb.append(a2);
|
|
sb.append(", parsed from old requestId:");
|
|
sb.append(str);
|
|
Bundle bundle = new Bundle();
|
|
JSONObject jSONObject = new JSONObject();
|
|
jSONObject.put("requestId", str.toString());
|
|
if (z) {
|
|
a2 = null;
|
|
}
|
|
jSONObject.put("offset", a2);
|
|
jSONObject.put("sdkVersion", PurchasingService.SDK_VERSION);
|
|
jSONObject.put(HandleInvocationsFromAdViewer.KEY_PACKAGE_NAME, b.getPackageName());
|
|
bundle.putString("purchaseUpdatesInput", jSONObject.toString());
|
|
Intent a3 = a("com.amazon.testclient.iap.purchaseUpdates");
|
|
a3.addFlags(DriveFile.MODE_READ_ONLY);
|
|
a3.putExtras(bundle);
|
|
b.startService(a3);
|
|
} catch (JSONException unused) {
|
|
e.b(a, "Error in sendPurchaseUpdatesRequest.");
|
|
}
|
|
}
|
|
|
|
private UserDataResponse f(Intent intent) {
|
|
RequestId requestId;
|
|
JSONObject jSONObject;
|
|
UserDataResponse.RequestStatus requestStatus = UserDataResponse.RequestStatus.FAILED;
|
|
UserData userData = null;
|
|
try {
|
|
jSONObject = new JSONObject(intent.getStringExtra("userOutput"));
|
|
requestId = RequestId.fromString(jSONObject.optString("requestId"));
|
|
} catch (Exception e) {
|
|
e = e;
|
|
requestId = null;
|
|
}
|
|
try {
|
|
requestStatus = UserDataResponse.RequestStatus.valueOf(jSONObject.optString("status"));
|
|
if (requestStatus == UserDataResponse.RequestStatus.SUCCESSFUL) {
|
|
userData = new UserDataBuilder().setUserId(jSONObject.optString("userId")).setMarketplace(jSONObject.optString("marketplace")).build();
|
|
}
|
|
} catch (Exception e2) {
|
|
e = e2;
|
|
Log.e(a, "Error parsing userid output", e);
|
|
return new UserDataResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).build();
|
|
}
|
|
return new UserDataResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).build();
|
|
}
|
|
|
|
private void g(Intent intent) {
|
|
a(h(intent));
|
|
}
|
|
|
|
private PurchaseResponse h(Intent intent) {
|
|
RequestId requestId;
|
|
UserData userData;
|
|
PurchaseResponse.RequestStatus requestStatus = PurchaseResponse.RequestStatus.FAILED;
|
|
Receipt receipt = null;
|
|
try {
|
|
JSONObject jSONObject = new JSONObject(intent.getStringExtra("purchaseOutput"));
|
|
requestId = RequestId.fromString(jSONObject.optString("requestId"));
|
|
try {
|
|
userData = new UserDataBuilder().setUserId(jSONObject.optString("userId")).setMarketplace(jSONObject.optString("marketplace")).build();
|
|
} catch (Exception e) {
|
|
e = e;
|
|
userData = null;
|
|
}
|
|
try {
|
|
requestStatus = PurchaseResponse.RequestStatus.safeValueOf(jSONObject.optString("purchaseStatus"));
|
|
JSONObject optJSONObject = jSONObject.optJSONObject("receipt");
|
|
if (optJSONObject != null) {
|
|
receipt = a(optJSONObject);
|
|
}
|
|
} catch (Exception e2) {
|
|
e = e2;
|
|
Log.e(a, "Error parsing purchase output", e);
|
|
return new PurchaseResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).setReceipt(receipt).build();
|
|
}
|
|
} catch (Exception e3) {
|
|
e = e3;
|
|
requestId = null;
|
|
userData = null;
|
|
}
|
|
return new PurchaseResponseBuilder().setRequestId(requestId).setRequestStatus(requestStatus).setUserData(userData).setReceipt(receipt).build();
|
|
}
|
|
|
|
private Receipt a(JSONObject jSONObject) throws ParseException {
|
|
String optString = jSONObject.optString("receiptId");
|
|
String optString2 = jSONObject.optString(AppLovinEventParameters.PRODUCT_IDENTIFIER);
|
|
ProductType valueOf = ProductType.valueOf(jSONObject.optString("itemType"));
|
|
String optString3 = jSONObject.optString("purchaseDate");
|
|
DateFormat dateFormat = b.a;
|
|
Date parse = dateFormat.parse(optString3);
|
|
String optString4 = jSONObject.optString("cancelDate");
|
|
return new ReceiptBuilder().setReceiptId(optString).setSku(optString2).setProductType(valueOf).setPurchaseDate(parse).setCancelDate((optString4 == null || optString4.length() == 0) ? null : dateFormat.parse(optString4)).build();
|
|
}
|
|
}
|