OrderPayControllerV2.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. package com.izouma.nineth.web;
  2. import com.google.zxing.WriterException;
  3. import com.izouma.nineth.config.GeneralProperties;
  4. import com.izouma.nineth.domain.Order;
  5. import com.izouma.nineth.enums.OrderStatus;
  6. import com.izouma.nineth.exception.BusinessException;
  7. import com.izouma.nineth.repo.OrderRepo;
  8. import com.izouma.nineth.service.OrderPayService;
  9. import com.izouma.nineth.service.SandPayService;
  10. import com.izouma.nineth.utils.SecurityUtils;
  11. import io.swagger.annotations.ApiOperation;
  12. import lombok.AllArgsConstructor;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.ui.Model;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestMethod;
  18. import org.springframework.web.bind.annotation.RequestParam;
  19. import org.springframework.web.bind.annotation.ResponseBody;
  20. import java.awt.*;
  21. import java.io.IOException;
  22. import java.math.BigDecimal;
  23. import java.util.Map;
  24. @Controller
  25. @RequestMapping({"/payOrder/v2", "/pay/v2"})
  26. @Slf4j
  27. @AllArgsConstructor
  28. public class OrderPayControllerV2 {
  29. private final OrderRepo orderRepo;
  30. private final SandPayService sandPayService;
  31. private final OrderPayService orderPayService;
  32. private final GeneralProperties generalProperties;
  33. @RequestMapping(value = "/alipay")
  34. @ResponseBody
  35. public String payOrderAlipayH5(Long id) {
  36. return orderPayService.payOrder(id);
  37. }
  38. @RequestMapping(value = "/ali")
  39. @ResponseBody
  40. public String payOrderAli(Long id) {
  41. return orderPayService.payOrderAli(id);
  42. }
  43. @RequestMapping(value = "/alipay_wx")
  44. public String payOrderAlipayWx(Long id, Model model) {
  45. Order order = orderRepo.findById(id).orElseThrow(new BusinessException("订单不存在"));
  46. if (order.getStatus() != OrderStatus.NOT_PAID) {
  47. return "redirect:" + generalProperties.resolveFrontUrl(order.getCompanyId(), "/store");
  48. }
  49. String payUrl = orderPayService.payOrder(id);
  50. model.addAttribute("payUrl", payUrl);
  51. model.addAttribute("orderId", id);
  52. return "AlipayHtml";
  53. }
  54. @RequestMapping(value = "/balance")
  55. @ResponseBody
  56. public void payOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  57. orderPayService.payOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  58. }
  59. @ApiOperation("衫德h5快捷")
  60. @RequestMapping(value = "/sandQuick", produces = "text/html")
  61. @ResponseBody
  62. public String sandQuick(@RequestParam Long id) {
  63. return orderPayService.payOrderQuick(id);
  64. }
  65. @ApiOperation("衫德h5快捷+绑卡")
  66. @RequestMapping("/sandQuickBind")
  67. @ResponseBody
  68. public String sandQuickBind(@RequestParam Long id) {
  69. return orderPayService.payOrderQuickBind(id);
  70. }
  71. @ApiOperation("首信易协议支付")
  72. @RequestMapping(value = "/agreement")
  73. @ResponseBody
  74. public Map<String, Object> agreement(@RequestParam Long id, String bindCardId) {
  75. return orderPayService.payOrderAgreement(id, bindCardId);
  76. }
  77. @ApiOperation("首信易协议支付确认(通用)")
  78. @RequestMapping(value = "/confirmAgreement")
  79. @ResponseBody
  80. public void confirmAgreement(@RequestParam String requestId, @RequestParam String paymentOrderId,
  81. @RequestParam String code) {
  82. orderPayService.confirmOrderAgreement(requestId, paymentOrderId, code);
  83. }
  84. @RequestMapping(value = "/gift/alipay")
  85. @ResponseBody
  86. public String payGiftOrderAlipayH5(Long id) {
  87. return orderPayService.payGiftOrder(id);
  88. }
  89. @RequestMapping(value = "/gift/ali")
  90. @ResponseBody
  91. public String payGiftOrderAli(Long id) {
  92. return orderPayService.payGiftAli(id);
  93. }
  94. @RequestMapping(value = "/gift/alipay_wx")
  95. public String payGiftOrderAlipayWx(Long id, Model model) {
  96. String payUrl = orderPayService.payGiftOrder(id);
  97. model.addAttribute("payUrl", payUrl);
  98. model.addAttribute("orderId", id);
  99. return "AlipayHtml";
  100. }
  101. @RequestMapping(value = "/gift/balance")
  102. @ResponseBody
  103. public void payGiftOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  104. orderPayService.payGiftBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  105. }
  106. @RequestMapping(value = "/gift/sandQuick", produces = "text/html")
  107. @ResponseBody
  108. public String payGiftQuick(@RequestParam Long id) {
  109. return orderPayService.payGiftQuick(id);
  110. }
  111. @RequestMapping("/gift/sandQuickBind")
  112. @ResponseBody
  113. public String payGiftQuickBind(@RequestParam Long id) {
  114. return orderPayService.payGiftQuickBind(id);
  115. }
  116. @RequestMapping(value = "/gift/agreement")
  117. @ResponseBody
  118. public Map<String, Object> payGiftAgreement(@RequestParam Long id, String bindCardId) {
  119. return orderPayService.payGiftOrderAgreement(id, bindCardId);
  120. }
  121. @RequestMapping(value = "/mint/alipay")
  122. @ResponseBody
  123. public String payMintOrderAlipayH5(Long id) {
  124. return orderPayService.payMintOrder(id);
  125. }
  126. @RequestMapping(value = "/mint/ali")
  127. @ResponseBody
  128. public String payMintAli(Long id) {
  129. return orderPayService.payMintAli(id);
  130. }
  131. @RequestMapping(value = "/mint/alipay_wx")
  132. public String payMintOrderAlipayWx(Long id, Model model) {
  133. String payUrl = orderPayService.payMintOrder(id);
  134. model.addAttribute("payUrl", payUrl);
  135. model.addAttribute("orderId", id);
  136. return "AlipayHtml2";
  137. }
  138. @RequestMapping(value = "/mint/sandQuick", produces = "text/html")
  139. @ResponseBody
  140. public String payMintQuick(@RequestParam Long id) {
  141. return orderPayService.payMintQuick(id);
  142. }
  143. @RequestMapping("/mint/sandQuickBind")
  144. @ResponseBody
  145. public String payMintQuickBind(@RequestParam Long id) {
  146. return orderPayService.payMintQuickBind(id);
  147. }
  148. @RequestMapping(value = "/mint/balance")
  149. @ResponseBody
  150. public void payMintOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  151. orderPayService.payMintOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  152. }
  153. @RequestMapping(value = "/mint/agreement")
  154. @ResponseBody
  155. public Map<String, Object> payMintAgreement(@RequestParam Long id, String bindCardId) {
  156. return orderPayService.payMintOrderAgreement(id, bindCardId);
  157. }
  158. @RequestMapping("/recharge")
  159. @ResponseBody
  160. public String recharge(@RequestParam BigDecimal amount) {
  161. return orderPayService.recharge(SecurityUtils.getAuthenticatedUser().getId(), amount);
  162. }
  163. @RequestMapping(value = "/recharge/ali")
  164. @ResponseBody
  165. public String rechargeAli(@RequestParam BigDecimal amount) {
  166. return orderPayService.payRechargeAli(SecurityUtils.getAuthenticatedUser().getId(), amount);
  167. }
  168. @RequestMapping(value = "/recharge/agreement")
  169. @ResponseBody
  170. public Map<String, Object> payRechargeAgreement(@RequestParam Long userId, @RequestParam BigDecimal amount,
  171. String bindCardId) {
  172. return orderPayService.rechargeAgreement(userId, amount, bindCardId);
  173. }
  174. @RequestMapping(value = "/recharge/sandQuick", produces = "text/html")
  175. @ResponseBody
  176. public String payRechargeQuick(@RequestParam Long userId, @RequestParam BigDecimal amount,
  177. @RequestParam(defaultValue = "1") Long companyId) {
  178. return orderPayService.rechargeQuick(userId, amount, companyId);
  179. }
  180. @RequestMapping("/recharge/sandQuickBind")
  181. @ResponseBody
  182. public String payRechargeQuickBind(@RequestParam Long userId, @RequestParam BigDecimal amount,
  183. @RequestParam(defaultValue = "1") Long companyId) {
  184. return orderPayService.rechargeQuickBind(userId, amount, companyId);
  185. }
  186. @RequestMapping(value = "/auction/alipay", method = RequestMethod.GET)
  187. @ResponseBody
  188. public String payAuctionOrderAlipayH5(Long id) {
  189. return orderPayService.payAuctionOrder(id);
  190. }
  191. @RequestMapping(value = "/auction/ali")
  192. @ResponseBody
  193. public String payAuctionOrderAli(Long id) {
  194. return orderPayService.payAuctionAli(id);
  195. }
  196. @RequestMapping(value = "/auction/alipay_wx", method = RequestMethod.GET)
  197. public String payAuctionOrderAlipayWx(Long id, Model model) {
  198. String payUrl = orderPayService.payAuctionOrder(id);
  199. model.addAttribute("payUrl", payUrl);
  200. model.addAttribute("orderId", id);
  201. return "AlipayHtml";
  202. }
  203. @RequestMapping(value = "/auction/sandQuick", method = RequestMethod.GET, produces = "text/html")
  204. @ResponseBody
  205. public String payAuctionQuick(@RequestParam Long id) {
  206. return orderPayService.payAuctionQuick(id);
  207. }
  208. @RequestMapping("/auction/sandQuickBind")
  209. @ResponseBody
  210. public String payAuctionQuickBind(@RequestParam Long id) {
  211. return orderPayService.payAuctionQuickBind(id);
  212. }
  213. @RequestMapping(value = "/auction/balance")
  214. @ResponseBody
  215. public void payAuctionOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  216. orderPayService.payAuctionOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  217. }
  218. @RequestMapping(value = "/auction/agreement")
  219. @ResponseBody
  220. public Map<String, Object> payAuctionAgreement(@RequestParam Long id, String bindCardId) {
  221. return orderPayService.payAuctionOrderAgreement(id, bindCardId);
  222. }
  223. @RequestMapping(value = "/pic/ali")
  224. @ResponseBody
  225. public String payPicOrderAli(Long id) {
  226. return orderPayService.payPicAli(id);
  227. }
  228. @RequestMapping(value = "/pic/alipay_wx", method = RequestMethod.GET)
  229. public String payPicOrderAlipayWx(Long id, Model model) {
  230. String payUrl = orderPayService.payPicOrder(id);
  231. model.addAttribute("payUrl", payUrl);
  232. model.addAttribute("orderId", id);
  233. return "AlipayHtml";
  234. }
  235. @RequestMapping(value = "/pic/sandQuick", method = RequestMethod.GET, produces = "text/html")
  236. @ResponseBody
  237. public String payPicQuick(@RequestParam Long id) {
  238. return orderPayService.payPicQuick(id);
  239. }
  240. @RequestMapping("/pic/sandQuickBind")
  241. @ResponseBody
  242. public String payPicQuickBind(@RequestParam Long id) {
  243. return orderPayService.payPicQuickBind(id);
  244. }
  245. @RequestMapping(value = "/pic/balance")
  246. @ResponseBody
  247. public void payPicOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  248. orderPayService.payPicOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  249. }
  250. @RequestMapping(value = "/pic/agreement")
  251. @ResponseBody
  252. public Map<String, Object> payPicAgreement(@RequestParam Long id, String bindCardId) {
  253. return orderPayService.payPicOrderAgreement(id, bindCardId);
  254. }
  255. @RequestMapping(value = "/domain/ali")
  256. @ResponseBody
  257. public String payDomainOrderAli(Long id) {
  258. return orderPayService.payDomainAli(id);
  259. }
  260. @RequestMapping(value = "/domain/alipay_wx", method = RequestMethod.GET)
  261. public String payDomainOrderAlipayWx(Long id, Model model) {
  262. String payUrl = orderPayService.payDomainOrder(id);
  263. model.addAttribute("payUrl", payUrl);
  264. model.addAttribute("orderId", id);
  265. return "AlipayHtml";
  266. }
  267. @RequestMapping(value = "/domain/sandQuick", method = RequestMethod.GET, produces = "text/html")
  268. @ResponseBody
  269. public String payDomainQuick(@RequestParam Long id) {
  270. return orderPayService.payDomainQuick(id);
  271. }
  272. @RequestMapping("/domain/sandQuickBind")
  273. @ResponseBody
  274. public String payDomainQuickBind(@RequestParam Long id) {
  275. return orderPayService.payDomainQuickBind(id);
  276. }
  277. @RequestMapping(value = "/domain/balance")
  278. @ResponseBody
  279. public void payDomainOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) throws FontFormatException, IOException, WriterException {
  280. orderPayService.payDomainOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  281. }
  282. @RequestMapping(value = "/domain/agreement")
  283. @ResponseBody
  284. public Map<String, Object> payDomainAgreement(@RequestParam Long id, String bindCardId) {
  285. return orderPayService.payDomainOrderAgreement(id, bindCardId);
  286. }
  287. @RequestMapping(value = "/tradeAuction/balance")
  288. @ResponseBody
  289. public void payTradeAuctionOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
  290. orderPayService.payTradeAuctionOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  291. }
  292. @RequestMapping(value = "/ask/balance")
  293. @ResponseBody
  294. public void payDomainAskBalance(@RequestParam Long id, @RequestParam String tradeCode) throws FontFormatException, IOException, WriterException {
  295. orderPayService.payDomainAskBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
  296. }
  297. @RequestMapping(value = "/ask/ali")
  298. @ResponseBody
  299. public String payAskAli(Long id) {
  300. return orderPayService.payAskAli(id);
  301. }
  302. @RequestMapping(value = "/ask/alipay_wx", method = RequestMethod.GET)
  303. public String payAskAlipayWx(Long id, Model model) {
  304. String payUrl = orderPayService.payAskOrder(id);
  305. model.addAttribute("payUrl", payUrl);
  306. model.addAttribute("orderId", id);
  307. return "AlipayHtml";
  308. }
  309. @RequestMapping(value = "/ask/sandQuick", method = RequestMethod.GET, produces = "text/html")
  310. @ResponseBody
  311. public String payAskQuick(@RequestParam Long id) {
  312. return orderPayService.payAskQuick(id);
  313. }
  314. @RequestMapping("/ask/sandQuickBind")
  315. @ResponseBody
  316. public String payAskQuickBind(@RequestParam Long id) {
  317. return orderPayService.payAskQuickBind(id);
  318. }
  319. @RequestMapping(value = "/ask/agreement")
  320. @ResponseBody
  321. public Map<String, Object> payAskAgreement(@RequestParam Long id, String bindCardId) {
  322. return orderPayService.payAskOrderAgreement(id, bindCardId);
  323. }
  324. }