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