From 6d2ec1b3b6979bce9c8f9244c8a17f5ccfa67063 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 26 十二月 2024 17:21:36 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master-v4' into master-v4 --- src/main/java/com/mzl/flower/service/system/WeChatService.java | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 46 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/system/WeChatService.java b/src/main/java/com/mzl/flower/service/system/WeChatService.java index b47e88e..51c39d0 100644 --- a/src/main/java/com/mzl/flower/service/system/WeChatService.java +++ b/src/main/java/com/mzl/flower/service/system/WeChatService.java @@ -4,10 +4,13 @@ import cn.binarywang.wx.miniapp.api.WxMaUserService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; +import cn.hutool.http.HttpUtil; +import com.google.gson.Gson; import com.mzl.flower.base.cache.StringCacheClient; import com.mzl.flower.config.WxMiniappProperties; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.constant.Constants; +import com.mzl.flower.dto.request.CreateWechatUserDTO; import com.mzl.flower.service.BaseService; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; @@ -22,6 +25,7 @@ import java.io.File; import java.io.IOException; +import java.util.HashMap; import java.util.Map; @Service @@ -41,6 +45,9 @@ @Autowired private WxMiniappProperties wxMiniappProperties; + @Autowired + private Gson gson; + /** * 小程序获取会话信息-花店端 * @param code @@ -49,7 +56,6 @@ */ public WxMaJscode2SessionResult getWxMaSessionInfo(String code) throws WxErrorException { WxMaJscode2SessionResult result = maService.jsCode2SessionInfo(code); - return result; } @@ -155,5 +161,44 @@ throw new ValidationException(e.getMessage()); } } + public Map<String,Object> getuserphonenumber(CreateWechatUserDTO dto) { + if (StringUtils.isEmpty(dto.getCode())) { + throw new ValidationException("微信code为空"); + } + String accessToken=""; + try { + accessToken=maService.getAccessToken(); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + + if(StringUtils.isEmpty(accessToken)){ + accessToken=getAccessToken( + wxMiniappProperties.getCustomer().getAppid(), + wxMiniappProperties.getCustomer().getSecret()); + if(StringUtils.isEmpty(accessToken)){ + throw new ValidationException("获取微信AccessToken失败"); + } + } + + + String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+ accessToken; + try{ + Map<String,Object> params=new HashMap<String,Object>(); + params.put("code",dto.getCode()); + String result = HttpUtil.post(url, gson.toJson(params)); + System.out.println(result); + Map<String,Object> resultMap=gson.fromJson(result,Map.class); + if(!resultMap.get("errmsg").equals("ok")){ + String errmsg = (String)resultMap.get("errmsg"); + log.error(resultMap.get("errcode") + ":" + errmsg); + throw new ValidationException(errmsg); + } + return resultMap; + }catch (Exception e){ + log.error(e.getMessage(), e); + throw new ValidationException(e.getMessage()); + } + } } -- Gitblit v1.9.3