AliPayController.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.llisoft.pay.controller;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import javax.servlet.http.HttpServletRequest;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.GetMapping;
  10. import org.springframework.web.bind.annotation.PostMapping;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.ResponseBody;
  13. import com.llisoft.pay.service.AliPayService;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. @Api(tags="支付宝回调")
  17. @Controller
  18. @RequestMapping("/alipay")
  19. public class AliPayController {
  20. private Logger logger = LoggerFactory.getLogger(AliPayController.class);
  21. @Autowired
  22. private AliPayService aliPayService;
  23. @ApiOperation(value="同步回调")
  24. @GetMapping("/return")
  25. public String returns(HttpServletRequest request) throws Exception {
  26. Map<String, String> resultMap = this.getParamMap(request);
  27. logger.debug("收到支付宝同步回调: {}", resultMap);
  28. return "redirect:" + aliPayService.doReturn(resultMap);
  29. }
  30. @ApiOperation(value="异步通知")
  31. @PostMapping(value="/notify")
  32. public @ResponseBody String notify(HttpServletRequest request) throws Exception {
  33. Map<String, String> resultMap = this.getParamMap(request);
  34. logger.debug("收到支付宝异步通知: {}", resultMap);
  35. try {
  36. if (aliPayService.doNotify(resultMap)) {
  37. logger.debug("支付宝异步通知处理成功!");
  38. return "success";
  39. }
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. logger.error("支付宝异步通知处理失败!");
  44. return null;
  45. }
  46. /**
  47. * 获取参数Map<String, String>
  48. * @param request
  49. * @return
  50. */
  51. private Map<String, String> getParamMap(HttpServletRequest request){
  52. Map<String, String> returnMap = new HashMap<String, String>();
  53. Map<String, String[]> paramMap = request.getParameterMap();
  54. for (String key: paramMap.keySet()) {
  55. String[] values = paramMap.get(key);
  56. if (values!=null && values.length>0) {
  57. returnMap.put(key, values[0]);
  58. }
  59. }
  60. return returnMap;
  61. }
  62. }