文章目录
1、SellerInfoRepository
public interface SellerInfoRepository extends JpaRepository<SellerInfo,String> {
SellerInfo findByOpenid(String openid);
}
2、SellerService
public interface SellerService {
/**
* 查询卖家信息
* @param openid
* @return
*/
SellerInfo findSellerInfoByOpenid(String openid);
}
3、SellerServiceImpl
@Service
public class SellerServiceImpl implements SellerService {
@Autowired
private SellerInfoRepository repository;
public SellerInfo findSellerInfoByOpenid(String openid){
return repository.findByOpenid(openid);
}
}
4、WechatAccountConfig
@Data
@Component
@ConfigurationProperties(prefix = "wechat")
public class WechatAccountConfig {
//公众号appid
private String mpAppId;
//公众号appSecret
private String mpAppSecret;
//商户号
private String mchId;
//商户秘钥
private String mchKey;
//商户证书路径
private String keyPath;
//微信支付异步通知
private String notifyUrl;
//开放平台id
private String openAppId;
//开放平台秘钥
private String openAppSecret;
}
5、WechatOpenConfig
@Configuration
public class WechatOpenConfig {
@Autowired
private WechatAccountConfig accountConfig;
@Bean
public WxMpService wxOpenService() {
WxMpService wxOpenService = new WxMpServiceImpl();
wxOpenService.setWxMpConfigStorage(wxOpenConfigStorage());
return wxOpenService;
}
@Bean
public WxMpConfigStorage wxOpenConfigStorage() {
WxMpInMemoryConfigStorage wxMpInMemoryConfigStorage = new WxMpInMemoryConfigStorage();
wxMpInMemoryConfigStorage.setAppId(accountConfig.getOpenAppId());
wxMpInMemoryConfigStorage.setSecret(accountConfig.getOpenAppSecret());
return wxMpInMemoryConfigStorage;
}
}
6、ProjectUrlConfig
@Data
@Component
@ConfigurationProperties(prefix = "projecturl")
public class ProjectUrlConfig {
//微信公众屏号授权url
public String wechatMpAuthorize;
//微信开放平台url
public String wechatOpenAuthorize;
//点餐系统
public String sell;
}
在application.properties中配置
### projectUrl
# 公众平台
projecturl.wechat-mp-authorize=http://heng.nat300.top
# 开放平台
projecturl.wechat-open-authorize=http://heng.nat300.top
projecturl.sell=http://heng.nat300.top
@Controller
@RequestMapping("/wechat")
@Slf4j
public class WeChatController {
@Autowired
private WxMpService wxMpService;
@Autowired
private WxMpService wxOpenService;
@Autowired
private ProjectUrlConfig projectUrlConfig;
@GetMapping("/qrAuthorize")
public String qrAuthorize(@RequestParam("returnUrl") String returnUrl) {
//String url = projectUrlConfig.getWechatOpenAuthorize() + "/sell/wechat/qrUserInfo";
//String redirectUrl = wxOpenService.buildQrConnectUrl(url, WxConsts.QRCONNECT_SCOPE_SNSAPI_LOGIN, URLEncoder.encode(returnUrl));
String redirectUrl = wxOpenService.buildQrConnectUrl(returnUrl, WxConsts.QRCONNECT_SCOPE_SNSAPI_LOGIN,
URLEncoder.encode(projectUrlConfig.getSell() + "/sell/wechat/qrUserInfo"));
return "redirect:" + redirectUrl;
}
@GetMapping("/qrUserInfo")
public String qrUserInfo(@RequestParam("code") String code) {
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
wxMpOAuth2AccessToken = wxOpenService.oauth2getAccessToken(code);
} catch (WxErrorException e) {
log.error("【微信网页授权】{}", e);
throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(), e.getError().getErrorMsg());
}
log.info("wxMpOAuth2AccessToken={}", wxMpOAuth2AccessToken);
String openId = wxMpOAuth2AccessToken.getOpenId();
String redirectUrl = "http://www.imooc.com";
return "redirect:" + redirectUrl+ "?openid=" + openId;
}
}
访问连接:
https://open.weixin.qq.com/connect/qrconnect?appid=wx6ad144e54af67d87&redirect_uri=http%3A%2F%2Fsell.springboot.cn%2F自己的openid名称&response_type=code&scope=snsapi_login&state=http://heng.nat300.top/sell/wechat/qrUserInfo
7、登录与登出