上海银行交易挡板

<%@ page language="java" pageEncoding="UTF-8"%>
<%@page contentType="text/html;charset=utf-8" language="java"%>
<%@page session="true" import="java.lang.*" %>
<%@page session="true" import="java.util.*" %>
<%@page session="true" import="com.api.bank.util.CharEncodingUtil" %>
<%@page session="true" import="com.thoughtworks.xstream.XStream" %>
<%@page session="true" import="java.io.*" %>
<%@page session="true" import="com.thoughtworks.xstream.io.xml.DomDriver" %>
<%@page session="true" import="com.api.bank.bos.bean.BOSPayReqRootBean" %>
<%@page session="true" import="com.api.bank.bos.bean.BOSPayReqMessageBean" %>
<%@page session="true" import="com.api.bank.bos.bean.BOSPayTxnReqDataBean" %>
<%@page session="true" import="java.text.SimpleDateFormat" %>
<%
    //使用request的getinputStream()接收无参数命的数据流,转换成String类型的xml报文
	InputStream in = null;
	try{
		in = request.getInputStream();
		InputStreamReader isr = new InputStreamReader(in);   
		BufferedReader br = new BufferedReader(isr);
		String s = "";
		StringBuffer sf = new StringBuffer() ; 
		while((s = br.readLine()) != null){ 
			sf.append(s);
		} 
		xml = sf.toString();
		System.out.println("收到通讯报文:"+ xml);
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		in.close();
	}
	
/* 	
        通过参数名称接收数据,已不在使用
        Enumeration enu = request.getParameterNames();
	boolean hasParam =  enu.hasMoreElements();
	if(hasParam){
 		String paraName = (String)enu.nextElement();
		xml = request.getParameter(paraName);
	}  */
        //转码,事实上好像并不需要,为了防止风险,做一次检查
	String xmlString = CharEncodingUtil.unescape(xml);
	//获取交易请求类型
	String txnType = xmlString.split("<CSReq")[1].split("<version>")[0].split("\"")[1];
	
	//解析报文
	xmlString = xmlString.replaceAll("CSReq", "dataBean");
	XStream xs = new XStream(new DomDriver());
	xs.setMode(XStream.ID_REFERENCES);
	xs.alias("Banksh", BOSPayReqRootBean.class);
	xs.alias("Message", BOSPayReqMessageBean.class);
	xs.useAttributeFor(BOSPayReqMessageBean.class, "id");
	xs.alias("dataBean", BOSPayTxnReqDataBean.class);
	
	BOSPayReqRootBean reqBean = (BOSPayReqRootBean) xs.fromXML(xmlString);
	System.out.println(reqBean.toString());
	BOSPayReqMessageBean messageBean = reqBean.getMessage();
	BOSPayTxnReqDataBean dataBean = reqBean.getMessage().getDataBean();
	
	String id = messageBean.getId();
	String version = dataBean.getVersion();
 	String orderNum = dataBean.getOrderNum();
	String cardCode = dataBean.getCardCode();
	String amount = dataBean.getAmount();
	String charge = dataBean.getCharge();
	String instId = dataBean.getInstId();
	String cardNo = dataBean.getCardNo();
	String cardType = dataBean.getCardType(); 
	
	String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
	String serialNo = new SimpleDateFormat("yyyyMMddHHmmssSS").format(new Date());
	
 	StringBuffer str = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Banksh>");
	str.append("<Message id=\"").append(id).append("\">");
	if("CPReq".equals(txnType)){
		//支付
		str.append("<CSRes id=\"CPRes\">");
		str.append("<version>").append(version).append("</version>");
		str.append("<instId>").append(instId).append("</instId>");
		str.append("<orderNum>").append(orderNum).append("</orderNum>");
		str.append("<cardCode>").append(cardCode).append("</cardCode>");
		str.append("<serialNo>").append(serialNo).append("</serialNo>");
		str.append("<date>").append(date).append("</date>");
		
	}else if("IAReq".equals(txnType)){
		//鉴权
		str.append("<CSRes id=\"IARRes\">");
		str.append("<version>").append(version).append("</version>");
		str.append("<instId>").append(instId).append("</instId>");
		str.append("<cardNo>").append(cardNo).append("</cardNo>");
		str.append("<cardCode>").append(serialNo).append("</cardCode>");
		str.append("<date>").append(date).append("</date>");
		
	}else if("SRReq".equals(txnType)){
		//单笔退款
		str.append("<CSRes id=\"SRRes\">");
		str.append("<version>").append(version).append("</version>");
		str.append("<instId>").append(instId).append("</instId>");
		str.append("<orderNum>").append(orderNum).append("</orderNum>");
		str.append("<serialNo>").append(serialNo).append("</serialNo>");
		str.append("<date>").append(date).append("</date>");
		str.append("<cardCode>").append(cardCode).append("</cardCode>");
		
	}else if("SQReq".equals(txnType)){
		//单笔查询
		String type = dataBean.getType();
		str.append("<CSRes id=\"SQRes\">");
		str.append("<version>").append(version).append("</version>");
		str.append("<instId>").append(instId).append("</instId>");
		str.append("<serialNo>").append(serialNo).append("</serialNo>");
		str.append("<date>").append(date).append("</date>");
		str.append("<type>").append(type).append("</type>");
		str.append("<orderNum>").append(orderNum).append("</orderNum>");
		str.append("<status>").append("0000").append("</status>");
		
	}
	str.append("<errorCode>").append("SUCC").append("</errorCode>");
	str.append("</CSRes><Signature>").append("TEST SUCCESS")
		.append("</Signature></Message></Banksh>"); 
	
	String responseXml = str.toString(); 
	//通过response返回响应报文和服务状态。
	response.getWriter().print(responseXml);
	response.setStatus(200);
	
%>



你可能感兴趣的:(银行挡板)