最近再做微信小程序,其中用到了微信支付。项目服务端用的是rest的接口形式。
微信支付调通了,但是比较坑爹的是支付回调失败,查log发现是微信回调传过来的xml,服务端没有解析正确。使用rest接口微信端返回的xml格式如下图所示:
从图中可以清楚的看到支付成功之后回调的时候微信把签名和支付单号,appid等这些重要信息都给放到http请求中了,这点微信做的还是蛮好的。接下来就是获取微信返回的xml了我最开始获取http请求中的xml还是通过最原始的方法从request中以文件流的形式读取的,代码如下:
private Map<String, String> getParamFromInputStream(HttpServletRequest request){
//获取GET过来反馈信息
Map<String,String> paramMap = new HashMap<String,String>();
try {
InputStream inputStream = request.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer temp = new StringBuffer();
String line = bufferedReader.readLine();
while (line != null) {
temp.append(li