QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685

以下内容为反编译后的 APWebJSBridgeActivity.java 源代码,内容仅作参考


package com.tencent.midas.jsbridge;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Toast;
import com.eclipsesource.mmv8.Platform;
import com.huawei.hms.framework.common.ContainerUtils;
import com.pay.tool.APMidasCommMethod;
import com.pay.tool.APMidasTools;
import com.tencent.connect.common.Constants;
import com.tencent.midas.api.APMidasPayAPI;
import com.tencent.midas.api.APMidasResponse;
import com.tencent.midas.api.request.APMidasBaseRequest;
import com.tencent.midas.api.request.APMidasGameRequest;
import com.tencent.midas.api.request.APMidasGoodsRequest;
import com.tencent.midas.api.request.APMidasMonthRequest;
import com.tencent.midas.api.request.APMidasSubscribeRequest;
import com.tencent.midas.comm.APLog;
import com.tencent.midas.control.APMidasPayHelper;
import com.tencent.midas.data.APMidasPluginInfo;
import com.tencent.midas.data.APPluginDataInterface;
import com.tencent.midas.data.APPluginReportManager;
import com.tencent.midas.plugin.APPluginUtils;
import com.tencent.open.SocialOperation;
import com.tencent.qqlive.module.videoreport.collect.EventCollector;
import com.tencent.qqlive.module.videoreport.dtreport.constants.DTParamKey;
import java.util.HashMap;
import java.util.Map;

public class APWebJSBridgeActivity extends Activity {
    private static final String KEY_REQUEST = "key_request";
    private static final String KEY_TYPE = "key_pure_h5_pay";
    private static final String TAG = "APWebJSBridgeActivity";
    private static final String VALUE_PURE_H5 = "value_pure_h5_pay";
    private static final String WEB_URL_POST = "/index.html";
    private static final String WEB_URL_PRE = "https://youxi.vip.qq.com/m/act/";
    private IAPWebPage webPage = null;

    private String constructUrl() {
        String discountUrl;
        if (TextUtils.isEmpty(APPluginDataInterface.singleton().getDiscountUrl())) {
            discountUrl = WEB_URL_PRE + APPluginDataInterface.singleton().getOfferId() + WEB_URL_POST;
            this.webPage.initHead(this, APMidasTools.getUrlParamsValue(discountUrl, APWebProtocol.URL_KEY_HEAD_CONTROL), APMidasTools.getUrlParamsValue(discountUrl, APWebProtocol.URL_KEY_HEAD_TITLE));
            this.webPage.updateWebViewSize(discountUrl);
        } else {
            discountUrl = APPluginDataInterface.singleton().getDiscountUrl();
            this.webPage.initHead(this, APMidasTools.getUrlParamsValue(discountUrl, APWebProtocol.URL_KEY_HEAD_CONTROL), APMidasTools.getUrlParamsValue(discountUrl, APWebProtocol.URL_KEY_HEAD_TITLE));
            this.webPage.updateWebViewSize(APPluginDataInterface.singleton().getDiscountUrl());
        }
        APLog.e("constructUrl", discountUrl);
        HashMap hashMap = new HashMap();
        hashMap.put("offerId", APPluginDataInterface.singleton().getOfferId());
        hashMap.put("openId", APPluginDataInterface.singleton().getOpenId());
        hashMap.put("openKey", APPluginDataInterface.singleton().getOpenKey());
        hashMap.put(DTParamKey.REPORT_KEY_VISUAL_SESSION_ID, APPluginDataInterface.singleton().getSessionId());
        hashMap.put("sessionType", APPluginDataInterface.singleton().getSessionType());
        hashMap.put(Constants.PARAM_PLATFORM_ID, APPluginDataInterface.singleton().getPf());
        hashMap.put("pfKey", APPluginDataInterface.singleton().getPfKey());
        hashMap.put("zoneId", APPluginDataInterface.singleton().getZoneId());
        if (!discountUrl.contains("?")) {
            discountUrl = discountUrl + "?";
        } else if (!discountUrl.endsWith("?")) {
            discountUrl = discountUrl + ContainerUtils.FIELD_DELIMITER;
        }
        String str = discountUrl + APMidasTools.map2UrlParams(hashMap);
        APLog.i("constructUrl", str);
        return str;
    }

