微信后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

299 lines
8.8 KiB

//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<String, String> 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<String, String> packageParams) throws UnsupportedEncodingException {
// String sign = createSign(packageParams);
//
// StringBuilder sb = new StringBuilder();
// Set<Map.Entry<String, String>> entries = packageParams.entrySet();
// for (Map.Entry<String, String> 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<String, String> packageParams) {
// StringBuilder sb = new StringBuilder();
// Set<Map.Entry<String, String>> entries = packageParams.entrySet();
// for (Map.Entry<String, String> 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<Map.Entry<String, String>> entries = this.parameters.entrySet();
// for (Map.Entry<String, String> 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("<xml>");
// Set<Map.Entry<String, String>> entries = this.parameters.entrySet();
// for (Map.Entry<String, String> 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("</").append(k).append(">\n");
// }
// }
// sb.append("</xml>");
// 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<String, String> getParameters() {
// return parameters;
// }
//
// public void setParameters(Map<String, String> 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;
// }
//}