WXEntryActivity.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.edufound.mobile.wxapi;
  2. import android.os.Build;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.os.Message;
  6. import android.support.annotation.RequiresApi;
  7. import android.view.WindowManager;
  8. import com.edufound.mobile.base.BaseActivity;
  9. import com.edufound.mobile.main.MainPersenter;
  10. import com.edufound.mobile.pay.PayInit;
  11. import com.edufound.mobile.util.Logger;
  12. import com.edufound.mobile.util.OKHttpUtil;
  13. import com.tencent.mm.opensdk.constants.ConstantsAPI;
  14. import com.tencent.mm.opensdk.modelbase.BaseReq;
  15. import com.tencent.mm.opensdk.modelbase.BaseResp;
  16. import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
  17. import com.tencent.mm.opensdk.modelmsg.SendAuth;
  18. import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
  19. import com.tencent.mm.opensdk.openapi.WXAPIFactory;
  20. import org.json.JSONException;
  21. import java.io.IOException;
  22. import okhttp3.Call;
  23. import okhttp3.Callback;
  24. import okhttp3.Response;
  25. public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
  26. @RequiresApi(api = Build.VERSION_CODES.P)
  27. @Override
  28. protected void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  31. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  32. PayInit.getInstance().WX_API = WXAPIFactory.createWXAPI(this, PayInit.getInstance().WX_APPID);
  33. PayInit.getInstance().WX_API.handleIntent(getIntent(), this);
  34. }
  35. @Override
  36. public void onReq(BaseReq baseReq) {
  37. }
  38. //请求回调结果处理
  39. @Override
  40. public void onResp(BaseResp baseResp) {
  41. if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
  42. // WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;
  43. // String extraData = launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
  44. // MainActivity.mIntences.mWebView.loadUrl("javascript:appDispatch('" + extraData + "')");
  45. // Intent intent = new Intent(mActivity, MainActivity.class);
  46. // startActivity(intent);
  47. // finish();
  48. } else {
  49. switch (baseResp.errCode) {
  50. case BaseResp.ErrCode.ERR_OK:
  51. String code = ((SendAuth.Resp) baseResp).code;
  52. //获取用户信息
  53. getAccessToken(code);
  54. break;
  55. case BaseResp.ErrCode.ERR_AUTH_DENIED://用户拒绝授权
  56. finish();
  57. break;
  58. case BaseResp.ErrCode.ERR_USER_CANCEL://用户取消
  59. finish();
  60. break;
  61. default:
  62. Logger.e("baseResp.errCode:" + baseResp.errCode);
  63. finish();
  64. break;
  65. }
  66. }
  67. }
  68. void getAccessToken(String code) {
  69. StringBuffer loginUrl = new StringBuffer();
  70. loginUrl.append("https://api.weixin.qq.com/sns/oauth2/access_token")
  71. .append("?appid=")
  72. .append(PayInit.getInstance().WX_APPID)
  73. .append("&secret=")
  74. .append(PayInit.getInstance().WX_SECRET)
  75. .append("&code=")
  76. .append(code)
  77. .append("&grant_type=authorization_code");
  78. try {
  79. OKHttpUtil.getInstance().getContentLength(loginUrl.toString(), new Callback() {
  80. @Override
  81. public void onFailure(Call call, IOException e) {
  82. }
  83. @Override
  84. public void onResponse(Call call, Response response) throws IOException {
  85. String access = null;
  86. String openId = null;
  87. try {
  88. String json = response.body().string();
  89. org.json.JSONObject jsonObj = new org.json.JSONObject(json);
  90. access = jsonObj.getString("access_token");
  91. openId = jsonObj.getString("openid");
  92. } catch (JSONException e) {
  93. e.printStackTrace();
  94. }
  95. String getUserInfo = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access + "&openid=" + openId;
  96. OKHttpUtil.getInstance().getContentLength(getUserInfo, new Callback() {
  97. @Override
  98. public void onFailure(Call call, IOException e) {
  99. }
  100. @Override
  101. public void onResponse(Call call, Response response) throws IOException {
  102. try {
  103. String json = response.body().string();
  104. Message msg = new Message();
  105. msg.what = MainPersenter.WECHAT_LOGIN;
  106. msg.obj = json;
  107. MainPersenter.mPersenterHandler.sendMessage(msg);
  108. finish();
  109. } catch (Exception e) {
  110. e.printStackTrace();
  111. }
  112. }
  113. });
  114. }
  115. });
  116. } catch (IOException e) {
  117. e.printStackTrace();
  118. }
  119. }
  120. @Override
  121. protected void onPause() {
  122. overridePendingTransition(0, 0);
  123. super.onPause();
  124. }
  125. }