From 2abb4faacf9da4713947fffc11ebd2ddf3eae8e5 Mon Sep 17 00:00:00 2001 From: akhan Date: Tue, 1 Apr 2025 14:53:49 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=BE=AE=E4=BF=A1JSSDK?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/mp/controller/WxJssdkController.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java diff --git a/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java new file mode 100644 index 000000000..365b1f6eb --- /dev/null +++ b/pigx-visual/pigx-mp-platform/src/main/java/com/pig4cloud/pigx/mp/controller/WxJssdkController.java @@ -0,0 +1,56 @@ +package com.pig4cloud.pigx.mp.controller; + +import cn.hutool.core.util.StrUtil; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.security.annotation.Inner; +import com.pig4cloud.pigx.mp.config.WxMpInitConfigRunner; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.bean.WxJsapiSignature; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * 微信JSSDK配置 + * + * @author akhan + * @date 13:59 2025/4/1 + */ +@Slf4j +@Inner(value = false) +@RestController +@AllArgsConstructor +@RequestMapping("/{appId}/jssdk-config") +public class WxJssdkController { + + @GetMapping + public R getJssdkConfig(@PathVariable("appId") String appId, + @RequestParam(name = "url", required = false) String url){ + if (StrUtil.isAllBlank(url)) { + throw new IllegalArgumentException("请求参数非法,请核实!"); + } + + final WxMpService wxService = WxMpInitConfigRunner.getMpServices().get(appId); + + if (wxService == null) { + throw new IllegalArgumentException(String.format("未找到对应appid=[%d]的配置,请核实!", appId)); + } + + try { + WxJsapiSignature signature = wxService.createJsapiSignature(url); + + return R.ok(Map.of( + "appId", signature.getAppId(), + "timestamp", signature.getTimestamp(), + "nonceStr", signature.getNonceStr(), + "signature", signature.getSignature() + )); + } catch (WxErrorException e) { + log.error("获取微信js api出现错误: {}", e.getLocalizedMessage()); + return R.failed("获取微信js api出现错误: " + e.getLocalizedMessage()); + } + } +}