xin
2025-09-04 d70c240e09a9021824cc9e9f1bed8028a0c194cd
oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
@@ -1,12 +1,11 @@
package com.oying.modules.hwc.service.impl;
import com.oying.exception.BadRequestException;
import com.oying.modules.hwc.service.CallbackService;
import com.oying.modules.hwc.utils.SignUtil;
import com.oying.modules.hwc.utils.XmlUtils;
import com.oying.modules.security.config.SwiftPassProperties;
import com.oying.modules.sh.domain.OrderReturn;
import com.oying.modules.sh.domain.vo.OrderResponse;
import com.oying.modules.sh.domain.vo.OrderReturnResponse;
import com.oying.modules.sh.service.OrderReturnService;
import com.oying.modules.sh.service.OrderService;
import com.oying.utils.enums.OrderStatusEnum;
@@ -14,11 +13,14 @@
import com.oying.utils.enums.PayTypeEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dom4j.DocumentException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -76,16 +78,21 @@
                }
            }
            response.getWriter().write(respString);
        } catch (DataIntegrityViolationException e) {
            log.error("汇旺财退款回调数据异常失败:{} {}", map.toString(), e.getMessage());
        } catch (DocumentException e) {
            log.error("汇旺财退款回调XML转码失败:{} {}", map.toString(), e.getMessage());
        } catch (IOException e) {
            log.error("汇旺财退款回调写入流失败:{} {}", map.toString(), e.getMessage());
        } catch (Exception e) {
            log.error("汇旺财支付回调失败:{}", map.toString());
            throw new BadRequestException("操作失败,原因:" + e.getMessage());
            log.error("汇旺财退款回调失败:{} {}", map.toString(), e.getMessage());
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void returnNotify(HttpServletRequest request, HttpServletResponse response) {
        Map<String, String> map =  new HashMap<>();
        Map<String, String> map = new HashMap<>();
        try {
            String resString = XmlUtils.parseRequest(request);
            String respString = "error";
@@ -94,8 +101,8 @@
                String sign_type = map.get("sign_type");
                String reSign = map.get("sign");
                if (map.containsKey("sign")) {
                    OrderReturn order = returnService.getByReturnNum(map.get("out_refund_no"));
                    PayTypeEnum status = PayTypeEnum.find(order.getPayType());
                    OrderReturnResponse order = returnService.getByReturnNum(map.get("out_refund_no"));
                    PayTypeEnum status = PayTypeEnum.find(order.getOrderReturn().getPayType());
                    if (SignUtil.verifySign(reSign, sign_type, map, properties, status)) {
                        log.error("汇旺财退款验证签名错误!:{}", map.toString());
                    } else {
@@ -112,9 +119,14 @@
                }
            }
            response.getWriter().write(respString);
        } catch (DataIntegrityViolationException e) {
            log.error("汇旺财退款回调数据异常失败:{} {}", map.toString(), e.getMessage());
        } catch (DocumentException e) {
            log.error("汇旺财退款回调XML转码失败:{} {}", map.toString(), e.getMessage());
        } catch (IOException e) {
            log.error("汇旺财退款回调写入流失败:{} {}", map.toString(), e.getMessage());
        } catch (Exception e) {
            log.error("汇旺财退款回调失败:{}", map.toString());
            System.out.println("操作失败,原因:" + e.getMessage());
            log.error("汇旺财退款回调失败:{} {}", map.toString(), e.getMessage());
        }
    }
}