| | |
| | | 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(), |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | 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(); |
| | | } |