Files
rr3-apk/decompiled-community/sources/com/amazon/device/iap/internal/a/c.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- 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
2026-02-18 15:48:36 -08:00

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();
}
}