From d77a5909232ec1829548fff01915a0ca7dc2269f Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期五, 14 一月 2022 11:23:09 +0800
Subject: [PATCH] 微信授权登录修改

---
 springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java |   26 +++----------
 springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java     |   57 +++++++++++++++++++++++-----
 2 files changed, 52 insertions(+), 31 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java
index 0cd4476..cef7a88 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java
@@ -1,6 +1,9 @@
 package com.panzhihua.shop_backstage.api;
 
+import static java.util.Objects.isNull;
 import static java.util.Objects.nonNull;
+
+import java.util.regex.Pattern;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -66,15 +69,11 @@
 import com.panzhihua.shop_backstage.model.request.LoginRequest;
 import com.panzhihua.shop_backstage.model.vos.LoginBody;
 
-import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-
-import java.util.regex.Pattern;
 
 /**
  * @title: MicroCommercialStreetApi
@@ -106,23 +105,10 @@
             return R.fail("缺少登录参数");
         }
         log.info(code);
-        WxMaService maService = wxMaConfiguration.getMaH5Service();
-        WxMaJscode2SessionResult sessionInfo = null;
-        try {
-            sessionInfo = maService.jsCode2SessionInfo(code);
-        } catch (Exception e) {
-            log.error("微信登录失败【{}】", e.getMessage());
-            if (code.equals("22")) {
-                sessionInfo = new WxMaJscode2SessionResult();
-                sessionInfo.setOpenid("88888888");
-                sessionInfo.setSessionKey("9999999");
-            } else {
-                return R.fail("微信登录失败");
-            }
+        String openid = wxMaConfiguration.retrieveOpenId(code);
+        if (isNull(openid)) {
+            return R.fail("登录失败");
         }
-        log.info("微信登录成功【{}】", JSONObject.toJSONString(sessionInfo));
-        log.info("loginRequest参数【{}】", JSONObject.toJSONString(loginRequest));
-        String openid = sessionInfo.getOpenid();
         R r = userService.getMcsUserByOpenId(openid);
         if (R.isOk(r) && nonNull(r.getData())) {
             McsLoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), McsLoginUserInfoVO.class);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java
index 7d5fe55..3d35c18 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java
@@ -1,12 +1,18 @@
 package com.panzhihua.shop_backstage.config;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Component;
 
-import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
-import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import com.alibaba.fastjson.JSONObject;
+import com.panzhihua.common.utlis.HttpUtils;
+
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -19,16 +25,45 @@
 @Component
 public class WxMaConfiguration {
 
+    private static final String OAUTH2_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
+
     @Resource
     private WxH5Properties wxH5Properties;
 
-    public WxMaService getMaH5Service() {
-        WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
-        config.setAppid(wxH5Properties.getAppid());
-        config.setSecret(wxH5Properties.getSecret());
-        config.setMsgDataFormat(wxH5Properties.getMsgDataFormat());
-        WxMaService wxMaService = new WxMaServiceImpl();
-        wxMaService.setWxMaConfig(config);
-        return wxMaService;
+    public String retrieveOpenId(String code) {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("appid", wxH5Properties.getAppid());
+        params.put("secret", wxH5Properties.getSecret());
+        params.put("code", code);
+        params.put("grant_type", "authorization_code");
+        String result = HttpUtils.sendGet(OAUTH2_URL, createLinkStringByGet(params));
+        try {
+            JSONObject parseObject = JSONObject.parseObject(result);
+            if (parseObject.containsKey("openid")) {
+                String openid = parseObject.get("openid").toString();
+                log.info("网页授权获取到openId:【{}】", openid);
+                return openid;
+            }
+        } catch (Exception e) {
+            log.error("网页授权失败");
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private static String createLinkStringByGet(Map<String, String> params) {
+        List<String> keys = new ArrayList<>(params.keySet());
+        Collections.sort(keys);
+        StringBuilder stringBuilder = new StringBuilder();
+        for (int i = 0; i < keys.size(); i++) {
+            String key = keys.get(i);
+            String value = params.get(key);
+            if (i == keys.size() - 1) {
+                stringBuilder.append(key).append("=").append(value);
+            } else {
+                stringBuilder.append(key).append("=").append(value).append("&");
+            }
+        }
+        return stringBuilder.toString();
     }
 }

--
Gitblit v1.7.1