    private String getPureH5PayURLParameters(APMidasBaseRequest aPMidasBaseRequest) {
        HashMap hashMap = new HashMap();
        hashMap.put("m", "buy");
        hashMap.put("_version", "v3");
        hashMap.put("appid", aPMidasBaseRequest.offerId);
        hashMap.put(Constants.PARAM_PLATFORM_ID, aPMidasBaseRequest.pf);
        hashMap.put("n", aPMidasBaseRequest.saveValue);
        hashMap.put("sessionid", aPMidasBaseRequest.sessionId);
        hashMap.put("sessiontype", aPMidasBaseRequest.sessionType);
        hashMap.put("openid", aPMidasBaseRequest.openId);
        hashMap.put("openkey", aPMidasBaseRequest.openKey);
        hashMap.put(SocialOperation.GAME_ZONE_ID, aPMidasBaseRequest.zoneId);
        hashMap.put("sdktype", Platform.ANDROID);
        String midasCoreVersionName = APPluginUtils.getMidasCoreVersionName(this);
        APLog.d(TAG, "app_version = " + midasCoreVersionName);
        hashMap.put("appversion", midasCoreVersionName);
        hashMap.put("request_from", "androidsdk");
        hashMap.put("is_android_sdk_error_version", "1");
        hashMap.put("android_sdk_reserve", aPMidasBaseRequest.reserv);
        hashMap.put("android_sdk_mpinfo_discountType", aPMidasBaseRequest.mpInfo.discountType);
        hashMap.put("android_sdk_mpinfo_discountUrl", aPMidasBaseRequest.mpInfo.discountUrl);
        hashMap.put("android_sdk_mpinfo_discoutId", aPMidasBaseRequest.mpInfo.discoutId);
        hashMap.put("android_sdk_mpinfo_drmInfo", aPMidasBaseRequest.mpInfo.drmInfo);
        hashMap.put("android_sdk_mpinfo_extras", aPMidasBaseRequest.mpInfo.extras);
        hashMap.put("android_sdk_mpinfo_payChannel", aPMidasBaseRequest.mpInfo.payChannel);
        hashMap.put("android_sdk_extendInfo_unit", aPMidasBaseRequest.extendInfo.unit);
        hashMap.put("android_sdk_extendInfo_isShowListOtherNum", String.valueOf(aPMidasBaseRequest.extendInfo.isShowListOtherNum));
        hashMap.put("android_sdk_extendInfo_isShowNum", String.valueOf(aPMidasBaseRequest.extendInfo.isShowNum));
        if (aPMidasBaseRequest instanceof APMidasGameRequest) {
            hashMap.put("c", ("hy_gameid".equals(aPMidasBaseRequest.sessionId) && "wc_actoken".equals(aPMidasBaseRequest.sessionType)) ? "wechat_game" : "itopid".equals(aPMidasBaseRequest.sessionId) ? "itop_game" : "game");
            if (!TextUtils.isEmpty(aPMidasBaseRequest.saveValue)) {
                hashMap.put("as", "1");
            }
        } else if (aPMidasBaseRequest instanceof APMidasGoodsRequest) {
            APMidasGoodsRequest aPMidasGoodsRequest = (APMidasGoodsRequest) aPMidasBaseRequest;
            hashMap.put("c", "goods");
            if (aPMidasGoodsRequest.tokenType == 1) {
                hashMap.put("params", aPMidasGoodsRequest.goodsTokenUrl);
            } else {
                hashMap.put("productid", aPMidasGoodsRequest.prodcutId);
            }
        } else if (aPMidasBaseRequest instanceof APMidasSubscribeRequest) {
            APMidasSubscribeRequest aPMidasSubscribeRequest = (APMidasSubscribeRequest) aPMidasBaseRequest;
            hashMap.put("c", ("uin".equals(aPMidasBaseRequest.sessionId) || "openid".equals(aPMidasBaseRequest.sessionId)) ? "qqsubscribe" : "subscribe");
            if (!TextUtils.isEmpty(aPMidasSubscribeRequest.productId)) {
                hashMap.put("as", "1");
                hashMap.put("productid", aPMidasSubscribeRequest.productId);
            }
            hashMap.put("service", aPMidasSubscribeRequest.serviceCode);
            hashMap.put("aid", aPMidasSubscribeRequest.remark);
            if (aPMidasSubscribeRequest.autoPay) {
                hashMap.put("ap", "1");
            }
        } else if (aPMidasBaseRequest instanceof APMidasMonthRequest) {
            APMidasMonthRequest aPMidasMonthRequest = (APMidasMonthRequest) aPMidasBaseRequest;
            hashMap.put("da", "1");
            hashMap.put("c", aPMidasMonthRequest.serviceCode.toLowerCase());
            hashMap.put("_newservice", "1");
            if (aPMidasMonthRequest.autoPay) {
                hashMap.put("ap", "1");
            }
            if (!TextUtils.isEmpty(aPMidasBaseRequest.saveValue)) {
                hashMap.put("as", "1");
            }
            hashMap.put("aid", aPMidasMonthRequest.remark);
        }
        String str = APMidasPayAPI.env;
        if (APMidasPayAPI.ENV_DEV.equals(str)) {
            hashMap.put("sandbox", "2");
        } else if (APMidasPayAPI.ENV_TEST.equals(str)) {
            hashMap.put("sandbox", "1");
        }
        return map2UrlParams(hashMap);
    }

