| 
					
				 | 
			
			
				@@ -55,39 +55,14 @@ import java.util.concurrent.TimeUnit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @RequestMapping("/payment") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Api(value = "付款接口", tags = "付款接口") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class PaymentController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final static Logger log = LoggerFactory.getLogger(PaymentController.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private UserOrderPaymentService paymentService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private UserOrderRefundService userOrderRefundService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private UserOrderService userOrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private PaymentClient paymentClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private RedissonClient redissonClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private PaymentProperties paymentProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @ApiOperation(value = "查询付款单") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @GetMapping("/queryPayment") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public HttpResponseResult<Payment> queryPayment(String paymentNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        UserOrderPayment userOrderPayment = paymentService.getOne(Wrappers.<UserOrderPayment>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .eq(UserOrderPayment::getPaymentNo, paymentNo) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (null == userOrderPayment) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return HttpResponseResult.succeed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Payment param = new Payment(userOrderPayment.getOpenType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                PaymentClientEnum.valueOf(userOrderPayment.getPaymentClient()), userOrderPayment.getPayChannel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        param.setId(userOrderPayment.getTransNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        param.setPaymentNo(userOrderPayment.getPaymentNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BaseResult<Payment> paymentBaseResult = paymentClient.queryPayment(param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return HttpResponseResult.status(paymentBaseResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @ApiOperation(value = "通过用户给的授权码获取三方支付授权信息") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @GetMapping("/getOpenId") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult<Map<String, Object>> getOpenId(OpenAuth openAuth) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,74 +75,4 @@ public class PaymentController extends BaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BaseResult<Map<String, Object>> res = paymentClient.getOpenAuthMsg(openAuth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return HttpResponseResult.status(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /*** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 支付回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @author liweifan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param: request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @updateTime 2022/3/11 18:35 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @PostMapping("/callback/{openType}/{client}/{payChannel}/{payMethod}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Object callback( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @PathVariable("openType") String openType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @PathVariable("client") String client, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @PathVariable("payChannel") String payChannel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @PathVariable("payMethod") String payMethod, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            HttpServletRequest request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        log.info("支付回调:openType is {} ,paymentClient is {},payChannel is {},payMethod is {}", openType, client, payChannel, payMethod); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BaseResult<PaymentCallBack> res = paymentClient.analysisNotice( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                OpenEnum.valueOf(openType), PaymentClientEnum.valueOf(client), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                PayChannelEnum.valueOf(payChannel), MethodNameEnum.valueOf(payMethod), request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (res.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PaymentCallBack data = res.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //查询到订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (null == userOrderVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return res.getData().getResMsg(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                DistributedLock.of(redissonClient) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(userOrderVo.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                , () -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if (MethodNameEnum.executePayment.equals(data.getMethodName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //支付交易 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        paymentService.executePaymentCallBack(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } else if (MethodNameEnum.closePayment.equals(data.getMethodName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //关闭订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        paymentService.closePaymentCallBack(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } else if (MethodNameEnum.refundPayment.equals(data.getMethodName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //退款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        userOrderRefundService.refundPaymentCallBack(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                }, 60L, TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (BizException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.error("回调业务异常,msg is {}", e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return res.getData().getResMsg(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /*** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 支付回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @author liweifan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param: request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @updateTime 2022/3/11 18:35 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @PostMapping("/testCallback") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void testCallback(@RequestBody PaymentCallBack data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (MethodNameEnum.executePayment.equals(data.getMethodName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //支付交易 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            paymentService.executePaymentCallBack(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (MethodNameEnum.closePayment.equals(data.getMethodName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //关闭订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            paymentService.closePaymentCallBack(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (MethodNameEnum.refundPayment.equals(data.getMethodName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //退款 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userOrderRefundService.refundPaymentCallBack(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |