以前项目都是ssm版本的,最近从网上找了一些资料,修改了一版springboot版本的微信授权
代码:
<!--微信授权--> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>3.7.0</version> </dependency> |
############微信公众号支付配置############ wechat: #公众号APPID appId: wx890e1ee5ee081dfe #公众号秘钥 appSecret: 810135b716ab24e22b121c7916972cb5 #商户号Id mchId: 1518762741 #商户号秘钥 mchKey: abcdefghijklmnopqrstuvwxyz123456 #微信支付回调地址 notifyUrl: http://nanhongshun.com/pay/notify # 证书所在位置,退款使用 keyPath: C:/weixin_cert/h5.p12 #微信授权回调地址 callback: http://nanhongshun.com/wxAuth/callBack |
package com.nan.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @Component @ConfigurationProperties(prefix = "wechat") public class WechatAccountConfig { //公众号APPID private String appId; //公众号秘钥 private String appSecret; //微信授权回调地址 private String callback; //商户号id private String mchId; //商户号密钥 private String mchKey; //商户证书路径 private String keyPath; //微信支付异步回调地址 private String notifyUrl; } |
package com.nan.controller; import com.nan.config.WechatAccountConfig; import com.nan.service.PushMessageService; import com.nan.service.UserService; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import me.chanjar.weixin.mp.bean.result.WxMpUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.websocket.Session; @Slf4j @Controller @RequestMapping("/wxAuth") public class WxLoginController { @Autowired private WechatAccountConfig wechatAccountConfig; // @Autowired // private UserService userService; @Autowired private WxMpService wxMpService; // @Autowired // private PushMessageService messageService; /** * 微信授权获取code * */ @RequestMapping("/login") public String wxLogin(){ String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(wechatAccountConfig.getCallback(), WxConsts.OAuth2Scope.SNSAPI_USERINFO, null); log.info("【微信网页授权】获取code,result={}",redirectUrl); return "redirect:"+ redirectUrl; } /** * 微信授权回调 * */ @RequestMapping("/callBack") public ModelAndView wxCallBack(@RequestParam("code")String code, ModelAndView model, HttpServletRequest request){ WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken(); try { wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code); }catch(WxErrorException e){ log.error("【微信网页授权】{}",e.getMessage()); e.printStackTrace(); } WxMpUser wxMpUser = new WxMpUser(); try{ wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null); }catch(Exception e){ log.error("【微信授权】{}",e.getMessage()); e.printStackTrace(); } model.setViewName("chongzhi"); model.addObject("nickname",wxMpUser.getNickname()); model.addObject("headimgurl",wxMpUser.getHeadImgUrl()); model.addObject("openid",wxMpUser.getOpenId()); //模板消息 // messageService.loginTemplate(wxMpUser.getNickname(),wxMpUser.getOpenId()); return model; } } |
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../jquery-1.7.2.min.js"></script> </head> <body> <div style="width: 100%;height: 400px;margin-top: 100px;text-align:center"> <img th:src="${headimgurl}" style="width: 180px;height: 180px;margin-top: 40px"></img><br> <div th:text="${nickname}" style="font-size: 50px;padding-top: 40px;"></div> <div th:text="${openid}" style="font-size: 50px;padding-top: 40px;"></div> </div> </body> </html> |