悦享送 v3.5.1版本的 MD5 值为:111dc8a16f422da8b2f1cf208abae9ea
以下内容为反编译后的 O.java 源代码,内容仅作参考
package io.card.payment;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import io.netty.handler.codec.http.HttpHeaders;
import java.io.UnsupportedEncodingException;
import java.lang.ref.WeakReference;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.StringCharacterIterator;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.http.entity.StringEntity;
import org.json.JSONException;
import org.json.JSONObject;
public final class O {
private String a;
private JSONObject c;
private WeakReference e;
private boolean f;
private String b = UUID.randomUUID().toString();
private C0178a d = W.a();
public O(Context context, String str, boolean z) {
this.a = str;
this.f = z;
this.e = new WeakReference(context);
}
public static String a(String str, boolean z, CardType cardType) {
String c = z ? c(str) : str;
if (cardType == null) {
cardType = CardType.fromCardNumber(c);
}
int numberLength = cardType.numberLength();
if (c.length() != numberLength) {
return str;
}
if (numberLength != 16) {
return numberLength == 15 ? d(c) : str;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++) {
if (i != 0 && i % 4 == 0) {
sb.append(' ');
}
sb.append(c.charAt(i));
}
return sb.toString();
}
private void a(String str, Map map) {
try {
JSONObject jSONObject = map != null ? new JSONObject(map) : new JSONObject();
jSONObject.put("app_token", this.a);
jSONObject.put("detect_card_only", this.f);
jSONObject.put("event_name", str);
jSONObject.put("session_id", this.b);
jSONObject.put("timestamp", System.currentTimeMillis() / 1000);
jSONObject.put("device", new JSONObject(T.a((Context) this.e.get())));
jSONObject.put("android", new JSONObject(T.a()));
jSONObject.put("application_identifiers", b());
this.d.a((Context) this.e.get(), "https://api.card.io/0/sdk/analytics.json", new StringEntity(jSONObject.toString()), HttpHeaders.Values.APPLICATION_JSON, new P(str));
} catch (UnsupportedEncodingException e) {
e.getMessage();
} catch (JSONException e2) {
e2.getMessage();
}
}
public static boolean a(String str) {
int[][] iArr = {new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, new int[]{0, 2, 4, 6, 8, 1, 3, 5, 7, 9}};
StringCharacterIterator stringCharacterIterator = new StringCharacterIterator(str);
char last = stringCharacterIterator.last();
int i = 0;
int i2 = 0;
while (last != 65535) {
if (!Character.isDigit(last)) {
return false;
}
i += iArr[i2 & 1][last - '0'];
last = stringCharacterIterator.previous();
i2++;
}
return i % 10 == 0;
}
public static Date b(String str) {
String c = c(str);
int length = c.length();
SimpleDateFormat simpleDateFormat = length == 4 ? new SimpleDateFormat("MMyy") : length == 6 ? new SimpleDateFormat("MMyyyy") : null;
if (simpleDateFormat != null) {
try {
simpleDateFormat.setLenient(false);
return simpleDateFormat.parse(c);
} catch (ParseException unused) {
}
}
return null;
}
private JSONObject b() {
if (this.c == null) {
this.c = new JSONObject();
Context context = (Context) this.e.get();
String packageName = context.getPackageName();
this.c.put("package_name", context.getPackageName());
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(packageName, 0);
this.c.put("package_display_name", packageInfo.applicationInfo.loadLabel(packageManager).toString());
this.c.put("package_version", packageInfo.versionName);
} catch (PackageManager.NameNotFoundException unused) {
}
}
return this.c;
}
public static String c(String str) {
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isDigit(c)) {
sb.append(c);
}
}
return sb.toString();
}
private static String d(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 15; i++) {
if (i == 4 || i == 10) {
sb.append(' ');
}
sb.append(str.charAt(i));
}
return sb.toString();
}
public final void a() {
a("scan_start", (Map) null);
}
public final void a(am amVar, Throwable th, Map map) {
if (map == null) {
map = new HashMap();
}
map.put("error", amVar.toString());
if (th != null) {
map.put("error_detail", th.toString());
}
a("device_error", map);
}
public final void a(am amVar, Map map) {
a(amVar, (Throwable) null, map);
}
public final void a(Map map) {
a("scan_cancel", map);
}
public final void b(Map map) {
a("scan_manual_entry", map);
}
public final void c(Map map) {
a("scan_success", map);
}
}