|  | @@ -39,6 +39,8 @@ import com.fs.hisStore.enums.*;
 | 
	
		
			
				|  |  |  import com.fs.hisStore.mapper.*;
 | 
	
		
			
				|  |  |  import com.fs.hisStore.param.*;
 | 
	
		
			
				|  |  |  import com.fs.huifuPay.domain.HuiFuRefundResult;
 | 
	
		
			
				|  |  | +import com.fs.huifuPay.domain.HuifuConfirmrefundResult;
 | 
	
		
			
				|  |  | +import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentDelaytransConfirmrefundRequest;
 | 
	
		
			
				|  |  |  import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
 | 
	
		
			
				|  |  |  import com.fs.huifuPay.service.HuiFuService;
 | 
	
		
			
				|  |  |  import com.fs.pay.service.IPayService;
 | 
	
	
		
			
				|  | @@ -796,27 +798,46 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
 | 
	
		
			
				|  |  |                                  huifuId=fsPayConfig.getHuifuId();
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                        V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
 | 
	
		
			
				|  |  | -                        DecimalFormat df = new DecimalFormat("0.00");
 | 
	
		
			
				|  |  | -                        request.setOrgHfSeqId(payment.getTradeNo());
 | 
	
		
			
				|  |  | -                        request.setHuifuId(huifuId);
 | 
	
		
			
				|  |  | -                        request.setOrdAmt(df.format(refundAmount));
 | 
	
		
			
				|  |  | -                        request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
 | 
	
		
			
				|  |  | -                        request.setReqSeqId("refund-"+payment.getPayCode());
 | 
	
		
			
				|  |  | -                        Map<String, Object> extendInfoMap = new HashMap<>();
 | 
	
		
			
				|  |  | -                        extendInfoMap.put("org_party_order_id", payment.getBankSerialNo());
 | 
	
		
			
				|  |  | -                        request.setExtendInfo(extendInfoMap);
 | 
	
		
			
				|  |  | -                        HuiFuRefundResult refund = huiFuService.refund(request);
 | 
	
		
			
				|  |  | -                        logger.info("退款:"+refund);
 | 
	
		
			
				|  |  | -                        if((refund.getResp_code().equals("00000000")||refund.getResp_code().equals("00000100"))&&(refund.getTrans_stat().equals("S")||refund.getTrans_stat().equals("P"))){
 | 
	
		
			
				|  |  | -                            payment.setRefundMoney(refundAmount);
 | 
	
		
			
				|  |  | -                            payment.setStatus(-1);
 | 
	
		
			
				|  |  | -                            payment.setRefundTime(new Date());
 | 
	
		
			
				|  |  | -                            paymentService.updateFsStorePayment(payment);
 | 
	
		
			
				|  |  | -                        }else {
 | 
	
		
			
				|  |  | -                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                            return R.error(refund.getResp_desc());
 | 
	
		
			
				|  |  | +                        if (payment.getIsShare() == 1 && payment.getShareStatus() == 1) {
 | 
	
		
			
				|  |  | +                            V2TradePaymentDelaytransConfirmrefundRequest confirmRefundRequest = new V2TradePaymentDelaytransConfirmrefundRequest();
 | 
	
		
			
				|  |  | +                            String orderCode = OrderCodeUtils.getOrderSn();
 | 
	
		
			
				|  |  | +                            if (StringUtils.isEmpty(orderCode)) {
 | 
	
		
			
				|  |  | +                                throw new CustomException("订单生成失败,请重试");
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            confirmRefundRequest.setReqSeqId(orderCode);
 | 
	
		
			
				|  |  | +                            confirmRefundRequest.setOrgReqSeqId(payment.getShareCode());
 | 
	
		
			
				|  |  | +                            confirmRefundRequest.setOrgReqDate(payment.getShareDate());
 | 
	
		
			
				|  |  | +                            //多汇付使用appID
 | 
	
		
			
				|  |  | +                            HuifuConfirmrefundResult result = huiFuService.confirmRefund(confirmRefundRequest, payment.getAppId());
 | 
	
		
			
				|  |  | +                            if (result.getResp_code().equals("00000000") && (result.getTrans_stat().equals("S") || result.getTrans_stat().equals("P"))) {
 | 
	
		
			
				|  |  | +                                refund(payment,huifuId);
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                throw new CustomException("交易确认退款请求失败" + result.getResp_desc());
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            refund(payment,huifuId);
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +//                        V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
 | 
	
		
			
				|  |  | +//                        DecimalFormat df = new DecimalFormat("0.00");
 | 
	
		
			
				|  |  | +//                        request.setOrgHfSeqId(payment.getTradeNo());
 | 
	
		
			
				|  |  | +//                        request.setHuifuId(huifuId);
 | 
	
		
			
				|  |  | +//                        request.setOrdAmt(df.format(refundAmount));
 | 
	
		
			
				|  |  | +//                        request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
 | 
	
		
			
				|  |  | +//                        request.setReqSeqId("refund-"+payment.getPayCode());
 | 
	
		
			
				|  |  | +//                        Map<String, Object> extendInfoMap = new HashMap<>();
 | 
	
		
			
				|  |  | +//                        extendInfoMap.put("org_party_order_id", payment.getBankSerialNo());
 | 
	
		
			
				|  |  | +//                        request.setExtendInfo(extendInfoMap);
 | 
	
		
			
				|  |  | +//                        HuiFuRefundResult refund = huiFuService.refund(request);
 | 
	
		
			
				|  |  | +//                        logger.info("退款:"+refund);
 | 
	
		
			
				|  |  | +//                        if((refund.getResp_code().equals("00000000")||refund.getResp_code().equals("00000100"))&&(refund.getTrans_stat().equals("S")||refund.getTrans_stat().equals("P"))){
 | 
	
		
			
				|  |  | +//                            payment.setRefundMoney(refundAmount);
 | 
	
		
			
				|  |  | +//                            payment.setStatus(-1);
 | 
	
		
			
				|  |  | +//                            payment.setRefundTime(new Date());
 | 
	
		
			
				|  |  | +//                            paymentService.updateFsStorePayment(payment);
 | 
	
		
			
				|  |  | +//                        }else {
 | 
	
		
			
				|  |  | +//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | +//                            return R.error(refund.getResp_desc());
 | 
	
		
			
				|  |  | +//                        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      }else {
 | 
	
		
			
				|  |  |                          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
	
		
			
				|  | @@ -838,6 +859,29 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
 | 
	
		
			
				|  |  |          return R.ok();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private void refund(FsStorePaymentScrm payment,String huifuId){
 | 
	
		
			
				|  |  | +        V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
 | 
	
		
			
				|  |  | +        request.setOrgHfSeqId(payment.getTradeNo());
 | 
	
		
			
				|  |  | +        request.setHuifuId(huifuId);
 | 
	
		
			
				|  |  | +        request.setOrdAmt(payment.getPayMoney().toString());
 | 
	
		
			
				|  |  | +        request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
 | 
	
		
			
				|  |  | +        request.setReqSeqId("refund-" + payment.getPayCode());
 | 
	
		
			
				|  |  | +        Map<String, Object> extendInfoMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        extendInfoMap.put("org_party_order_id", payment.getBankSerialNo());
 | 
	
		
			
				|  |  | +        request.setExtendInfo(extendInfoMap);
 | 
	
		
			
				|  |  | +        HuiFuRefundResult refund = huiFuService.refund(request);
 | 
	
		
			
				|  |  | +        logger.info("退款:" + refund);
 | 
	
		
			
				|  |  | +        if ((refund.getResp_code().equals("00000000") || refund.getResp_code().equals("00000100")) && (refund.getTrans_stat().equals("S") || refund.getTrans_stat().equals("P"))) {
 | 
	
		
			
				|  |  | +            payment.setRefundMoney(payment.getPayMoney());
 | 
	
		
			
				|  |  | +            payment.setStatus(-1);
 | 
	
		
			
				|  |  | +            payment.setRefundTime(new Date());
 | 
	
		
			
				|  |  | +            paymentService.updateFsStorePayment(payment);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | +            throw new CustomException("退款失败:" + refund.getResp_desc());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private FsJstAftersalePushScrmMapper fsJstAftersalePushMapper;
 | 
	
	
		
			
				|  | @@ -1516,26 +1560,45 @@ public class FsStoreAfterSalesScrmServiceImpl implements IFsStoreAfterSalesScrmS
 | 
	
		
			
				|  |  |                          huifuId=fsPayConfig.getHuifuId();
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
 | 
	
		
			
				|  |  | -                request.setOrdAmt(payment.getPayMoney().toString());
 | 
	
		
			
				|  |  | -                request.setHuifuId(huifuId);
 | 
	
		
			
				|  |  | -                request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
 | 
	
		
			
				|  |  | -                request.setReqSeqId("refund-" + payment.getPayCode());
 | 
	
		
			
				|  |  | -                Map<String, Object> extendInfoMap = new HashMap<>();
 | 
	
		
			
				|  |  | -                extendInfoMap.put("org_req_seq_id", orderType + "-" + payment.getPayCode());
 | 
	
		
			
				|  |  | -                request.setExtendInfo(extendInfoMap);
 | 
	
		
			
				|  |  | -                HuiFuRefundResult refund = huiFuService.refund(request);
 | 
	
		
			
				|  |  | -                logger.info("订单退款返回结果:退款订单id:" + order.getOrderId() + refund);
 | 
	
		
			
				|  |  | -                if ((refund.getResp_code().equals("00000000") || refund.getResp_code().equals("00000100")) && (refund.getTrans_stat().equals("S") || refund.getTrans_stat().equals("P"))) {
 | 
	
		
			
				|  |  | -                    FsStorePaymentScrm paymentMap = new FsStorePaymentScrm();
 | 
	
		
			
				|  |  | -                    paymentMap.setPaymentId(payment.getPaymentId());
 | 
	
		
			
				|  |  | -                    paymentMap.setStatus(-1);
 | 
	
		
			
				|  |  | -                    paymentMap.setRefundTime(DateUtils.getNowDate());
 | 
	
		
			
				|  |  | -                    paymentMap.setRefundMoney(payment.getPayMoney());
 | 
	
		
			
				|  |  | -                    fsStorePaymentMapper.updateFsStorePayment(paymentMap);
 | 
	
		
			
				|  |  | +                if (payment.getIsShare() == 1 && payment.getShareStatus() == 1) {
 | 
	
		
			
				|  |  | +                    V2TradePaymentDelaytransConfirmrefundRequest confirmRefundRequest = new V2TradePaymentDelaytransConfirmrefundRequest();
 | 
	
		
			
				|  |  | +                    String orderCode = OrderCodeUtils.getOrderSn();
 | 
	
		
			
				|  |  | +                    if (StringUtils.isEmpty(orderCode)) {
 | 
	
		
			
				|  |  | +                        throw new CustomException("订单生成失败,请重试");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    confirmRefundRequest.setReqSeqId(orderCode);
 | 
	
		
			
				|  |  | +                    confirmRefundRequest.setOrgReqSeqId(payment.getShareCode());
 | 
	
		
			
				|  |  | +                    confirmRefundRequest.setOrgReqDate(payment.getShareDate());
 | 
	
		
			
				|  |  | +                    //多汇付使用appID
 | 
	
		
			
				|  |  | +                    HuifuConfirmrefundResult result = huiFuService.confirmRefund(confirmRefundRequest, payment.getAppId());
 | 
	
		
			
				|  |  | +                    if (result.getResp_code().equals("00000000") && (result.getTrans_stat().equals("S") || result.getTrans_stat().equals("P"))) {
 | 
	
		
			
				|  |  | +                        refund(payment,huifuId);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        throw new CustomException("交易确认退款请求失败" + result.getResp_desc());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  | -                    throw new CustomException("退款请求失败" + refund.getResp_desc());
 | 
	
		
			
				|  |  | +                    refund(payment,huifuId);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +//                V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
 | 
	
		
			
				|  |  | +//                request.setOrdAmt(payment.getPayMoney().toString());
 | 
	
		
			
				|  |  | +//                request.setHuifuId(huifuId);
 | 
	
		
			
				|  |  | +//                request.setOrgReqDate(new SimpleDateFormat("yyyyMMdd").format(payment.getCreateTime()));
 | 
	
		
			
				|  |  | +//                request.setReqSeqId("refund-" + payment.getPayCode());
 | 
	
		
			
				|  |  | +//                Map<String, Object> extendInfoMap = new HashMap<>();
 | 
	
		
			
				|  |  | +//                extendInfoMap.put("org_req_seq_id", orderType + "-" + payment.getPayCode());
 | 
	
		
			
				|  |  | +//                request.setExtendInfo(extendInfoMap);
 | 
	
		
			
				|  |  | +//                HuiFuRefundResult refund = huiFuService.refund(request);
 | 
	
		
			
				|  |  | +//                logger.info("订单退款返回结果:退款订单id:" + order.getOrderId() + refund);
 | 
	
		
			
				|  |  | +//                if ((refund.getResp_code().equals("00000000") || refund.getResp_code().equals("00000100")) && (refund.getTrans_stat().equals("S") || refund.getTrans_stat().equals("P"))) {
 | 
	
		
			
				|  |  | +//                    FsStorePaymentScrm paymentMap = new FsStorePaymentScrm();
 | 
	
		
			
				|  |  | +//                    paymentMap.setPaymentId(payment.getPaymentId());
 | 
	
		
			
				|  |  | +//                    paymentMap.setStatus(-1);
 | 
	
		
			
				|  |  | +//                    paymentMap.setRefundTime(DateUtils.getNowDate());
 | 
	
		
			
				|  |  | +//                    paymentMap.setRefundMoney(payment.getPayMoney());
 | 
	
		
			
				|  |  | +//                    fsStorePaymentMapper.updateFsStorePayment(paymentMap);
 | 
	
		
			
				|  |  | +//                } else {
 | 
	
		
			
				|  |  | +//                    throw new CustomException("退款请求失败" + refund.getResp_desc());
 | 
	
		
			
				|  |  | +//                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //管易作废
 | 
	
		
			
				|  |  |              if (StringUtils.isNotEmpty(fsStoreOrder.getExtendOrderId())) {
 |