Android反编译看看手Q口令红包的实现原理

2019-12-10 19:07:55王振洲

b(sessionInfo.a, sessionInfo.f1757a, passwdRedBagInfo.a.string_redbag_id.get().toStringUtf8());
a(sessionInfo, passwdRedBagInfo);

我们先不急看这两个方法是做什么的。再往下看下一个方法,直接就有:

public long[] b(SessionInfo sessionInfo, String str) {
  if (QLog.isColorLevel()) {
    QLog.d(f2197a, (int) h, "openPasswdRedBagById, id = " + str);
  }

openPasswdRedBagById用id打开红包,猜测该id就是我们最早看到的结构里的redPacketId字段。

而该方法同样调用了

b(sessionInfo.a, sessionInfo.f1757a, str);
a(sessionInfo, passwdRedBagInfo);

看看这两个方法:

 

public void a(SessionInfo sessionInfo, PasswdRedBagInfo passwdRedBagInfo) {
  if (sessionInfo != null && passwdRedBagInfo != null) {
    Object obj = (sessionInfo.a == 0 || sessionInfo.a == h || sessionInfo.a == Action.ACTION_REGISTNEWACCOUNT_COMMITSMS || sessionInfo.a == Action.ACTION_LOGIN) ? g : null;
    String str = sessionInfo.f1757a;
    String valueOf = String.valueOf(passwdRedBagInfo.a.uint64_creator_uin.get());
    if (obj != null) {
      str = valueOf.equals(this.f2213d) ? sessionInfo.f1757a : this.f2213d;
    }
    JSONObject a = QQWalletMsgItemBuilder.a(this.f2203a, sessionInfo, passwdRedBagInfo.a.string_redbag_id.get().toStringUtf8(), passwdRedBagInfo.a.string_authkey.get().toStringUtf8(), str, "appid#1344242394|bargainor_id#1000030201|channel#msg", "graphb", null);
    Bundle bundle = new Bundle();
    bundle.putString("json", a.toString());
    bundle.putString("callbackSn", jbi.a);
    Intent intent = new Intent(this.f2200a, PayBridgeActivity.class);
    intent.putExtras(bundle);
    intent.addFlags(268435456);
    intent.putExtra("pay_requestcode", 5);
    this.f2200a.startActivity(intent);
  }
}

public void b(int i, String str, String str2) {
  if (!TextUtils.isEmpty(str2)) {
    HashMap hashMap = (HashMap) this.f2209b.get(str2);
    if (hashMap != null) {
      PasswdRedBagInfo passwdRedBagInfo = (PasswdRedBagInfo) hashMap.get(a(i) + "_" + str);
      if (passwdRedBagInfo != null && !passwdRedBagInfo.f4810a) {
        passwdRedBagInfo.f4810a = true;
        ThreadManager.a(new kmr(this, str2), h, null, true);
      }
    }
  }
}