OrderPayController.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.izouma.nineth.web;
  2. import com.github.binarywang.wxpay.constant.WxPayConstants;
  3. import com.github.binarywang.wxpay.exception.WxPayException;
  4. import com.izouma.nineth.service.AssetService;
  5. import com.izouma.nineth.service.OrderService;
  6. import lombok.AllArgsConstructor;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.apache.commons.codec.EncoderException;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.ui.Model;
  11. import org.springframework.web.bind.annotation.*;
  12. import java.util.regex.Pattern;
  13. @Controller
  14. @RequestMapping("/payOrder")
  15. @Slf4j
  16. @AllArgsConstructor
  17. public class OrderPayController {
  18. private final OrderService orderService;
  19. private final AssetService assetService;
  20. @RequestMapping(value = "/alipay", method = RequestMethod.GET)
  21. public String payOrderAlipay(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) {
  22. detectUA(userAgent, model);
  23. orderService.payOrderAlipay(id, model);
  24. return "AlipayHtml";
  25. }
  26. @RequestMapping(value = "/weixin_h5")
  27. public String payOrderWeixinH5(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) throws EncoderException, WxPayException {
  28. detectUA(userAgent, model);
  29. model.addAttribute("payUrl", orderService.payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, null));
  30. return "WeixinPayHtml";
  31. }
  32. @RequestMapping(value = "/weixin")
  33. @ResponseBody
  34. public Object payOrderWeixin(@RequestParam Long id, @RequestParam String openId) throws WxPayException, EncoderException {
  35. return orderService.payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, openId);
  36. }
  37. @RequestMapping(value = "/gift/alipay", method = RequestMethod.GET)
  38. public String payGiftOrderAlipay(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) {
  39. detectUA(userAgent, model);
  40. orderService.payOrderAlipay(id, model);
  41. return "AlipayHtml";
  42. }
  43. @RequestMapping(value = "/gift/weixin_h5")
  44. public String payGiftOrderWeixinH5(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) throws EncoderException, WxPayException {
  45. detectUA(userAgent, model);
  46. model.addAttribute("payUrl", assetService.payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, null));
  47. return "WeixinPayHtml";
  48. }
  49. public void detectUA(String ua, Model model) {
  50. boolean weixin = Pattern.matches(".*(micromessenger).*", ua.toLowerCase());
  51. boolean ios = Pattern.matches(".*(ipad|iphone).*", ua.toLowerCase());
  52. boolean android = Pattern.matches(".*(android).*", ua.toLowerCase());
  53. model.addAttribute("weixin", weixin);
  54. model.addAttribute("ios", ios);
  55. model.addAttribute("android", android);
  56. }
  57. @RequestMapping(value = "/gift/weixin")
  58. @ResponseBody
  59. public Object payGiftOrderWeixin(@RequestParam Long id, @RequestParam String openId) throws WxPayException, EncoderException {
  60. return assetService.payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, openId);
  61. }
  62. }