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>";
    
  • 相关阅读:
    【Vjudge】P1989Subpalindromes(线段树)
    【Luogu】P3358最长k可重区间集问题(费用流)
    【未有之有】洛森设定随笔
    14-Perl 引用
    13-Perl 子程序(函数)
    12-Perl 时间日期
    11-Perl 运算符
    10-Perl 循环
    9-Perl 条件语句
    8-Perl 哈希
  • 原文地址:https://www.cnblogs.com/lz2017/p/11624195.html
Copyright © 2011-2022 走看看