java 微信支付重复回调问题

分析线上日志发现,微信支付总是多次回调,其实每次都是支付成功的
微信支付文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8
java 微信支付重复回调问题_第1张图片
以前的代码大概是这样写的
java 微信支付重复回调问题_第2张图片
用了@RestController注解,但是微信支付一直认为是有问题的
后来想到,返回为json数据干扰了,毕竟微信支付用的是xml。是不是可以用response直接返回字符串。
大概类似这样
java 微信支付重复回调问题_第3张图片

    private void wxpayCallbackResult(HttpServletResponse response, String xml) throws IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/xml; charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print(xml);
        out.close();
    }

经过测试,方法返回String类型的,实际为

"\n  \n  \n"

java 微信支付重复回调问题_第4张图片
方法返回值是void,然后用response输出的


  
  

java 微信支付重复回调问题_第5张图片
至此,微信支付重复回调的问题解决,关键还是返回是xml格式,而不是平时常用的json格式,微信真是一个异类。
java 微信支付重复回调问题_第6张图片

你可能感兴趣的:(编程错误)