正在查看: Crafto v9.3.3 应用的 PaymentAuthWebViewClient.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Crafto v9.3.3 应用的 PaymentAuthWebViewClient.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.stripe.android.view;
import Hk.p;
import android.content.Intent;
import android.net.Uri;
import android.webkit.URLUtil;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.stripe.android.core.Logger;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.collections.C0781o;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;
import org.jetbrains.annotations.NotNull;
@Metadata
public final class PaymentAuthWebViewClient extends WebViewClient {
@NotNull
public static final String BLANK_PAGE = "about:blank";
@NotNull
private static final Set<String> COMPLETION_URLS;
@NotNull
public static final String PARAM_PAYMENT_CLIENT_SECRET = "payment_intent_client_secret";
@NotNull
private static final String PARAM_RETURN_URL = "return_url";
@NotNull
public static final String PARAM_SETUP_CLIENT_SECRET = "setup_intent_client_secret";
@NotNull
private final Function1<Throwable, Unit> activityFinisher;
@NotNull
private final Function1<Intent, Unit> activityStarter;
@NotNull
private final String clientSecret;
private String completionUrlParam;
private boolean hasLoadedBlank;
@NotNull
private final androidx.lifecycle.S<Boolean> isPageLoaded;
@NotNull
private final Logger logger;
private final Uri userReturnUri;
@NotNull
public static final Companion Companion = new Companion(null);
@NotNull
private static final Set<String> AUTHENTICATE_URLS = kotlin.collections.W.b("https://hooks.stripe.com/three_d_secure/authenticate");
@Metadata
public static final class Companion {
public Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final boolean isAuthenticateUrl(String str) {
Set set = PaymentAuthWebViewClient.AUTHENTICATE_URLS;
if ((set instanceof Collection) && set.isEmpty()) {
return false;
}
Iterator it = set.iterator();
while (it.hasNext()) {
if (kotlin.text.p.n(str, (String) it.next(), false)) {
return true;
}
}
return false;
}
public final boolean isCompletionUrl$payments_core_release(@NotNull String url) {
Intrinsics.checkNotNullParameter(url, "url");
Set set = PaymentAuthWebViewClient.COMPLETION_URLS;
if ((set instanceof Collection) && set.isEmpty()) {
return false;
}
Iterator it = set.iterator();
while (it.hasNext()) {
if (kotlin.text.p.n(url, (String) it.next(), false)) {
return true;
}
}
return false;
}
private Companion() {
}
}
static {
String[] elements = {"https://hooks.stripe.com/redirect/complete/", "https://hooks.stripe.com/3d_secure/complete/", "https://hooks.stripe.com/3d_secure_2/hosted/complete"};
Intrinsics.checkNotNullParameter(elements, "elements");
COMPLETION_URLS = C0781o.J(elements);
}
public PaymentAuthWebViewClient(@NotNull Logger logger, @NotNull androidx.lifecycle.S<Boolean> isPageLoaded, @NotNull String clientSecret, String str, @NotNull Function1<? super Intent, Unit> activityStarter, @NotNull Function1<? super Throwable, Unit> activityFinisher) {
Intrinsics.checkNotNullParameter(logger, "logger");
Intrinsics.checkNotNullParameter(isPageLoaded, "isPageLoaded");
Intrinsics.checkNotNullParameter(clientSecret, "clientSecret");
Intrinsics.checkNotNullParameter(activityStarter, "activityStarter");
Intrinsics.checkNotNullParameter(activityFinisher, "activityFinisher");
this.logger = logger;
this.isPageLoaded = isPageLoaded;
this.clientSecret = clientSecret;
this.activityStarter = activityStarter;
this.activityFinisher = activityFinisher;
this.userReturnUri = str != null ? Uri.parse(str) : null;
}
private final void hideProgressBar() {
this.logger.debug("PaymentAuthWebViewClient#hideProgressBar()");
this.isPageLoaded.setValue(Boolean.TRUE);
}
private final boolean isPredefinedReturnUrl(Uri uri) {
return Intrinsics.areEqual("stripejs://use_stripe_sdk/return_url", uri.toString());
}
private final boolean isReturnUrl(Uri uri) {
this.logger.debug("PaymentAuthWebViewClient#isReturnUrl()");
if (isPredefinedReturnUrl(uri)) {
return true;
}
Uri uri2 = this.userReturnUri;
if (uri2 != null) {
return uri2.getScheme() != null && Intrinsics.areEqual(this.userReturnUri.getScheme(), uri.getScheme()) && this.userReturnUri.getHost() != null && Intrinsics.areEqual(this.userReturnUri.getHost(), uri.getHost());
}
if (uri.isOpaque()) {
return false;
}
Set<String> queryParameterNames = uri.getQueryParameterNames();
return Intrinsics.areEqual(this.clientSecret, queryParameterNames.contains(PARAM_PAYMENT_CLIENT_SECRET) ? uri.getQueryParameter(PARAM_PAYMENT_CLIENT_SECRET) : queryParameterNames.contains(PARAM_SETUP_CLIENT_SECRET) ? uri.getQueryParameter(PARAM_SETUP_CLIENT_SECRET) : null);
}
private final void onAuthCompleted(Throwable th) {
this.logger.debug("PaymentAuthWebViewClient#onAuthCompleted()");
this.activityFinisher.invoke(th);
}
public static void onAuthCompleted$default(PaymentAuthWebViewClient paymentAuthWebViewClient, Throwable th, int i, Object obj) {
if ((i & 1) != 0) {
th = null;
}
paymentAuthWebViewClient.onAuthCompleted(th);
}
private final void openIntent(Intent intent) {
Object a;
this.logger.debug("PaymentAuthWebViewClient#openIntent()");
try {
p.a aVar = Hk.p.b;
this.activityStarter.invoke(intent);
a = Unit.a;
} catch (Throwable th) {
p.a aVar2 = Hk.p.b;
a = Hk.q.a(th);
}
Throwable a2 = Hk.p.a(a);
if (a2 != null) {
this.logger.error("Failed to start Intent.", a2);
if (Intrinsics.areEqual(intent.getScheme(), "alipays")) {
return;
}
onAuthCompleted(a2);
}
}
private final void openIntentScheme(Uri uri) {
Object a;
this.logger.debug("PaymentAuthWebViewClient#openIntentScheme()");
try {
p.a aVar = Hk.p.b;
Intent parseUri = Intent.parseUri(uri.toString(), 1);
Intrinsics.checkNotNullExpressionValue(parseUri, "parseUri(uri.toString(), Intent.URI_INTENT_SCHEME)");
openIntent(parseUri);
a = Unit.a;
} catch (Throwable th) {
p.a aVar2 = Hk.p.b;
a = Hk.q.a(th);
}
Throwable a2 = Hk.p.a(a);
if (a2 != null) {
this.logger.error("Failed to start Intent.", a2);
onAuthCompleted(a2);
}
}
private final void updateCompletionUrl(Uri uri) {
this.logger.debug("PaymentAuthWebViewClient#updateCompletionUrl()");
Companion companion = Companion;
String uri2 = uri.toString();
Intrinsics.checkNotNullExpressionValue(uri2, "uri.toString()");
String queryParameter = companion.isAuthenticateUrl(uri2) ? uri.getQueryParameter(PARAM_RETURN_URL) : null;
if (queryParameter == null || StringsKt.J(queryParameter)) {
return;
}
this.completionUrlParam = queryParameter;
}
public final String getCompletionUrlParam() {
return this.completionUrlParam;
}
public final boolean getHasLoadedBlank$payments_core_release() {
return this.hasLoadedBlank;
}
@Override
public void onPageFinished(@NotNull WebView view, String str) {
Intrinsics.checkNotNullParameter(view, "view");
this.logger.debug("PaymentAuthWebViewClient#onPageFinished() - " + str);
super.onPageFinished(view, str);
if (!this.hasLoadedBlank) {
hideProgressBar();
}
if (str == null || !Companion.isCompletionUrl$payments_core_release(str)) {
return;
}
this.logger.debug(str.concat(" is a completion URL"));
onAuthCompleted$default(this, null, 1, null);
}
public final void setHasLoadedBlank$payments_core_release(boolean z) {
this.hasLoadedBlank = z;
}
@Override
public boolean shouldOverrideUrlLoading(@NotNull WebView view, @NotNull WebResourceRequest request) {
Intrinsics.checkNotNullParameter(view, "view");
Intrinsics.checkNotNullParameter(request, "request");
Uri url = request.getUrl();
this.logger.debug("PaymentAuthWebViewClient#shouldOverrideUrlLoading(): " + url);
Intrinsics.checkNotNullExpressionValue(url, "url");
updateCompletionUrl(url);
if (isReturnUrl(url)) {
this.logger.debug("PaymentAuthWebViewClient#shouldOverrideUrlLoading() - handle return URL");
onAuthCompleted$default(this, null, 1, null);
return true;
}
if (kotlin.text.p.h("intent", url.getScheme(), true)) {
openIntentScheme(url);
return true;
}
if (URLUtil.isNetworkUrl(url.toString())) {
return super.shouldOverrideUrlLoading(view, request);
}
openIntent(new Intent("android.intent.action.VIEW", url));
return true;
}
}