//package com.ynxbd.wx.utils; // // //import java.io.UnsupportedEncodingException; //import java.net.URLEncoder; //import java.util.*; //import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletResponse; // ///* // '微信支付服务器签名支付请求请求类 // '============================================================================ // 'api说明: // 'init(app_id, app_secret, partner_key, app_key); // '初始化函数,默认给一些参数赋值,如cmdno,date等。 // 'setKey(key_)'设置商户密钥 // 'getLasterrCode(),获取最后错误号 // 'GetToken();获取Token // 'getTokenReal();Token过期后实时获取Token // 'createMd5Sign(signParams);生成Md5签名 // 'genPackage(packageParams);获取package包 // 'createSHA1Sign(signParams);创建签名SHA1 // 'sendPrepay(packageParams);提交预支付 // 'getDebugInfo(),获取debug信息 // '============================================================================ // '*/ //public class RequestHandler { // private final HttpServletRequest request; // private final HttpServletResponse response; // /** // * Token获取网关地址地址 // */ // private String tokenUrl; // /** // * 预支付网关url地址 // */ // private String gateUrl; // /** // * 查询支付通知网关URL // */ // private String notifyUrl; // /** // * 商户参数 // */ // private String appId; // private String appKey; // private String partnerKey; // private String appSecret; // private String key; // /** // * 请求的参数 // */ // private Map parameters; // /** // * Token // */ // private String token; // private String charSet; // /** // * debug信息 // */ // private String errorInfo; // private String errorCode; // // /** // * 初始构造函数。 // */ // public RequestHandler(HttpServletRequest request, HttpServletResponse response) { // this.errorCode = "0"; // this.request = request; // this.response = response; // this.charSet = "UTF-8"; // this.parameters = new HashMap<>(); // // 验证notify支付订单网关 // this.notifyUrl = "https://gw.tenpay.com/gateway/simpleverifynotifyid.xml"; // // } // // public void init() { // } // // /** // * 初始化函数。 // */ // public void init(String appId, String appSecret, String partnerKey) { // this.errorCode = "0"; // this.token = "token_"; // this.errorInfo = ""; // this.appId = appId; // this.partnerKey = partnerKey; // this.appSecret = appSecret; // this.key = partnerKey; // } // // // /** // * 获取参数值 // * // * @param parameter 参数名称 // * @return String // */ // public String getParameter(String parameter) { // String s = this.parameters.get(parameter); // return (null == s) ? "" : s; // } // // // // 特殊字符处理 // public String UrlEncode(String src) throws UnsupportedEncodingException { // return URLEncoder.encode(src, this.charSet).replace("+", "%20"); // } // // // 获取package的签名包 // public String genPackage(SortedMap packageParams) throws UnsupportedEncodingException { // String sign = createSign(packageParams); // // StringBuilder sb = new StringBuilder(); // Set> entries = packageParams.entrySet(); // for (Map.Entry entry : entries) { // String k = entry.getKey(); // String v = entry.getValue(); // sb.append(k).append("=").append(UrlEncode(v)).append("&"); // } // // // 去掉最后一个& // // System.out.println("UrlEncode后 packageValue=" + packageValue); // return sb.append("sign=").append(sign).toString(); // } // // /** // * 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 // */ // public String createSign(SortedMap packageParams) { // StringBuilder sb = new StringBuilder(); // Set> entries = packageParams.entrySet(); // for (Map.Entry entry : entries) { // String k = entry.getKey(); // String v = entry.getValue(); // if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) { // sb.append(k).append("=").append(v).append("&"); // } // } // System.out.println(sb.toString()); // System.out.println("key=" + this.getKey()); // sb.append("key=").append(this.getKey()); // String sign = MD5Util.MD5Encode(sb.toString(), this.charSet).toUpperCase(); // System.out.println("package签名:" + sign); // return sign; // // } // // /** // * 创建package签名 // */ // public boolean createMd5Sign() { // StringBuilder sb = new StringBuilder(); // Set> entries = this.parameters.entrySet(); // for (Map.Entry entry : entries) { // String k = entry.getKey(); // String v = entry.getValue(); // if (!"sign".equals(k) && null != v && !"".equals(v)) { // sb.append(k).append("=").append(v).append("&"); // } // } // // // 算出摘要 // String enc = TenPayUtil.getCharacterEncoding(this.request, this.response); // String sign = MD5Util.MD5Encode(sb.toString(), enc).toLowerCase(); // // String tenpaySign = this.getParameter("sign").toLowerCase(); // // // debug信息 // this.setErrorInfo(sb.toString() + " => sign:" + sign + " tenpaySign:" + tenpaySign); // // return tenpaySign.equals(sign); // } // // // //输出XML // public String parseXML() { // StringBuilder sb = new StringBuilder(); // sb.append(""); // Set> entries = this.parameters.entrySet(); // for (Map.Entry entry : entries) { // String k = entry.getKey(); // String v = entry.getValue(); // if (null != v && !"".equals(v) && !"appkey".equals(k)) { // sb.append("<").append(k).append(">").append(getParameter(k)).append("\n"); // } // } // sb.append(""); // return sb.toString(); // } // // // public String getTokenUrl() { // return tokenUrl; // } // // public void setTokenUrl(String tokenUrl) { // this.tokenUrl = tokenUrl; // } // // public String getGateUrl() { // return gateUrl; // } // // public void setGateUrl(String gateUrl) { // this.gateUrl = gateUrl; // } // // public String getNotifyUrl() { // return notifyUrl; // } // // public void setNotifyUrl(String notifyUrl) { // this.notifyUrl = notifyUrl; // } // // public String getAppId() { // return appId; // } // // public void setAppId(String appId) { // this.appId = appId; // } // // public String getAppKey() { // return appKey; // } // // public void setAppKey(String appKey) { // this.appKey = appKey; // } // // public String getPartnerKey() { // return partnerKey; // } // // public void setPartnerKey(String partnerKey) { // this.partnerKey = partnerKey; // } // // public String getAppSecret() { // return appSecret; // } // // public void setAppSecret(String appSecret) { // this.appSecret = appSecret; // } // // public String getKey() { // return key; // } // // public void setKey(String key) { // this.key = key; // } // // public Map getParameters() { // return parameters; // } // // public void setParameters(Map parameters) { // this.parameters = parameters; // } // // public String getToken() { // return token; // } // // public void setToken(String token) { // this.token = token; // } // // public String getCharSet() { // return charSet; // } // // public void setCharSet(String charSet) { // this.charSet = charSet; // } // // public String getErrorInfo() { // return errorInfo; // } // // public void setErrorInfo(String errorInfo) { // this.errorInfo = errorInfo; // } // // public String getErrorCode() { // return errorCode; // } // // public void setErrorCode(String errorCode) { // this.errorCode = errorCode; // } //}