1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.iamberry.wechat.handles.pay;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.lang3.StringUtils;
- 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 com.iamberry.wechat.core.entity.WechatUtils;
- import com.iamberry.wechat.core.entity.member.Member;
- import com.iamberry.wechat.face.home.HomeService;
- import com.iamberry.wechat.tools.NameUtils;
- import com.iamberry.wechat.tools.WeixinUtil;
- /**
- * @author 何秀刚
- * 微信授权handler
- */
- @Controller
- public class WechatBackHandler {
-
- @Autowired
- private HomeService homeService;
- /**
- * 微信授权功能
- * @param request
- * @param response
- * @return
- * @throws Exception
- */
- @RequestMapping("/wechatBack")
- public ModelAndView getOpenId(@RequestParam(value = "callback", required = false) String callback,
- HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- String callbackURL = NameUtils.getConfig("redirectUrl_index");
- if (callback != null) {
- callbackURL = "redirect:" + WechatUtils.getCallback(callback);
- }
-
- ModelAndView mv = new ModelAndView(callbackURL);
- // 获取微信code
- String code = request.getParameter("code");
- if (StringUtils.isEmpty(code)) {
- // 判断code是否为空
- mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction(null));
- return mv;
- }
- // 通过code get微信的openid
- String[] str = WeixinUtil.getOpenId(code, NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"));
- String openId = str[0];
- if (StringUtils.isEmpty(openId)) {
- mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction(null));
- return mv;
- }
- Member info = homeService.selectMemberInfoByOpenId(openId);
- if (info == null) {
- // 创建新的用户
- info = new Member();
- info.setUserOpenid(openId);
- info.setUserSex(0);
- info.setUserStatus(1);
- int flag = homeService.insertMemberInfo(info);
- if (flag < 1) {
- homeService.insertMemberInfo(info);
- }
- }
- info.setUserOpenid(openId);
- // 提前获取session中的地址
- WechatUtils.saveUserToSession(info, request, response);
- // 获取成功后转向地址
- mv.setViewName(callbackURL);
- return mv;
- }
- }
|