JaxbUtil

/**
* Copyright (c) 2011-2015 All Rights Reserved.
*/
package com.dinpay.dpp.csp.instruction.comm.util.spdb;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* JavaBean与XML转换工具类
*
* @author tangkuo
*
*/
public class JaxbUtil {

private final static Logger log = LoggerFactory.getLogger(JaxbUtil.class);

/**
* JavaBean转换成xml
* 默认编码UTF-8
* @param obj
* @param writer
* @return
*/
public static String convertToXml(Object obj) {
return convertToXml(obj, "UTF-8");
}

/**
* JavaBean转换成xml
* @param obj
* @param encoding
* @return
*/
public static String convertToXml(Object obj, String encoding) {
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
return writer.toString();
} catch (Exception e) {
log.error(e.getMessage(), e);
return StringUtils.EMPTY;
}
}

/**
* xml转换成JavaBean
* @param xml
* @param c
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJavaBean(String xml, Class<T> c) {
try {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
return (T) unmarshaller.unmarshal(new StringReader(xml));
} catch (Exception e) {
log.error(e.getMessage(), e);
return null;
}
}

}


package com.dinpay.dpp.csp.instruction.vo;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
* 浦发银行交易接口输入输出参数实体类
*
* @author tangkuo
*
*/

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="packet")
public class SpdbPacketVo implements Serializable{
private static final long serialVersionUID = 1L;

/*
* 5.1.1 输入要素:
* https页面方式和https指令方式下向网关发送交易时,都必须提供3个基本要素:transName、Plain、Signature。
* 其中,transName是交易名;Plain是交易字段拼装的明文,支付、撤销、退货的Plain的组织方式类似;
* Signature是对Plain的签名。
*/

@XmlElement(name="transName")
private String transName;//消费交易类型

@XmlElement(name="Plain")
private String plain;//商户订单数据组成的原始数据字符串

@XmlElement(name="Signature")
private String signature;//原始数据字符串的签名

/*
* 5.1.2 输出要素: 支付网关返回商户的信息,是以XML报文的组织结构的一段内容
* 交易正常返回:
* <packet><transName>交易名称</transName><Plain>
* 交易请求明文</Plain><Signature>交易请求明文的签名</Signature></packet>
* 交易出错返回:
* <packet><ErrorCode>错误码</ErrorCode><ErrorMsg>错误信息</ErrorMsg></packet>
*
*/

@XmlElement(name="ErrorCode")
private String ErrorCode;//错误码

@XmlElement(name="ErrorMsg")
private String ErrorMsg;//错误信息

/**
* 获取消费交易类型
* @return
*/
public String getTransName() {
return transName;
}

/**
* 设置消费交易类型
* @param transName
*/
public void setTransName(String transName) {
this.transName = transName;
}

/**
* 获取商户订单数据组成的原始数据字符串
* @return
*/
public String getPlain() {
return plain;
}

/**
* 设置商户订单数据组成的原始数据字符串
* @param plain
*/
public void setPlain(String plain) {
this.plain = plain;
}

/**
* 获取原始数据字符串的签名
* @return
*/
public String getSignature() {
return signature;
}

/**
* 设置原始数据字符串的签名
* @param signature
*/
public void setSignature(String signature) {
this.signature = signature;
}

/**
* 获取浦发银行返回的错误码信息
* @return
*/
public String getErrorCode() {
return ErrorCode;
}

/**
* 设置浦发银行返回的错误码信息
* @return
*/
public void setErrorCode(String errorCode) {
ErrorCode = errorCode;
}

/**
* 获取银行放返回的错误信息
* @return
*/
public String getErrorMsg() {
return ErrorMsg;
}

/**
* 设置错误信息值
* @return
*/
public void setErrorMsg(String errorMsg) {
ErrorMsg = errorMsg;
}




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值