package cc.mrbird.febs.pay.controller; import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.SpringContextHolder; import cc.mrbird.febs.pay.util.WechatEventUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * 微信事件通知 - 控制层 */ @Slf4j @RestController @RequestMapping(value = "/api/wechat/reply") public class AutoReplyController { private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); // @Value("${wechat.appId}") // private String wechatAppId; // // @Value("${wechat.appSecret}") // private String wechatAppSecret; // // // 这个Token就是微信后台 服务器配置 中的Token // @Value("${wechat.token}") // private String wechatToken; /** * 服务器校验 * @param req 请求 * @return 校验结果 */ @GetMapping("/event") public String verification(HttpServletRequest req) { return WechatEventUtil.verification(req, xcxProperties.getWechatToken()); } /** * 消息事件 * @param req 请求 * @return 结果 */ @PostMapping("/event") public void messageEvent(HttpServletRequest req, HttpServletResponse resp) throws IOException { req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); String message = "success"; PrintWriter out = resp.getWriter(); try { String messageEvent = WechatEventUtil.messageEvent(req); if(messageEvent != null) { message = messageEvent; } } catch (Exception e) { e.printStackTrace(); } finally { log.info("消息事件:"+message); out.write(message); if (out != null) { out.close(); } } } }