微信支付成功后,接收到通知支付成功,并返回成功,但是仍然会收到重复的支付成功通知。
返回的结果如下
<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); |
请问这样的返回有什么问题吗?为什么会一直重复通知?
@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>
这问题到最后我们都没解决,完全复制的官方的返回内容也不好使,关注下吧
请问这个问题解决了吗?
今天也遇到了这个问题,官方都不帮忙调试下吗
检查一下返回的参数是否格式不对,或者是否按照文档要求的传递
收到通知后,要严格按照文档要求返回成功的参数。只要是按照文档返回的。一般不会出现重复回调的情况。