使用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>";


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM