Althars123 3 年之前
父节点
当前提交
9101421b01

+ 18 - 1
twzd-admin/src/main/java/com/miaxis/app/controller/wx/WxgzhController.java

@@ -1,6 +1,8 @@
 package com.miaxis.app.controller.wx;
 
+import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.utils.wx.SignUtil;
 import com.miaxis.wx.service.IWxGzhService;
 import io.swagger.annotations.Api;
@@ -24,14 +26,16 @@ import javax.servlet.http.HttpServletRequest;
 @RestController
 @RequiredArgsConstructor
 @RequestMapping(Constants.OPEN_PREFIX + "/wx/gzh")
-@Api(tags={"wx微信公众号相关"})
+@Api(tags={"【H5-wx微信公众号相关"})
 @Slf4j
 public class WxgzhController {
 
     private final IWxGzhService wxGzhService;
 
+
     private final HttpServletRequest request;
 
+
     @Value("${cos.bucketName}")
     private String bucketName;
     @Value("${cos.path}")
@@ -83,5 +87,18 @@ public class WxgzhController {
         return null;
     }
 
+    /**
+     * 获取公众号访问jspapi 需要的参数
+     * @return
+     */
+    @PostMapping(value = "/jspapi")
+    @ApiOperation("获取jspapi参数")
+    public Response<JSONObject> getJspapi() {
+
+        return Response.success(wxGzhService.getJspapi());
+
+
+    }
+
 
 }

+ 29 - 0
twzd-common/src/main/java/com/miaxis/common/utils/wx/SHA1Util.java

@@ -0,0 +1,29 @@
+package com.miaxis.common.utils.wx;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class SHA1Util {
+    public static String SHA1(String decript) {
+        try {
+            MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
+            digest.update(decript.getBytes());
+            byte messageDigest[] = digest.digest();
+            // Create Hex String
+            StringBuffer hexString = new StringBuffer();
+            // 字节数组转换为 十六进制 数
+            for (int i = 0; i < messageDigest.length; i++) {
+                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
+                if (shaHex.length() < 2) {
+                    hexString.append(0);
+                }
+                hexString.append(shaHex);
+            }
+            return hexString.toString();
+
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+}

+ 1 - 2
twzd-service/src/main/java/com/miaxis/wx/service/IWxGzhService.java

@@ -25,6 +25,5 @@ public interface IWxGzhService {
     String handlePublicMsg(HttpServletRequest request);
 
 
-
-
+    JSONObject getJspapi();
 }

+ 9 - 0
twzd-service/src/main/java/com/miaxis/wx/service/WxService.java

@@ -41,4 +41,13 @@ public interface WxService {
             @RequestParam("openid") String openid
     );
 
+    /**
+     * 获取jsapi_ticket
+     */
+    @GetMapping(value = "/cgi-bin/ticket/getticket")
+    String getticket(
+            @RequestParam("access_token") String accessToken,
+            @RequestParam("type") String type
+    );
+
 }

+ 36 - 0
twzd-service/src/main/java/com/miaxis/wx/service/impl/WxGzhServiceImpl.java

@@ -7,6 +7,7 @@ import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.utils.StringUtils;
 import com.miaxis.common.utils.wx.MessageUtil;
+import com.miaxis.common.utils.wx.SHA1Util;
 import com.miaxis.feign.dto.WxMessageCusom;
 import com.miaxis.feign.service.IWxSendService;
 import com.miaxis.school.domain.SchoolInfo;
@@ -19,9 +20,11 @@ import com.miaxis.wx.dto.QueryParams;
 import com.miaxis.wx.service.IWxForeverCodeService;
 import com.miaxis.wx.service.IWxGzhService;
 import com.miaxis.wx.service.IWxMessageEvenService;
+import com.miaxis.wx.service.WxService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -60,6 +63,8 @@ public class WxGzhServiceImpl implements IWxGzhService {
 
     private final ISchoolInfoService schoolInfoService;
 
+    private final WxService wxService;
+
     @Value("${app.appid}")
     private String appid;
 
@@ -278,6 +283,7 @@ public class WxGzhServiceImpl implements IWxGzhService {
         return null;
     }
 
+
     private String dealSchoolMsg(String bizmsgmenuid, String content, String fromUserName, String toUserName) throws Exception {
         UserInfo userInfo = userInfoService.getOne(new QueryWrapper<UserInfo>().eq("openid", fromUserName));
         // 1选择城市 2选择区 3选择学校
@@ -444,6 +450,36 @@ public class WxGzhServiceImpl implements IWxGzhService {
     }
 
 
+    @Override
+    public JSONObject getJspapi() {
+
+        //1、获取AccessToken
+        String gzhToken = this.getGzhToken();
+        //2、获取Ticket
+        String jsapiStr = wxService.getticket(gzhToken, "jsapi");
+        //3、时间戳和随机字符串
+        String nonce_str = RandomStringUtils.randomAlphanumeric(32);
+        long timestamp =  System.currentTimeMillis()/1000;
+
+        //4、获取url
+        String url="https://jpcj-h51.zzxcx.net/mini";
+        String str = "jsapi_ticket="+jsapiStr+"&noncestr="+nonce_str+"&timestamp="+timestamp+"&url="+url;
+
+        //6、将字符串进行sha1加密
+        String signature = SHA1Util.SHA1(str);
+
+        JSONObject jsapiData = JSONObject.parseObject(jsapiStr);
+        String ticket= jsapiData.getString("ticket");
+        JSONObject resultJSONObject = new JSONObject();
+        resultJSONObject.put("ticket",ticket);
+        resultJSONObject.put("appId",appid);
+        resultJSONObject.put("timestamp",timestamp);
+        resultJSONObject.put("nonceStr",nonce_str);
+        resultJSONObject.put("signature",signature);
+        return resultJSONObject;
+    }
+
+