| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- package com.izouma.nineth.web;
- import com.alibaba.fastjson.JSON;
- import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
- import com.github.binarywang.wxpay.constant.WxPayConstants;
- import com.github.binarywang.wxpay.exception.WxPayException;
- import com.huifu.adapay.core.exception.BaseAdaPayException;
- 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.*;
- import io.swagger.annotations.ApiOperation;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import me.chanjar.weixin.common.error.WxErrorException;
- import me.chanjar.weixin.mp.api.WxMpService;
- import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
- import me.chanjar.weixin.mp.bean.result.WxMpUser;
- import org.apache.commons.codec.EncoderException;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.*;
- import java.util.regex.Pattern;
- @Controller
- @RequestMapping("/payOrder")
- @Slf4j
- @AllArgsConstructor
- public class OrderPayController {
- private final OrderService orderService;
- private final WxMpService wxMpService;
- private final GiftOrderService giftOrderService;
- private final OrderRepo orderRepo;
- private final MintOrderService mintOrderService;
- private final SandPayService sandPayService;
- private final OrderPayService orderPayService;
- private final GeneralProperties generalProperties;
- @RequestMapping(value = "/alipay_h5", method = RequestMethod.GET)
- @ResponseBody
- public String payOrderAlipayH5(Long id, Model model) throws BaseAdaPayException {
- // return (String) orderService.payAdapay(id, "alipay_wap", null);
- return orderPayService.payOrder(id);
- }
- @RequestMapping(value = "/alipay_wx", method = RequestMethod.GET)
- public String payOrderAlipayWx(Long id, Model model) throws BaseAdaPayException {
- // Order order = orderRepo.findById(id).orElseThrow(new BusinessException("订单不存在"));
- // if (order.getStatus() != OrderStatus.NOT_PAID) {
- // return "redirect:/9th/store";
- // }
- // String payUrl = (String) orderService.payAdapay(id, "alipay_wap", null);
- // model.addAttribute("payUrl", payUrl);
- // model.addAttribute("orderId", id);
- // return "AlipayHtml";
- 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 = "/alipay_qr", method = RequestMethod.GET)
- @ResponseBody
- public String payOrderAlipayQR(Long id, Model model) throws BaseAdaPayException {
- return (String) orderService.payAdapay(id, "alipay_qr", null);
- }
- @RequestMapping(value = "/alipay_app", method = RequestMethod.GET)
- @ResponseBody
- public String payOrderAlipayApp(Long id, Model model) throws BaseAdaPayException {
- return orderPayService.payOrder(id);
- }
- @RequestMapping(value = "/weixin_h5")
- public String payOrderWeixinH5(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) throws EncoderException, WxPayException {
- detectUA(userAgent, model);
- model.addAttribute("payUrl", orderService.payOrderWeixin(id, WxPayConstants.TradeType.MWEB, null));
- return "WeixinPayHtml";
- }
- @RequestMapping(value = "/weixin")
- @ResponseBody
- public Object payOrderWeixin(@RequestParam Long id, @RequestParam(defaultValue = "wx_lite") String channel, @RequestParam(required = false) String openId) throws BaseAdaPayException {
- return orderService.payAdapay(id, channel, openId);
- }
- @RequestMapping(value = "/weixin_pc")
- public String payOrderWeixinPC(@RequestParam Long id, @RequestParam String code, Model model) throws WxPayException, EncoderException, WxErrorException {
- WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);
- WxMpUser user = wxMpService.oauth2getUserInfo(accessToken, null);
- WxPayMpOrderResult payParams = (WxPayMpOrderResult) orderService
- .payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, user.getOpenId());
- model.addAttribute("payParams", JSON.toJSONString(payParams));
- return "PayOrderPC";
- }
- @ApiOperation("衫德h5快捷")
- @RequestMapping(value = "/sandQuick", method = RequestMethod.GET, produces = "text/html")
- @ResponseBody
- public String sandQuick(@RequestParam Long id, Model model) throws BaseAdaPayException {
- // return (String) orderService.payAdapay(id, "alipay_wap", null);
- return orderPayService.payOrderQuick(id);
- }
- @ApiOperation("衫德h5快捷")
- @RequestMapping(value = "/agreementPay", method = RequestMethod.GET, produces = "text/html")
- @ResponseBody
- public String agreementPay(@RequestParam Long id) {
- // return (String) orderService.payAdapay(id, "alipay_wap", null);
- return orderPayService.payOrderQuick(id);
- }
- @RequestMapping(value = "/gift/alipay_h5", method = RequestMethod.GET)
- @ResponseBody
- public String payGiftOrderAlipayH5(Long id, Model model) throws BaseAdaPayException {
- // return (String) giftOrderService.payAdapay(id, "alipay_wap", null);
- return orderPayService.payGiftOrder(id);
- }
- @RequestMapping(value = "/gift/alipay_wx", method = RequestMethod.GET)
- public String payGiftOrderAlipayWx(Long id, Model model) throws BaseAdaPayException {
- // String payUrl = (String) giftOrderService.payAdapay(id, "alipay_wap", null);
- String payUrl = orderPayService.payGiftOrder(id);
- model.addAttribute("payUrl", payUrl);
- model.addAttribute("orderId", id);
- return "AlipayHtml";
- }
- @RequestMapping(value = "/gift/alipay_qr", method = RequestMethod.GET)
- @ResponseBody
- public String payGiftOrderAlipayQR(Long id, Model model) throws BaseAdaPayException {
- return orderPayService.payGiftOrder(id);
- }
- @RequestMapping(value = "/gift/alipay_app", method = RequestMethod.GET)
- @ResponseBody
- public String payGiftOrderAlipayApp(Long id, Model model) throws BaseAdaPayException {
- return orderPayService.payGiftOrder(id);
- }
- @RequestMapping(value = "/gift/weixin_h5")
- public String payGiftOrderWeixinH5(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) throws EncoderException, WxPayException {
- detectUA(userAgent, model);
- model.addAttribute("payUrl", giftOrderService.payOrderWeixin(id, WxPayConstants.TradeType.MWEB, null));
- return "WeixinPayHtml";
- }
- @RequestMapping(value = "/gift/weixin")
- @ResponseBody
- public Object payGiftOrderWeixin(@RequestParam Long id, @RequestParam(defaultValue = "wx_lite") String channel, @RequestParam(required = false) String openId) throws BaseAdaPayException {
- return giftOrderService.payAdapay(id, channel, openId);
- }
- @RequestMapping(value = "/gift/weixin_pc")
- public String payGiftOrderWeixinPC(@RequestParam Long id, @RequestParam String code, Model model) throws WxPayException, EncoderException, WxErrorException {
- WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);
- WxMpUser user = wxMpService.oauth2getUserInfo(accessToken, null);
- WxPayMpOrderResult payParams = (WxPayMpOrderResult) giftOrderService
- .payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, user.getOpenId());
- model.addAttribute("payParams", JSON.toJSONString(payParams));
- return "PayOrderPC";
- }
- @RequestMapping(value = "/mint/alipay_h5", method = RequestMethod.GET)
- @ResponseBody
- public String payMintOrderAlipayH5(Long id, Model model) throws BaseAdaPayException {
- // return (String) mintOrderService.payAdapay(id, "alipay_wap", null);
- return orderPayService.payMintOrder(id);
- }
- @RequestMapping(value = "/mint/alipay_wx", method = RequestMethod.GET)
- public String payMintOrderAlipayWx(Long id, Model model) throws BaseAdaPayException {
- // String payUrl = (String) mintOrderService.payAdapay(id, "alipay_wap", null);
- String payUrl = orderPayService.payMintOrder(id);
- model.addAttribute("payUrl", payUrl);
- model.addAttribute("orderId", id);
- return "AlipayHtml2";
- }
- @RequestMapping(value = "/mint/alipay_qr", method = RequestMethod.GET)
- @ResponseBody
- public String payMintOrderAlipayQR(Long id, Model model) throws BaseAdaPayException {
- return (String) mintOrderService.payAdapay(id, "alipay_qr", null);
- }
- @RequestMapping(value = "/mint/alipay_app", method = RequestMethod.GET)
- @ResponseBody
- public String payMintOrderAlipayApp(Long id, Model model) throws BaseAdaPayException {
- // return (String) mintOrderService.payAdapay(id, "alipay", null);
- return orderPayService.payMintOrder(id);
- }
- @RequestMapping(value = "/mint/weixin_h5")
- public String payMintOrderWeixinH5(Long id, Model model, @RequestHeader(value = "User-Agent") String userAgent) throws EncoderException, WxPayException {
- detectUA(userAgent, model);
- model.addAttribute("payUrl", mintOrderService.payOrderWeixin(id, WxPayConstants.TradeType.MWEB, null));
- return "WeixinPayHtml";
- }
- @RequestMapping(value = "/mint/weixin")
- @ResponseBody
- public Object payMintOrderWeixin(@RequestParam Long id, @RequestParam(defaultValue = "wx_lite") String channel, @RequestParam(required = false) String openId) throws BaseAdaPayException {
- return mintOrderService.payAdapay(id, channel, openId);
- }
- @RequestMapping(value = "/mint/weixin_pc")
- public String payMintOrderWeixinPC(@RequestParam Long id, @RequestParam String code, Model model) throws WxPayException, EncoderException, WxErrorException {
- WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);
- WxMpUser user = wxMpService.oauth2getUserInfo(accessToken, null);
- WxPayMpOrderResult payParams = (WxPayMpOrderResult) mintOrderService
- .payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, user.getOpenId());
- model.addAttribute("payParams", JSON.toJSONString(payParams));
- return "PayOrderPC";
- }
- public void detectUA(String ua, Model model) {
- boolean weixin = Pattern.matches(".*(micromessenger).*", ua.toLowerCase());
- boolean ios = Pattern.matches(".*(ipad|iphone).*", ua.toLowerCase());
- boolean android = Pattern.matches(".*(android).*", ua.toLowerCase());
- model.addAttribute("weixin", weixin);
- model.addAttribute("ios", ios);
- model.addAttribute("android", android);
- }
- }
|