导航菜单

页面标题

页面副标题

Crafto v9.3.3 - PaymentAuthWebViewClient.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;
    }
}