123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package com.edufound.mobile.wxapi;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.support.annotation.RequiresApi;
- import android.view.WindowManager;
- import com.edufound.mobile.base.BaseActivity;
- import com.edufound.mobile.main.MainPersenter;
- import com.edufound.mobile.pay.PayInit;
- import com.edufound.mobile.util.Logger;
- import com.edufound.mobile.util.OKHttpUtil;
- import com.tencent.mm.opensdk.constants.ConstantsAPI;
- import com.tencent.mm.opensdk.modelbase.BaseReq;
- import com.tencent.mm.opensdk.modelbase.BaseResp;
- import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
- import com.tencent.mm.opensdk.modelmsg.SendAuth;
- import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
- import com.tencent.mm.opensdk.openapi.WXAPIFactory;
- import org.json.JSONException;
- import java.io.IOException;
- import okhttp3.Call;
- import okhttp3.Callback;
- import okhttp3.Response;
- public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
- @RequiresApi(api = Build.VERSION_CODES.P)
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- PayInit.getInstance().WX_API = WXAPIFactory.createWXAPI(this, PayInit.getInstance().WX_APPID);
- PayInit.getInstance().WX_API.handleIntent(getIntent(), this);
- }
- @Override
- public void onReq(BaseReq baseReq) {
- }
- //请求回调结果处理
- @Override
- public void onResp(BaseResp baseResp) {
- if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
- // WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;
- // String extraData = launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
- // MainActivity.mIntences.mWebView.loadUrl("javascript:appDispatch('" + extraData + "')");
- // Intent intent = new Intent(mActivity, MainActivity.class);
- // startActivity(intent);
- // finish();
- } else {
- switch (baseResp.errCode) {
- case BaseResp.ErrCode.ERR_OK:
- String code = ((SendAuth.Resp) baseResp).code;
- //获取用户信息
- getAccessToken(code);
- break;
- case BaseResp.ErrCode.ERR_AUTH_DENIED://用户拒绝授权
- finish();
- break;
- case BaseResp.ErrCode.ERR_USER_CANCEL://用户取消
- finish();
- break;
- default:
- Logger.e("baseResp.errCode:" + baseResp.errCode);
- finish();
- break;
- }
- }
- }
- void getAccessToken(String code) {
- StringBuffer loginUrl = new StringBuffer();
- loginUrl.append("https://api.weixin.qq.com/sns/oauth2/access_token")
- .append("?appid=")
- .append(PayInit.getInstance().WX_APPID)
- .append("&secret=")
- .append(PayInit.getInstance().WX_SECRET)
- .append("&code=")
- .append(code)
- .append("&grant_type=authorization_code");
- try {
- OKHttpUtil.getInstance().getContentLength(loginUrl.toString(), new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- String access = null;
- String openId = null;
- try {
- String json = response.body().string();
- org.json.JSONObject jsonObj = new org.json.JSONObject(json);
- access = jsonObj.getString("access_token");
- openId = jsonObj.getString("openid");
- } catch (JSONException e) {
- e.printStackTrace();
- }
- String getUserInfo = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access + "&openid=" + openId;
- OKHttpUtil.getInstance().getContentLength(getUserInfo, new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- try {
- String json = response.body().string();
- Message msg = new Message();
- msg.what = MainPersenter.WECHAT_LOGIN;
- msg.obj = json;
- MainPersenter.mPersenterHandler.sendMessage(msg);
- finish();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- });
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- protected void onPause() {
- overridePendingTransition(0, 0);
- super.onPause();
- }
- }
|