OrderPayControllerV2.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.izouma.nineth.web;
  2. import com.alibaba.fastjson.JSON;
  3. import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
  4. import com.github.binarywang.wxpay.constant.WxPayConstants;
  5. import com.github.binarywang.wxpay.exception.WxPayException;
  6. import com.huifu.adapay.core.exception.BaseAdaPayException;
  7. import com.izouma.nineth.domain.Order;
  8. import com.izouma.nineth.enums.OrderStatus;
  9. import com.izouma.nineth.exception.BusinessException;
  10. import com.izouma.nineth.repo.OrderRepo;
  11. import com.izouma.nineth.service.*;
  12. import com.izouma.nineth.utils.SecurityUtils;
  13. import io.swagger.annotations.ApiOperation;
  14. import lombok.AllArgsConstructor;
  15. import lombok.extern.slf4j.Slf4j;
  16. import me.chanjar.weixin.common.error.WxErrorException;
  17. import me.chanjar.weixin.mp.api.WxMpService;
  18. import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
  19. import me.chanjar.weixin.mp.bean.result.WxMpUser;
  20. import org.apache.commons.codec.EncoderException;
  21. import org.springframework.stereotype.Controller;
  22. import org.springframework.ui.Model;
  23. import org.springframework.web.bind.annotation.*;
  24. import java.math.BigDecimal;
  25. import java.util.Map;
  26. import java.util.regex.Pattern;
  27. @Controller
  28. @RequestMapping({"/payOrder/v2", "/pay/v2"})
  29. @Slf4j
  30. @AllArgsConstructor
  31. public class OrderPayControllerV2 {
  32. private final OrderRepo orderRepo;
  33. private final SandPayService sandPayService;
  34. private final OrderPayService orderPayService;
  35. @RequestMapping(value = "/alipay")
  36. @ResponseBody
  37. public String payOrderAlipayH5(Long id) {
  38. return orderPayService.payOrder(id);
  39. }
  40. @RequestMapping(value = "/alipay_wx")
  41. public String payOrderAlipayWx(Long id, Model model) {
  42. Order order = orderRepo.findById(id).orElseThrow(new BusinessException("订单不存在"));
  43. if (order.getStatus() != OrderStatus.NOT_PAID) {
  44. return "redirect:/9th/store";
  45. }
  46. String payUrl = orderPayService.payOrder(id);
  47. model.addAttribute("payUrl", payUrl);
  48. model.addAttribute("orderId", id);
  49. return "AlipayHtml";
  50. }
  51. @RequestMapping(value = "/balance")
  52. @ResponseBody
  53. public void payOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  54. orderPayService.payOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  55. }
  56. @ApiOperation("衫德h5快捷")
  57. @RequestMapping(value = "/sandQuick", produces = "text/html")
  58. @ResponseBody
  59. public String sandQuick(@RequestParam Long id) {
  60. return sandPayService.payOrderQuick(id);
  61. }
  62. @ApiOperation("首信易协议支付")
  63. @RequestMapping(value = "/agreement", produces = "text/html")
  64. @ResponseBody
  65. public Map<String, Object> agreement(@RequestParam Long id, String bindCardId) {
  66. return orderPayService.payOrderAgreement(id, bindCardId);
  67. }
  68. @ApiOperation("首信易协议支付确认(通用)")
  69. @RequestMapping(value = "/confirmAgreement", produces = "text/html")
  70. @ResponseBody
  71. public void confirmAgreement(@RequestParam String requestId, @RequestParam String paymentOrderId,
  72. @RequestParam String code) {
  73. orderPayService.confirmOrderAgreement(requestId, paymentOrderId, code);
  74. }
  75. @RequestMapping(value = "/gift/alipay")
  76. @ResponseBody
  77. public String payGiftOrderAlipayH5(Long id) {
  78. return orderPayService.payGiftOrder(id);
  79. }
  80. @RequestMapping(value = "/gift/alipay_wx")
  81. public String payGiftOrderAlipayWx(Long id, Model model) {
  82. String payUrl = orderPayService.payGiftOrder(id);
  83. model.addAttribute("payUrl", payUrl);
  84. model.addAttribute("orderId", id);
  85. return "AlipayHtml";
  86. }
  87. @RequestMapping(value = "/gift/balance")
  88. public void payGiftOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  89. orderPayService.payGiftBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  90. }
  91. @RequestMapping(value = "/gift/sandQuick", produces = "text/html")
  92. @ResponseBody
  93. public String payGiftQuick(@RequestParam Long id) {
  94. return sandPayService.payGiftQuick(id);
  95. }
  96. @RequestMapping(value = "/gift/agreement", produces = "text/html")
  97. @ResponseBody
  98. public Map<String, Object> payGiftAgreement(@RequestParam Long id, String bindCardId) {
  99. return orderPayService.payGiftOrderAgreement(id, bindCardId);
  100. }
  101. @RequestMapping(value = "/mint/alipay")
  102. @ResponseBody
  103. public String payMintOrderAlipayH5(Long id) {
  104. return orderPayService.payMintOrder(id);
  105. }
  106. @RequestMapping(value = "/mint/alipay_wx")
  107. public String payMintOrderAlipayWx(Long id, Model model) {
  108. String payUrl = orderPayService.payMintOrder(id);
  109. model.addAttribute("payUrl", payUrl);
  110. model.addAttribute("orderId", id);
  111. return "AlipayHtml2";
  112. }
  113. @RequestMapping(value = "/mint/sandQuick", produces = "text/html")
  114. @ResponseBody
  115. public String payMintQuick(@RequestParam Long id) {
  116. return sandPayService.payMintQuick(id);
  117. }
  118. @RequestMapping(value = "/mint/balance")
  119. public void payMintOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  120. orderPayService.payMintOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  121. }
  122. @RequestMapping("/recharge")
  123. @ResponseBody
  124. public String recharge(@RequestParam BigDecimal amount) {
  125. return orderPayService.recharge(SecurityUtils.getAuthenticatedUser().getId(), amount);
  126. }
  127. }