ソースを参照

添加接口获取accessToken

jk-GitHub-coder 4 年 前
コミット
9329ceb46f

+ 50 - 0
YijiaRestful/src/main/java/com/platform/yijia/controller/AppUserInfoController.java

@@ -12,6 +12,7 @@ import com.platform.yijia.service.PayOrderService;
 import com.platform.yijia.service.StationService;
 import com.platform.yijia.utils.CodeMsg;
 import com.platform.yijia.utils.ResultData;
+import com.platform.yijia.utils.redis.RedisCacheUtil;
 import com.platform.yijia.utils.weixinapp.AesDecryptUtil;
 import com.platform.yijia.utils.weixinapp.WeiXinUserUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -38,6 +39,9 @@ public class AppUserInfoController {
     private StationService stationService;
     @Resource
     private CustomerPointsService customerPointsService;
+    @Resource
+    private RedisCacheUtil redisCacheUtil;
+
 //    String appId = "wxe1135cd390b38a54";        //微信小程序appID
 //    String appSecret = "0532c7d9ae876c4ad636df0b1e3b9ddb";      //微信小程序密钥
 
@@ -76,6 +80,52 @@ public class AppUserInfoController {
         return AesDecryptUtil.decryptEncryptedData(jsonObject.get("encryptedData").toString(), jsonObject.get("sessionKey").toString(), jsonObject.get("iv").toString(), "UTF-8").toString();
     }
 
+    //获取UnionId信息
+    @RequestMapping(value = "/getUnionIdAndAccessToken", method = RequestMethod.GET)
+    @ResponseBody
+    public String redisCacheUtil(@RequestParam String openId, Integer stationId){
+        Gson gson =new Gson();
+        //返回结果集
+        ResultData resultData = null;
+        Map<String, String> map= new HashMap<>();
+        if(openId !=null && stationId !=null){
+            String gzhAppId ="";
+            String gzhAppSecret ="";
+            String accessToken ="";
+            Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
+            if(m !=null && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
+                gzhAppId = m.get("gzhAppId");
+                gzhAppSecret = m.get("gzhAppSecret");
+                if(!redisCacheUtil.hasKey(gzhAppId)){
+                    accessToken = WeiXinUserUtil.getToken(gzhAppId, gzhAppSecret).getAccessToken();
+                    redisCacheUtil.setCacheObject(gzhAppId, accessToken);
+                    redisCacheUtil.expire(gzhAppId, 7200);
+                }else {
+                    accessToken  = redisCacheUtil.getCacheObject(gzhAppId);
+                }
+                net.sf.json.JSONObject unionIdInfo = WeiXinUserUtil.getUnionIdInfo(accessToken, openId);
+                if(unionIdInfo !=null && unionIdInfo.containsKey("nickname")){
+                    map.put("nickName", unionIdInfo.get("nickname").toString());
+                }
+                if(unionIdInfo !=null && unionIdInfo.containsKey("openid")){
+                    map.put("openid", unionIdInfo.get("openid").toString());
+                }
+                if(unionIdInfo !=null && unionIdInfo.containsKey("unionid")){
+                    map.put("unoinId", unionIdInfo.get("unionid").toString());
+                }
+//                if(unionIdInfo !=null && unionIdInfo.containsKey("headimgurl")){
+//                    map.put("headImgUrl", unionIdInfo.get("headimgurl").toString());
+//                }
+                map.put("accessToken", accessToken);
+                resultData=ResultData.success(map);
+            }
+        }else {
+            resultData=ResultData.success(CodeMsg.REQUEST_FAIL);
+        }
+        return gson.toJson(resultData);
+    }
+
+
     /*
      * 添加用户信息
      * @param request

+ 3 - 26
YijiaRestful/src/main/java/com/platform/yijia/controller/IntegralShoppingMallController.java

@@ -8,12 +8,8 @@ import com.platform.yijia.utils.ResultData;
 import com.platform.yijia.utils.redis.RedisCacheUtil;
 import com.platform.yijia.utils.weixinapp.WeiXinUserUtil;
 import com.platform.yijia.utils.weixinapp.WxPushUtil;
-import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
-import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
-import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -23,10 +19,8 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 /*
  * <Title> IntegralShoppingMallController </Title>
@@ -141,10 +135,9 @@ public class IntegralShoppingMallController {
             customerPointsService.updateCustomerPointsInfo(customerPoints);
         }
 
-        //油站名称
         String gzhAppId ="";
         String gzhAppSecret ="";
-        String stationName = "";
+        String stationName = "";        //油站名称
         Map<String, String> m = stationService.getStationAppIdAndAppSecret(request.getStationId());
         if(m !=null && m.containsKey("stationName") && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
             stationName = m.get("stationName");
@@ -178,7 +171,7 @@ public class IntegralShoppingMallController {
             wxMpTemplate.add(new WxMpTemplateData("keyword4", request.getWaresName()+"   x "+ request.getExchangeNum()));
             wxMpTemplate.add(new WxMpTemplateData("keyword5", orderSumIntegral));
             wxMpTemplate.add(new WxMpTemplateData("remark",
-                    "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的积分值还剩余 "+surplusPoints+" 分."));
+                    "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的积分值还剩余 "+surplusPoints+" 分"));
             String templateId = "9EWrreI-P8r4xDgoOcczC4jHt1v0HEjKzkgVRDzoNXA";  //积分兑换成功通知模板
             wxPushUtil.push(gzhAppId, gzhAppSecret, templateId, request.getOpenId(), wxMpTemplate);
             resultData=ResultData.success(CodeMsg.SUCCESS);
@@ -188,22 +181,6 @@ public class IntegralShoppingMallController {
         return gson.toJson(resultData);
     }
 
-    //测试redis缓存
-    @RequestMapping(value = "/redisCacheUtil", method = RequestMethod.GET)
-    @ResponseBody
-    public String redisCacheUtil(@RequestParam String unionId){
-        Gson gson =new Gson();
-        //返回结果集
-        ResultData resultData = null;
-        if(unionId !=null){
-            redisCacheUtil.setCacheObject("unionId", unionId);
-            String cacheObject = redisCacheUtil.getCacheObject("unionId");
-            resultData=ResultData.success(cacheObject);
-        }else {
-            resultData=ResultData.success(CodeMsg.REQUEST_FAIL);
-        }
-        return gson.toJson(resultData);
-    }
 
     //获取用户积分订单列表
     @RequestMapping(value = "/getUserIntegralOrderList", method = RequestMethod.GET)

+ 19 - 0
YijiaRestful/src/main/java/com/platform/yijia/utils/weixinapp/WeiXinUserUtil.java

@@ -26,9 +26,28 @@ public class WeiXinUserUtil {
     //根据 appID secret code
     //public final static String request_Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
 
+    //获取UnionId
+    public final static String unionId_Url ="https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
+
     //日志
     private static final Logger logger = LoggerFactory.getLogger(WeiXinUserUtil.class);
 
+
+    /*
+     * 获取UnionId信息
+     * @param accessToken
+     * @param openId
+     * @return
+     */
+    public static JSONObject getUnionIdInfo(String accessToken, String openId){
+        String requestUrl = unionId_Url.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
+        JSONObject jsonObject = HttpRequestUtil.getHttpsRequestData(requestUrl, "GET", null);
+        logger.info("获取UnionId信息:" + jsonObject.toString());
+        return jsonObject;
+    }
+
+
+
     /*
      * 获取用户的openid和session_key 格式例子:{"session_key":"rlxKT/xhq2bxAuvrMeEq8Q==","openid":"o9RM50ppeCgx065T2PvJjtzB_Gmo"}
      * @param appId     //凭证