Kaynağa Gözat

Merge remote-tracking branch 'origin/master' into prod

tanbin 1 yıl önce
ebeveyn
işleme
18970d01cc

+ 3 - 4
authorize-api-service/pom.xml

@@ -66,11 +66,10 @@
             <artifactId>xy-captcha</artifactId>
             <version>1.0</version>
         </dependency>
-
         <dependency>
-            <groupId>com.github.binarywang</groupId>
-            <artifactId>weixin-java-miniapp</artifactId>
-            <version>4.4.0</version>
+            <groupId>com.xy</groupId>
+            <artifactId>xy-weixin-miniapp</artifactId>
+            <version>1.0</version>
         </dependency>
     </dependencies>
     <build>

+ 52 - 0
authorize-api-service/src/main/java/com/xy/service/WxAuthorizeServiceImpl.java

@@ -0,0 +1,52 @@
+package com.xy.service;
+
+import cn.hutool.core.util.IdUtil;
+import com.xy.dto.WxAuthorizeDto;
+import com.xy.utils.R;
+import com.xy.utils.WxMaUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import org.springframework.stereotype.Service;
+
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.util.Formatter;
+
+/**
+ * 微信授权 接口实现
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "微信授权")
+public class WxAuthorizeServiceImpl implements WxAuthorizeService {
+
+    @Override
+    @SneakyThrows
+    @ApiOperation("jssdk工具签名")
+    public R<WxAuthorizeDto.JssdkSignVo> jssdkSign(WxAuthorizeDto.JssdkSign jssdkSign) {
+        String jsapiTicket = WxMaUtils.switchoverTo(jssdkSign.getAppId(), jssdkSign.getAppId()).getJsapiService().getJsapiTicket();
+        String nonceStr = IdUtil.simpleUUID();
+        String timestamp = Long.toString(System.currentTimeMillis() / 1000);
+        String str = "jsapi_ticket=" + jsapiTicket +
+                "&noncestr=" + nonceStr +
+                "&timestamp=" + timestamp +
+                "&url=" + jssdkSign.getUrl();
+        MessageDigest crypt = MessageDigest.getInstance("SHA-1");
+        crypt.reset();
+        crypt.update(str.getBytes(StandardCharsets.UTF_8));
+        Formatter formatter = new Formatter();
+        for (byte b : crypt.digest()) {
+            formatter.format("%02x", b);
+        }
+        String signature = formatter.toString();
+        formatter.close();
+        WxAuthorizeDto.JssdkSignVo jssdkSignVo = new WxAuthorizeDto.JssdkSignVo()
+                .setAppId(jssdkSign.getAppId())
+                .setTimestamp(timestamp)
+                .setNonceStr(nonceStr)
+                .setSignature(signature);
+        return R.ok(jssdkSignVo);
+    }
+}

+ 44 - 0
authorize-api/src/main/java/com/xy/dto/WxAuthorizeDto.java

@@ -0,0 +1,44 @@
+package com.xy.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@Accessors(chain = true)
+public class WxAuthorizeDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class JssdkSign {
+
+        @NotBlank(message = "appId不能为空")
+        @ApiModelProperty("appId")
+        private String appId;
+
+        @NotBlank(message = "url不能为空")
+        @ApiModelProperty("当前网页的URL")
+        private String url;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class JssdkSignVo {
+
+        @ApiModelProperty("appId")
+        private String appId;
+
+        @ApiModelProperty("时间戳")
+        private String timestamp;
+
+        @ApiModelProperty("随机字符串")
+        private String nonceStr;
+
+        @ApiModelProperty("签名")
+        private String signature;
+    }
+
+}

+ 19 - 0
authorize-api/src/main/java/com/xy/service/WxAuthorizeService.java

@@ -0,0 +1,19 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+import com.xy.dto.WxAuthorizeDto;
+import com.xy.utils.R;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * 微信授权 接口
+ */
+@RestMappingController("wx-authorize")
+public interface WxAuthorizeService {
+
+    @PostMapping("jssdkSign")
+    R<WxAuthorizeDto.JssdkSignVo> jssdkSign(@RequestBody @Validated WxAuthorizeDto.JssdkSign jssdkSign);
+
+}