package com.izouma.nineth.web; import com.google.zxing.WriterException; import com.izouma.nineth.config.GeneralProperties; import com.izouma.nineth.domain.Order; import com.izouma.nineth.enums.OrderStatus; import com.izouma.nineth.exception.BusinessException; import com.izouma.nineth.repo.OrderRepo; import com.izouma.nineth.service.OrderPayService; import com.izouma.nineth.service.SandPayService; import com.izouma.nineth.utils.SecurityUtils; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.awt.*; import java.io.IOException; import java.math.BigDecimal; import java.util.Map; @Controller @RequestMapping({"/payOrder/v2", "/pay/v2"}) @Slf4j @AllArgsConstructor public class OrderPayControllerV2 { private final OrderRepo orderRepo; private final SandPayService sandPayService; private final OrderPayService orderPayService; private final GeneralProperties generalProperties; @RequestMapping(value = "/alipay") @ResponseBody public String payOrderAlipayH5(Long id) { return orderPayService.payOrder(id); } @RequestMapping(value = "/ali") @ResponseBody public String payOrderAli(Long id) { return orderPayService.payOrderAli(id); } @RequestMapping(value = "/alipay_wx") public String payOrderAlipayWx(Long id, Model model) { Order order = orderRepo.findById(id).orElseThrow(new BusinessException("订单不存在")); if (order.getStatus() != OrderStatus.NOT_PAID) { return "redirect:" + generalProperties.resolveFrontUrl(order.getCompanyId(), "/store"); } String payUrl = orderPayService.payOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml"; } @RequestMapping(value = "/balance") @ResponseBody public void payOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) { orderPayService.payOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @ApiOperation("衫德h5快捷") @RequestMapping(value = "/sandQuick", produces = "text/html") @ResponseBody public String sandQuick(@RequestParam Long id) { return orderPayService.payOrderQuick(id); } @ApiOperation("衫德h5快捷+绑卡") @RequestMapping("/sandQuickBind") @ResponseBody public String sandQuickBind(@RequestParam Long id) { return orderPayService.payOrderQuickBind(id); } @ApiOperation("首信易协议支付") @RequestMapping(value = "/agreement") @ResponseBody public Map agreement(@RequestParam Long id, String bindCardId) { return orderPayService.payOrderAgreement(id, bindCardId); } @ApiOperation("首信易协议支付确认(通用)") @RequestMapping(value = "/confirmAgreement") @ResponseBody public void confirmAgreement(@RequestParam String requestId, @RequestParam String paymentOrderId, @RequestParam String code) { orderPayService.confirmOrderAgreement(requestId, paymentOrderId, code); } @RequestMapping(value = "/gift/alipay") @ResponseBody public String payGiftOrderAlipayH5(Long id) { return orderPayService.payGiftOrder(id); } @RequestMapping(value = "/gift/ali") @ResponseBody public String payGiftOrderAli(Long id) { return orderPayService.payGiftAli(id); } @RequestMapping(value = "/gift/alipay_wx") public String payGiftOrderAlipayWx(Long id, Model model) { String payUrl = orderPayService.payGiftOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml"; } @RequestMapping(value = "/gift/balance") @ResponseBody public void payGiftOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) { orderPayService.payGiftBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/gift/sandQuick", produces = "text/html") @ResponseBody public String payGiftQuick(@RequestParam Long id) { return orderPayService.payGiftQuick(id); } @RequestMapping("/gift/sandQuickBind") @ResponseBody public String payGiftQuickBind(@RequestParam Long id) { return orderPayService.payGiftQuickBind(id); } @RequestMapping(value = "/gift/agreement") @ResponseBody public Map payGiftAgreement(@RequestParam Long id, String bindCardId) { return orderPayService.payGiftOrderAgreement(id, bindCardId); } @RequestMapping(value = "/mint/alipay") @ResponseBody public String payMintOrderAlipayH5(Long id) { return orderPayService.payMintOrder(id); } @RequestMapping(value = "/mint/ali") @ResponseBody public String payMintAli(Long id) { return orderPayService.payMintAli(id); } @RequestMapping(value = "/mint/alipay_wx") public String payMintOrderAlipayWx(Long id, Model model) { String payUrl = orderPayService.payMintOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml2"; } @RequestMapping(value = "/mint/sandQuick", produces = "text/html") @ResponseBody public String payMintQuick(@RequestParam Long id) { return orderPayService.payMintQuick(id); } @RequestMapping("/mint/sandQuickBind") @ResponseBody public String payMintQuickBind(@RequestParam Long id) { return orderPayService.payMintQuickBind(id); } @RequestMapping(value = "/mint/balance") @ResponseBody public void payMintOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) { orderPayService.payMintOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/mint/agreement") @ResponseBody public Map payMintAgreement(@RequestParam Long id, String bindCardId) { return orderPayService.payMintOrderAgreement(id, bindCardId); } @RequestMapping("/recharge") @ResponseBody public String recharge(@RequestParam BigDecimal amount) { return orderPayService.recharge(SecurityUtils.getAuthenticatedUser().getId(), amount); } @RequestMapping(value = "/recharge/ali") @ResponseBody public String rechargeAli(@RequestParam BigDecimal amount) { return orderPayService.payRechargeAli(SecurityUtils.getAuthenticatedUser().getId(), amount); } @RequestMapping(value = "/recharge/agreement") @ResponseBody public Map payRechargeAgreement(@RequestParam Long userId, @RequestParam BigDecimal amount, String bindCardId) { return orderPayService.rechargeAgreement(userId, amount, bindCardId); } @RequestMapping(value = "/recharge/sandQuick", produces = "text/html") @ResponseBody public String payRechargeQuick(@RequestParam Long userId, @RequestParam BigDecimal amount, @RequestParam(defaultValue = "1") Long companyId) { return orderPayService.rechargeQuick(userId, amount, companyId); } @RequestMapping("/recharge/sandQuickBind") @ResponseBody public String payRechargeQuickBind(@RequestParam Long userId, @RequestParam BigDecimal amount, @RequestParam(defaultValue = "1") Long companyId) { return orderPayService.rechargeQuickBind(userId, amount, companyId); } @RequestMapping(value = "/auction/alipay", method = RequestMethod.GET) @ResponseBody public String payAuctionOrderAlipayH5(Long id) { return orderPayService.payAuctionOrder(id); } @RequestMapping(value = "/auction/ali") @ResponseBody public String payAuctionOrderAli(Long id) { return orderPayService.payAuctionAli(id); } @RequestMapping(value = "/auction/alipay_wx", method = RequestMethod.GET) public String payAuctionOrderAlipayWx(Long id, Model model) { String payUrl = orderPayService.payAuctionOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml"; } @RequestMapping(value = "/auction/sandQuick", method = RequestMethod.GET, produces = "text/html") @ResponseBody public String payAuctionQuick(@RequestParam Long id) { return orderPayService.payAuctionQuick(id); } @RequestMapping("/auction/sandQuickBind") @ResponseBody public String payAuctionQuickBind(@RequestParam Long id) { return orderPayService.payAuctionQuickBind(id); } @RequestMapping(value = "/auction/balance") @ResponseBody public void payAuctionOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) { orderPayService.payAuctionOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/auction/agreement") @ResponseBody public Map payAuctionAgreement(@RequestParam Long id, String bindCardId) { return orderPayService.payAuctionOrderAgreement(id, bindCardId); } @RequestMapping(value = "/pic/ali") @ResponseBody public String payPicOrderAli(Long id) { return orderPayService.payPicAli(id); } @RequestMapping(value = "/pic/alipay_wx", method = RequestMethod.GET) public String payPicOrderAlipayWx(Long id, Model model) { String payUrl = orderPayService.payPicOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml"; } @RequestMapping(value = "/pic/sandQuick", method = RequestMethod.GET, produces = "text/html") @ResponseBody public String payPicQuick(@RequestParam Long id) { return orderPayService.payPicQuick(id); } @RequestMapping("/pic/sandQuickBind") @ResponseBody public String payPicQuickBind(@RequestParam Long id) { return orderPayService.payPicQuickBind(id); } @RequestMapping(value = "/pic/balance") @ResponseBody public void payPicOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) { orderPayService.payPicOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/pic/agreement") @ResponseBody public Map payPicAgreement(@RequestParam Long id, String bindCardId) { return orderPayService.payPicOrderAgreement(id, bindCardId); } @RequestMapping(value = "/domain/ali") @ResponseBody public String payDomainOrderAli(Long id) { return orderPayService.payDomainAli(id); } @RequestMapping(value = "/domain/alipay_wx", method = RequestMethod.GET) public String payDomainOrderAlipayWx(Long id, Model model) { String payUrl = orderPayService.payDomainOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml"; } @RequestMapping(value = "/domain/sandQuick", method = RequestMethod.GET, produces = "text/html") @ResponseBody public String payDomainQuick(@RequestParam Long id) { return orderPayService.payDomainQuick(id); } @RequestMapping("/domain/sandQuickBind") @ResponseBody public String payDomainQuickBind(@RequestParam Long id) { return orderPayService.payDomainQuickBind(id); } @RequestMapping(value = "/domain/balance") @ResponseBody public void payDomainOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) throws FontFormatException, IOException, WriterException { orderPayService.payDomainOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/domain/agreement") @ResponseBody public Map payDomainAgreement(@RequestParam Long id, String bindCardId) { return orderPayService.payDomainOrderAgreement(id, bindCardId); } @RequestMapping(value = "/tradeAuction/balance") @ResponseBody public void payTradeAuctionOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) { orderPayService.payTradeAuctionOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/ask/balance") @ResponseBody public void payDomainAskBalance(@RequestParam Long id, @RequestParam String tradeCode) throws FontFormatException, IOException, WriterException { orderPayService.payDomainAskBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode); } @RequestMapping(value = "/ask/ali") @ResponseBody public String payAskAli(Long id) { return orderPayService.payAskAli(id); } @RequestMapping(value = "/ask/alipay_wx", method = RequestMethod.GET) public String payAskAlipayWx(Long id, Model model) { String payUrl = orderPayService.payAskOrder(id); model.addAttribute("payUrl", payUrl); model.addAttribute("orderId", id); return "AlipayHtml"; } @RequestMapping(value = "/ask/sandQuick", method = RequestMethod.GET, produces = "text/html") @ResponseBody public String payAskQuick(@RequestParam Long id) { return orderPayService.payAskQuick(id); } @RequestMapping("/ask/sandQuickBind") @ResponseBody public String payAskQuickBind(@RequestParam Long id) { return orderPayService.payAskQuickBind(id); } @RequestMapping(value = "/ask/agreement") @ResponseBody public Map payAskAgreement(@RequestParam Long id, String bindCardId) { return orderPayService.payAskOrderAgreement(id, bindCardId); } }