1、新建QueryOrders.java文件:
/**
*
*/
package com.saicfc.pmpf.resume.bocom.utils.resume;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
/**
* @author lizhiyong
*
*/
@XStreamAlias("BOCOMB2C")
public class QueryOrders {
public OpRep opRep;
public OpRep getOpRep() {
return opRep;
}
public class OpRep{
public String retCode;
public String errMsg;
public OpResult opResult;
public OpResultSet opResultSet;
public String getRetCode() {
return retCode;
}
public String getErrMsg() {
return errMsg;
}
public OpResult getOpResult() {
return opResult;
}
public OpResultSet getOpResultSet() {
return opResultSet;
}
}
public class OpResult{
public String merchantID;
public String getMerchantID() {
return merchantID;
}
}
public class OpResultSet{
@XStreamImplicit(itemFieldName="opResult")
public List<OpResults> opResults;
public List<OpResults> getOpResults() {
return opResults;
}
}
public class OpResults{
public String order;
public String orderDate;
public String orderTime;
public String curType;
public String amount;
public String tranDate;
public String tranTime;
public String tranState;
public String orderState;
public String fee;
public String bankSerialNo;
public String bankBatNo;
public String cardType;
public String merchantBatNo;
public String merchantComment;
public String bankComment;
public String getOrder() {
return order;
}
public String getOrderDate() {
return orderDate;
}
public String getOrderTime() {
return orderTime;
}
public String getCurType() {
return curType;
}
public String getAmount() {
return amount;
}
public String getTranDate() {
return tranDate;
}
public String getTranTime() {
return tranTime;
}
public String getTranState() {
return tranState;
}
public String getOrderState() {
return orderState;
}
public String getFee() {
return fee;
}
public String getBankSerialNo() {
return bankSerialNo;
}
public String getBankBatNo() {
return bankBatNo;
}
public String getCardType() {
return cardType;
}
public String getMerchantBatNo() {
return merchantBatNo;
}
public String getMerchantComment() {
return merchantComment;
}
public String getBankComment() {
return bankComment;
}
}
public String signData;
public String getSignData() {
return signData;
}
}
2、解析XML文件:
XStream xStream = new XStream(new DomDriver());
xStream.processAnnotations(QueryOrders.class);
QueryOrders queryOrders = (QueryOrders) xStream.fromXML(result);
OpRep opRep = queryOrders.getOpRep();
String retCode = opRep.getRetCode(); //返回码
String errMsg = opRep.getErrMsg(); //错误描述
OpResult opResult = opRep.getOpResult();
String merchantID = opResult.getMerchantID();//商户号
OpResultSet opResultSet = opRep.getOpResultSet();
List<OpResults> list = opResultSet.getOpResults();
List recList = new ArrayList();
Map<String, Object> recMap = null;
if (CommonUtils.isNotEmpty(list)) {
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
OpResults opResults = (OpResults) iterator.next();
recMap = new HashMap<String, Object>();
recMap.put("order", opResults.getOrder());//订单号
recMap.put("orderDate", opResults.getOrderDate());//订单日期
recMap.put("orderTime", opResults.getOrderTime());//订单时间
recMap.put("curType", opResults.getCurType());//币种
recMap.put("amount", opResults.getAmount());//金额
recMap.put("tranDate", opResults.getTranDate());//支付日期
recMap.put("tranTime", opResults.getTranTime());//支付时间
recMap.put("tranState", opResults.getTranState());//支付交易状态
recMap.put("orderState", opResults.getOrderState());//订单状态
recMap.put("fee", opResults.getFee());//手续费
recMap.put("bankSerialNo", opResults.getBankSerialNo());//银行流水号
recMap.put("bankBatNo", opResults.getBankBatNo());//银行批次号
recMap.put("cardType", opResults.getCardType());//交易卡类型
recMap.put("merchantBatNo", opResults.getMerchantBatNo());//商户批次号
recMap.put("merchantComment", opResults.getMerchantComment());//商户备注
recMap.put("bankComment", opResults.getBankComment());//银行备注
recList.add(recMap);
}
}
String signData = queryOrders.getSignData();//签名数据
//需要去验签的源数据
String msg = "</opRep>";
String originalStr = result.substring(result.indexOf("<opRep>"),
result.indexOf(msg) + msg.length());
Map<String, Object> map = new HashMap<String, Object>();
map.put("retCode", retCode);
map.put("errMsg", errMsg);
map.put("merchantID", merchantID);
map.put("signData", signData);
map.put("originalStr", originalStr);
map.put("recList", recList);
return map;