package com.haicaojie.android.wxapi;
|
|
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import android.support.annotation.Nullable;
|
import android.widget.Toast;
|
|
import com.alibaba.baichuan.trade.biz.login.AlibcLogin;
|
import com.alibaba.baichuan.trade.biz.login.AlibcLoginCallback;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.haicaojie.android.ui.recommend.GoodsBrowserActivity;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.tencent.mm.opensdk.modelbase.BaseReq;
|
import com.tencent.mm.opensdk.modelbase.BaseResp;
|
import com.tencent.mm.opensdk.modelmsg.SendAuth;
|
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
|
import com.xiaomi.mipush.sdk.MiPushClient;
|
import com.haicaojie.android.BasicTextHttpResponseHandler;
|
import com.haicaojie.android.ShoppingApi;
|
import com.haicaojie.android.ShoppingApplication;
|
import com.haicaojie.android.entity.UserInfo;
|
import com.haicaojie.android.ui.BaseActivity;
|
import com.haicaojie.android.ui.mine.MergeAccountActivity;
|
import com.haicaojie.android.util.BindDialog;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
|
public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
|
|
private static final int RETURN_MSG_TYPE_LOGIN = 1;
|
private static final int RETURN_MSG_TYPE_SHARE = 2;
|
|
@Override
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
// SingleToast.showToast(WXEntryActivity.this, "进入回调");
|
//如果没回调onResp,八成是这句没有写
|
ShoppingApplication.application.mWxApi.handleIntent(getIntent(), this);
|
|
}
|
|
// 微信发送请求到第三方应用时,会回调到该方法
|
@Override
|
public void onReq(BaseReq req) {
|
// SingleToast.showToast(WXEntryActivity.this, "发送请求");
|
}
|
|
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
|
//app发送消息给微信,处理返回消息的回调
|
@Override
|
public void onResp(BaseResp resp) {
|
// SingleToast.showToast(WXEntryActivity.this, "请求成功" + resp.errCode);
|
switch (resp.errCode) {
|
case BaseResp.ErrCode.ERR_AUTH_DENIED:
|
case BaseResp.ErrCode.ERR_UNSUPPORT:
|
case BaseResp.ErrCode.ERR_COMM:
|
case BaseResp.ErrCode.ERR_BAN:
|
case BaseResp.ErrCode.ERR_USER_CANCEL:
|
finish();
|
break;
|
case BaseResp.ErrCode.ERR_SENT_FAILED:
|
finish();
|
break;
|
case BaseResp.ErrCode.ERR_OK:
|
switch (resp.getType()) {
|
case RETURN_MSG_TYPE_LOGIN:
|
// SingleToast.showToast(WXEntryActivity.this, "登录成功ERR_OK---RETURN_MSG_TYPE_LOGIN");
|
String code = ((SendAuth.Resp) resp).code;
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
String uid = sp.getString("uid", "0");
|
boolean bindwx = sp.getBoolean("bindwx", false);
|
if (bindwx) {
|
changeWx(code, uid);
|
sp.edit().putBoolean("bindwx", false).commit();
|
break;
|
}
|
if (!sp.getBoolean("isLogin", false)) {
|
//拿到了微信返回的code,立马再去请求access_token
|
setLogin(code);
|
}
|
break;
|
case RETURN_MSG_TYPE_SHARE:
|
// UIUtils.showToast("微信分享成功");
|
finish();
|
break;
|
}
|
break;
|
}
|
}
|
|
/**
|
* 登录
|
*/
|
private void setLogin(String code) {
|
boolean wxInstall = false;
|
if (ShoppingApplication.application.mWxApi.isWXAppInstalled()) {//微信登录
|
wxInstall = true;
|
} else {
|
wxInstall = false;
|
}
|
ShoppingApi.login(WXEntryActivity.this, getSharedPreferences("user", MODE_PRIVATE).getBoolean("first", false), code, "", "", "", "", wxInstall, "", "2", new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
if (jsonObject.optJSONObject("data").optString("type").equalsIgnoreCase("1")) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
final UserInfo info = gson.fromJson(jsonObject.optJSONObject("data").optJSONObject("data").optJSONObject("user").toString(), new TypeToken<UserInfo>() {
|
}.getType());
|
SharedPreferences sp = getSharedPreferences("user", Context.MODE_PRIVATE);
|
SharedPreferences.Editor editor = sp.edit();
|
editor.putBoolean("isLogin", true);
|
editor.putBoolean("isTBBind", true);
|
editor.putBoolean("isFirstInput", false);
|
editor.putString("uid", info.getId());
|
MiPushClient.setAlias(WXEntryActivity.this, info.getId(), null);
|
|
if (StringUtils.isEmpty(info.getOpenid())) {
|
editor.putBoolean("isTBBind", false);
|
} else {
|
editor.putBoolean("isTBBind", true);
|
}
|
if (StringUtils.isEmpty(info.getWxOpenId())) {
|
editor.putBoolean("isWxBind", false);
|
} else {
|
editor.putBoolean("isWxBind", true);
|
}
|
editor.commit();
|
SingleToast.showToast(WXEntryActivity.this, "登录成功!");
|
} else if (jsonObject.optJSONObject("data").optString("type").equalsIgnoreCase("3")) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
final UserInfo mainUser = gson.fromJson(jsonObject.optJSONObject("data").optJSONObject("data").optJSONObject("mainUser").toString(), new TypeToken<UserInfo>() {
|
}.getType());
|
final UserInfo lessUser = gson.fromJson(jsonObject.optJSONObject("data").optJSONObject("data").optJSONObject("lessUser").toString(), new TypeToken<UserInfo>() {
|
}.getType());
|
final UserInfo info = gson.fromJson(jsonObject.optJSONObject("data").optJSONObject("data").optJSONObject("user").toString(), new TypeToken<UserInfo>() {
|
}.getType());
|
Intent intent = new Intent(WXEntryActivity.this, MergeAccountActivity.class);
|
intent.putExtra("mainUser", mainUser);
|
intent.putExtra("lessUser", lessUser);
|
intent.putExtra("user", info);
|
startActivity(intent);
|
}
|
} else {
|
SingleToast.showToast(WXEntryActivity.this, jsonObject.optString("msg"));
|
}
|
finish();
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
getSharedPreferences("user", MODE_PRIVATE).edit().putBoolean("first", false).commit();
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
finish();
|
}
|
});
|
}
|
|
private void changeWx(String code, String uid) {
|
ShoppingApi.changeWx(this, uid, code, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
SharedPreferences.Editor editor = sp.edit();
|
editor.putBoolean("isWxBind", true);
|
SingleToast.showToast(WXEntryActivity.this, "更换绑定成功!");
|
editor.commit();
|
finish();
|
} else {
|
SingleToast.showToast(WXEntryActivity.this, jsonObject.optString("msg"));
|
finish();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
finish();
|
}
|
});
|
}
|
}
|