@RequestMapping("/kv/" + CommonConstants.WX_PAY) public void wxProcessKV(HttpServletRequest request, HttpServletResponse response) { try { RequestWrapper requestWrapper = new RequestWrapper(request); String message = new String(requestWrapper.getDataStream(), StandardCharsets.UTF_8); // created comment by szd,2019-06-19,v2.4.1 TpspLogger.applicationInfoLog(logger,"微信支付异步消息参数", message); if (StringUtils.isBlank(message)) { return; } CallbackBO callbackBO = new CallbackBO(); callbackBO.setGroupId(CommonConstants.WX_PAY); Map<String, String> map = new HashMap<>(); map.put(Fields.MESSAGE, message); callbackBO.setParam(map); payWxRpc.callback(callbackBO); response.getWriter().write(CommonConstants.WX_RETURN); } catch (Exception e) { // created comment by szd,2019-06-19,v2.4.1 TpspLogger.alertErrorLog(logger,"处理微信异步结果异常", e); } } public static final String WX_RETURN = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"; 切记: 返回时候不要使用 @ResponseBody 该注解返回的数据是携带 "" ,使用该注解实际返回值是: 【"\"<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>\""】,使用HttpServletResponse 返回的字符串是不会携带"" 的 微信要的只是:<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>
微信支付成功后,重复通知。微信支付成功后,接收到通知支付成功,并返回成功,但是仍然会收到重复的支付成功通知。 返回的结果如下 [代码]<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>[代码] 代码(nodejs): [代码]const xml = [代码][代码]'<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'[代码][代码];[代码][代码]res.end(xml);[代码] 请问这样的返回有什么问题吗?为什么会一直重复通知?
2021-04-27