| 
					
				 | 
			
			
				@ -7,7 +7,9 @@ import com.yihu.jw.care.service.doorCoach.PatientDoorCoachOrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.service.pay.PayService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.util.XMLUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.order.BusinessOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.order.BusinessOrderRefundDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.dao.BusinessOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.dao.BusinessOrderRefundDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.ResponseContant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.ObjEnvelop; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -45,6 +47,8 @@ public class PayEndpoint extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PayService payService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BusinessOrderDao businessOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BusinessOrderRefundDao orderRefundDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping("topStatusBarNum") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "顶部状态栏订单分类tab") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -89,21 +93,6 @@ public class PayEndpoint extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = "applyRefund") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "申请退款") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop applyRefund( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "id", value = "订单id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "id", required = true) Integer id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String res = payService.cancleOrder(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtil.isBlank(res)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return success("取消成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Envelop.getError(res,-1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return failedException2(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = "cancleOrder") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "取消订单") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -129,21 +118,23 @@ public class PayEndpoint extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "orderId", value = "订单id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "orderId", required = false) Integer orderId,HttpServletRequest request) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return  payService.wxWapPay(relationId, orderId, request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return payService.wxWapPay(relationId, orderId, request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return failedObjEnvelopException2(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = "wxRefund") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "微信发起退款") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop wxRefund( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "desc", value = "退款说明") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "desc", required = true) String desc, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "orderNo", value = "订单id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "orderNo", required = true) String orderNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = "applyRefund") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "申请退款") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop applyRefund( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "description", value = "退款说明") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "description", required = true) String description, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "enclosure", value = "退款附件") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "enclosure", required = false) String enclosure, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "id", value = "订单id") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "id", required = true) Integer id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              payService.orderRefund(orderNo, desc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            payService.applyRefund(id, description, enclosure); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return success("发起退款成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return failedObjEnvelopException2(e); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -249,28 +240,26 @@ public class PayEndpoint extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String outTradeNo = params.get("out_trade_no"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String payWaterId = outTradeNo.split("_")[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            payService.addHttpLog("2",payWaterId,paramsJson,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BusinessOrderDO orderDO = businessOrderDao.selectByOrderNo(payWaterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BusinessOrderRefundDO orderDO = orderRefundDao.selectByOrderNo(payWaterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (orderDO == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                log.error("支付流水不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                log.error("退款订单不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return XMLUtil.setXML("SUCCESS", "OK"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String wxSeqNo = params.get("transaction_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setTraceNo(wxSeqNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orderDO.setOutRefundNo(params.get("refund_id")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            orderDO.setResponseParam(paramsJson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String totalFee = params.get("total_fee"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String totalFee = params.get("refund_fee"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BigDecimal payTotalFee = new BigDecimal(totalFee).setScale(2).divide(new BigDecimal(100), BigDecimal.ROUND_HALF_EVEN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            log.info("【微信支付退款】支付金额:{}", payTotalFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (new BigDecimal(orderDO.getPayPrice()).compareTo(payTotalFee) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (new BigDecimal(orderDO.getRefundPrice()).compareTo(payTotalFee) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //通知资金与实际资金不对称,可能是攻击行为! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                orderDO.setRematk("通知资金与实际资金不对称,可能是攻击行为!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                businessOrderDao.save(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                log.info("通知资金与实际资金不对称,可能是攻击行为!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return XMLUtil.setXML("SUCCESS", "OK"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 多线程执行操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /*********** 业务处理 start ************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            payService.payNotify(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            payService.refundNotify(orderDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /*********** 业务处理 end ************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return XMLUtil.setXML("SUCCESS", "OK"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (BusinessException e) { 
			 |