    private void initUI() {
        this.webPage.initUI(this);
        this.webPage.loadUrl(constructUrl());
    }

    private void initWebPage() {
        APPluginReportManager aPPluginReportManager;
        String launchInterface;
        String str;
        APPluginReportManager.getInstance().insertData(APPluginDataInterface.singleton().getLaunchInterface(), APPluginReportManager.MIDASPLUGIN_WEBPAGE_INIT, "", "");
        if (APX5.isX5Enabled(this)) {
            this.webPage = new APX5WebPage();
            aPPluginReportManager = APPluginReportManager.getInstance();
            launchInterface = APPluginDataInterface.singleton().getLaunchInterface();
            str = APPluginReportManager.MIDASPLUGIN_WEBPAGE_X5;
        } else {
            this.webPage = new APSystemWebPage();
            aPPluginReportManager = APPluginReportManager.getInstance();
            launchInterface = APPluginDataInterface.singleton().getLaunchInterface();
            str = APPluginReportManager.MIDASPLUGIN_WEBPAGE_SYSTEM;
        }
        aPPluginReportManager.insertData(launchInterface, str, "", "");
    }

    public static String map2UrlParams(HashMap<String, String> hashMap) {
        StringBuffer stringBuffer = new StringBuffer();
        try {
            for (Map.Entry<String, String> entry : hashMap.entrySet()) {
                stringBuffer.append(entry.getKey());
                stringBuffer.append(ContainerUtils.KEY_VALUE_DELIMITER);
                stringBuffer.append(entry.getValue());
                stringBuffer.append(ContainerUtils.FIELD_DELIMITER);
            }
            if (!TextUtils.isEmpty(stringBuffer)) {
                stringBuffer.deleteCharAt(stringBuffer.length() - 1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stringBuffer.toString();
    }

    private static boolean startPureH5Pay(Context context, APMidasBaseRequest aPMidasBaseRequest) {
        if (context == null) {
            APLog.e(TAG, "Cannot start pure h5 pay with null context!");
            return false;
        }
        Intent intent = new Intent();
        intent.setClass(context, APWebJSBridgeActivity.class);
        intent.putExtra(KEY_TYPE, VALUE_PURE_H5);
        intent.putExtra(KEY_REQUEST, aPMidasBaseRequest);
        context.startActivity(intent);
        return true;
    }

    public static boolean startPureH5Pay(Context context, String str, String str2) {
        String str3;
        APLog.d(TAG, " Calling into startPureH5Pay caller = " + Thread.currentThread().getStackTrace()[3].toString());
        APPluginReportManager.getInstance().reportImmediatelyOneRecord(APMidasPluginInfo.LAUNCH_INTERFACE_LAUNCHPAY, APPluginReportManager.MIDASPLUGIN_LAUNCH_PURE_H5_ERROR_REASON, "scene=" + str2 + "&reason=" + str);
        if (context == null) {
            str3 = "Cannot start pure h5 pay with null context!";
        } else {
            APMidasBaseRequest aPMidasBaseRequest = APMidasPayHelper.requestObject;
            if (aPMidasBaseRequest == null) {
                str3 = "Cannot start pure h5 pay with null request object!";
            } else {
                Activity activity = APMidasPayHelper.staticActivityContext;
                if (activity != null) {
                    APMidasPayHelper.staticActivityContext = null;
                    return startPureH5Pay(activity, aPMidasBaseRequest);
                }
                str3 = "Cannot start pure h5 pay with null activity object!";
            }
        }
        APLog.e(TAG, str3);
        return false;
    }

    private void toPureH5Pay(APMidasBaseRequest aPMidasBaseRequest) {
        this.webPage.toPureH5Pay(this, aPMidasBaseRequest);
        String str = "https://pay.qq.com/h5/index.shtml?" + getPureH5PayURLParameters(aPMidasBaseRequest);
        APLog.d(TAG, "To pure h5 pay full url = " + str);
        this.webPage.loadUrl(str);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent motionEvent) {
        EventCollector.getInstance().onActivityDispatchTouchEvent(this, motionEvent, false, true);
        boolean dispatchTouchEvent = super.dispatchTouchEvent(motionEvent);
        EventCollector.getInstance().onActivityDispatchTouchEvent(this, motionEvent, dispatchTouchEvent, false);
        return dispatchTouchEvent;
    }

    @Override
    public void onConfigurationChanged(Configuration configuration) {
        super.onConfigurationChanged(configuration);
        EventCollector.getInstance().onActivityConfigurationChanged(this, configuration);
    }

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        try {
            APMidasCommMethod.pushActivity(this);
            initWebPage();
            Intent intent = getIntent();
            if (intent == null || !VALUE_PURE_H5.equals(intent.getStringExtra(KEY_TYPE))) {
                initUI();
            } else {
                toPureH5Pay((APMidasBaseRequest) intent.getSerializableExtra(KEY_REQUEST));
            }
        } catch (Exception e) {
            e.printStackTrace();
            String fullExceptionStacktrace = APPluginUtils.getFullExceptionStacktrace(e);
            if (!TextUtils.isEmpty(fullExceptionStacktrace) && (fullExceptionStacktrace.contains("webview") || fullExceptionStacktrace.contains("Webview"))) {
                Toast.makeText(this, "系统组件缺失,请退出重试", 0).show();
            }
            APPluginUtils.callbackInMidasPluginWithoutCaringAboutNewProcess(this, 100, "返回");
            finish();
        }
    }

    @Override
    public boolean onKeyDown(int i, KeyEvent keyEvent) {
        if (i == 4) {
            APLog.d(TAG, "onKey down = back!");
            APMidasResponse aPMidasResponse = new APMidasResponse();
            aPMidasResponse.resultCode = 100;
            aPMidasResponse.resultMsg = "返回";
            APMidasPayHelper.midasCallBack(aPMidasResponse);
            finish();
        }
        return super.onKeyDown(i, keyEvent);
    }

    @Override
    public void onResume() {
        super.onResume();
    }

    @Override
    protected void onStart() {
        super.onStart();
    }
}