longz
2026-07-15 c207fd1454b64f47e2e66cd2f578a2b21b06f019
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/IcbcPayController.java
@@ -219,6 +219,7 @@
        Map<String, String[]> requestParams = new LinkedHashMap<>(request.getParameterMap());
        String rawBody = requestParams.isEmpty() ? readRequestBody(request) : "";
        mergeJsonBody(requestParams, rawBody);
        boolean success = false;
        log.info("工行支付回调原始请求,method:{},uri:{},query:{},contentType:{},params:{},body:{},headers:{}",
                request.getMethod(),
                request.getRequestURI(),
@@ -231,10 +232,11 @@
            Map<String, String> callback = icbcPayService.parseNotify(requestParams);
            log.info("工行支付回调解析结果:{}", JSON.toJSONString(callback));
            dispatchChargingOrderCallback(callback);
            success = true;
        } catch (Exception e) {
            log.error("工行支付回调处理失败,已记录原始请求并返回success避免重复通知", e);
            log.error("工行支付回调处理失败,已记录原始请求并返回fail等待重试", e);
        } finally {
            writeCallbackResponse(response);
            writeCallbackResponse(response, success);
        }
    }
@@ -316,11 +318,11 @@
        return JSON.toJSONString(headers);
    }
    private void writeCallbackResponse(HttpServletResponse response) throws Exception {
    private void writeCallbackResponse(HttpServletResponse response, boolean success) throws Exception {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("success");
        writer.println(success ? "success" : "fail");
        writer.flush();
        writer.close();
    }