工作了也有七个月了,在公司做支付其实感觉自己更多的是熟悉业务。技术方面就是修修补补。真心感觉想学技术难,自己也暗自想了一下前段时间在某支付公司和某o2o公司纠结的时候还真是有些头脑不清醒。下面是我从业务中拿来的代码片段。一起学习和探讨一下。
在以前我自己真没有研究过无论是网页还是后台程序怎样返回xml这档事,因为现在JSON真的很常见了,什么GSON和FASTJSON等等。
言归正传,先直接上代码吧!
@XmlRootElement(name = "package")
public class CashReq extends BaseResponse {
private Body body;
@XmlType(namespace = "CashReq")
@XmlAccessorType(value = XmlAccessType.PROPERTY)
public static class Body extends ToString {
private String md5;
private String merchantNo;
private String orgNo;
private String cash;
private String comTransNo;
private String createTime;
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
public String getMerchantNo() {
return merchantNo;
}
public void setMerchantNo(String merchantNo) {
this.merchantNo = merchantNo;
}
public String getOrgNo() {
return orgNo;
}
public void setOrgNo(String orgNo) {
this.orgNo = orgNo;
}
public String getCash() {
return cash;
}
public void setCash(String cash) {
this.cash = cash;
}
public String getComTransNo() {
return comTransNo;
}
public void setComTransNo(String comTransNo) {
this.comTransNo = comTransNo;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
}
public Body getBody() {
return body;
}
public void setBody(Body body) {
this.body = body;
}
}
/**
* 响应包括header和body,body可以在派生类中进行扩展
*
* @author dj
*
*/
public abstract class BaseResponse extends ToString implements Response {
private ResponseHeader header;
public ResponseHeader getHeader() {
return header;
}
public void setHeader(ResponseHeader header) {
this.header = header;
}
}
@XmlAccessorType(value = XmlAccessType.PROPERTY)
public class ResponseHeader extends ToString {
// 交易名,原样返回
private String tradeId;
// 响应时间戳,yyyyMMddHHmmss
private String timeStamp;
// 手机银行流水号,全局唯一
private String mbsSeqNo;
// 交易成功标志:true成功,false失败
private Boolean succeed;
// 交易返回码,0000成功,否则失败,没有报文体
private String errCode;
// 交易返回信息
private String errMsg;
public String getTradeId() {
return tradeId;
}
public void setTradeId(String tradeId) {
this.tradeId = tradeId;
}
public String getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
}
public String getMbsSeqNo() {
return mbsSeqNo;
}
public void setMbsSeqNo(String mbsSeqNo) {
this.mbsSeqNo = mbsSeqNo;
}
public Boolean getSucceed() {
return succeed;
}
public void setSucceed(Boolean succeed) {
this.succeed = succeed;
}
public String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
}
/**
* @Title ToString.java
* @Description 重写toString方法,打印方便
* @author dongjie.wang,<a href="mailto:wangdj@cnepay.com">wangdj@cnepay.com</a>
* @date 2012-5-17 下午10:08:55
* @version V1.0
*/
public class ToString{
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}
public @ResponseBody
SettleMsgQuery settleMsgQuery(){}
用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。
返回的样例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<package>
<header>
<errCode>0000</errCode>
<errMsg>提现成功!</errMsg>
<succeed>true</succeed>
<timeStamp>20160721091256</timeStamp>
</header>
<body>
<comTransNo>123456789</comTransNo>---------------------企业唯一流水号
<createTime>2016-07-21 09:12:56</createTime>-------------成功交易时间
<merchantNo>113805300101798</merchantNo>-------------商户号
<orgNo>IM000030</orgNo>--------------------------------------接入机构号
</body>
</package>