zoukankan      html  css  js  c++  java
  • 使用jackson转换xml格式数据进行响应

    最近在做微信扫码支付的功能,按照微信开发文档与支付平台进行数据交互只能使用XML格式的数据,调用别人定义的接口就需要按规则来嘛,没办法。自己之前使用jackson,主要是因为SpringMVC默认将jackson作为数据转换的工具,而且默认也是以JSON格式进行处理的,之前本人使用过XStream将数据转换为XML格式,想着jackson应该也可以做这件事,有个produces属性可以指定响应的数据格式

    @PostMapping(value = "/wx/notify", produces = "application/xml")
    

    结果直接出现Content type 'text/xml;charset=UTF-8' not supported ,根据这个错也容易知道肯定是没有解析成功,原来是jackson转换XML还需要添加一个jar

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.9.8</version>
    </dependency>
    

    添加这个jar之后就OK了,对了在写微信回调接口的时候一定要保证这个接口的幂等性,因为有极大的可能这个接口会被多次回调,同时在这个方法中需要校验签名(key),以及校验out_trade_no(商户订单号)
    total_fee(订单金额)这些也是微信支付开发文档中写了的。最后接口返回字符串,jackson可以将字符串转换为XML,返回的这段数据是必须且格式固定,微信只有接收到这段数据才不会继续回调

    return "<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>";
    
  • 相关阅读:
    django 1.9.7 css控制模板样式
    python -- 判断给定的参数是否是地理位置的经度和纬度
    有恃无恐
    不知不觉
    vscode 编写Python走过的坑
    Python的从头再来
    【初赛】数学题错题总结
    【初赛】选择题总结
    20175317 《Java程序设计》第四周学习总结
    20175317 《Java程序设计》第三周学习总结
  • 原文地址:https://www.cnblogs.com/lz2017/p/11624195.html
Copyright © 2011-2022 走看看