//package com.unionpay.acp.demo;
//
//import java.io.IOException;
//import java.util.Enumeration;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.Map;
//import java.util.Map.Entry;
//
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import com.unionpay.acp.sdk.LogUtil;
//import com.unionpay.acp.sdk.SDKConfig;
//import com.unionpay.acp.sdk.SDKConstants;
//import com.unionpay.acp.sdk.SDKUtil;
//
//
///**
// * 名称:商户后台通知类
// * 功能:
// * 类属性:
// * 方法调用 版本:5.0
// * 日期:2014-07
// * 作者:中国银联ACP团队
// * 版权:中国银联
// * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。该代码仅供参考。
// * */
//
//public class BackRcvResponse extends HttpServlet{
//
///**
// *
// */
// private static final long serialVersionUID = 3414800502432002480L;
//
// @Override
// public void init() throws ServletException {
// /**
// * 参数初始化
// * 在java main 方式运行时必须每次都执行加载
// * 如果是在web应用开发里,这个方写在可使用监听的方式写入缓存,无须在这出现
// */
// SDKConfig.getConfig().loadPropertiesFromSrc();// 从classpath加载acp_sdk.properties文件
// super.init();
// }
//
// @Override
// protected void doPost(HttpServletRequest req, HttpServletResponse resp)
// throws ServletException, IOException {
//
// LogUtil.writeLog("BackRcvResponse接收后台通知开始");
//
// req.setCharacterEncoding("ISO-8859-1");
// String encoding = req.getParameter(SDKConstants.param_encoding);
// // 获取请求参数中所有的信息
// Map<String, String> reqParam = getAllRequestParam(req);
// // 打印请求报文
// LogUtil.printRequestLog(reqParam);
//
// Map<String, String> valideData = null;
// if (null != reqParam && !reqParam.isEmpty()) {
// Iterator<Entry<String, String>> it = reqParam.entrySet().iterator();
// valideData = new HashMap<String, String>(reqParam.size());
// while (it.hasNext()) {
// Entry<String, String> e = it.next();
// String key = (String) e.getKey();
// String value = (String) e.getValue();
// value = new String(value.getBytes("ISO-8859-1"), encoding);
// valideData.put(key, value);
// }
// }
//
// // 验证签名
// if (!SDKUtil.validate(valideData, encoding)) {
// LogUtil.writeLog("验证签名结果[失败].");
// } else {
// System.out.println(valideData.get("orderId")); //其他字段也可用类似方式获取
// LogUtil.writeLog("验证签名结果[成功].");
// }
//
// LogUtil.writeLog("BackRcvResponse接收后台通知结束");
// }
//
// @Override
// protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
// IOException {
// this.doPost(req, resp);
// }
//
// /**
// * 获取请求参数中所有的信息
// *
// * @param request
// * @return
// */
// public static Map<String, String> getAllRequestParam(final HttpServletRequest request) {
// Map<String, String> res = new HashMap<String, String>();
// Enumeration<?> temp = request.getParameterNames();
// if (null != temp) {
// while (temp.hasMoreElements()) {
// String en = (String) temp.nextElement();
// String value = request.getParameter(en);
// res.put(en, value);
// //在报文上送时,如果字段的值为空,则不上送<下面的处理为在获取所有参数数据时,判断若值为空,则删除这个字段>
// //System.out.println("ServletUtil类247行 temp数据的键=="+en+" 值==="+value);
// if (null == res.get(en) || "".equals(res.get(en))) {
// res.remove(en);
// }
// }
// }
// return res;
// }
//
//}