From 6739f5dc7fa683bd636001d15e6209f549c2530a Mon Sep 17 00:00:00 2001 From: xiangwb Date: Sun, 15 Apr 2018 14:01:10 +0800 Subject: [PATCH] merge --- .../xwbing/service/other/AliPayService.java | 2 +- .../xwbing/service/other/WxPayService.java | 2 +- .../com/xwbing/util/payAlipay/Base64.java | 279 ------------------ .../util/payAlipay/HttpProtocolHandler.java | 191 ------------ .../xwbing/util/payAlipay/HttpRequest.java | 152 ---------- .../xwbing/util/payAlipay/HttpResponse.java | 72 ----- .../xwbing/util/payAlipay/HttpResultType.java | 27 -- .../java/com/xwbing/util/payAlipay/MD5.java | 68 ----- .../java/com/xwbing/util/payAlipay/RSA.java | 119 -------- 9 files changed, 2 insertions(+), 910 deletions(-) delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/Base64.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/HttpProtocolHandler.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/HttpRequest.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResponse.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResultType.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/MD5.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/payAlipay/RSA.java diff --git a/boot-service/src/main/java/com/xwbing/service/other/AliPayService.java b/boot-service/src/main/java/com/xwbing/service/other/AliPayService.java index 5c5f9df..ec6b528 100644 --- a/boot-service/src/main/java/com/xwbing/service/other/AliPayService.java +++ b/boot-service/src/main/java/com/xwbing/service/other/AliPayService.java @@ -24,7 +24,7 @@ import java.util.Objects; /** * 说明: 支付宝支付接口实现 - * 项目名称: spring-demo + * 项目名称: boot-module-demo * 创建时间: 2017/5/10 17:50 * 作者: xiangwb */ diff --git a/boot-service/src/main/java/com/xwbing/service/other/WxPayService.java b/boot-service/src/main/java/com/xwbing/service/other/WxPayService.java index bdbaf3e..88fc0a1 100644 --- a/boot-service/src/main/java/com/xwbing/service/other/WxPayService.java +++ b/boot-service/src/main/java/com/xwbing/service/other/WxPayService.java @@ -28,7 +28,7 @@ import java.util.Objects; /** * 说明: 微信支付接口实现 - * 项目名称: spring-demo + * 项目名称: boot-module-demo * 创建时间: 2017/5/10 17:30 * 作者: xiangwb */ diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/Base64.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/Base64.java deleted file mode 100644 index 8fb574d..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/Base64.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright (C) 2010 The MobileSecurePay Project - * All right reserved. - * author: shiqun.shi@alipay.com - */ - -package com.xwbing.util.payAlipay; - -public final class Base64 { - - static private final int BASELENGTH = 128; - static private final int LOOKUPLENGTH = 64; - static private final int TWENTYFOURBITGROUP = 24; - static private final int EIGHTBIT = 8; - static private final int SIXTEENBIT = 16; - static private final int FOURBYTE = 4; - static private final int SIGN = -128; - static private final char PAD = '='; - static private final boolean fDebug = false; - static final private byte[] base64Alphabet = new byte[BASELENGTH]; - static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH]; - - static { - for (int i = 0; i < BASELENGTH; ++i) { - base64Alphabet[i] = -1; - } - for (int i = 'Z'; i >= 'A'; i--) { - base64Alphabet[i] = (byte) (i - 'A'); - } - for (int i = 'z'; i >= 'a'; i--) { - base64Alphabet[i] = (byte) (i - 'a' + 26); - } - - for (int i = '9'; i >= '0'; i--) { - base64Alphabet[i] = (byte) (i - '0' + 52); - } - - base64Alphabet['+'] = 62; - base64Alphabet['/'] = 63; - - for (int i = 0; i <= 25; i++) { - lookUpBase64Alphabet[i] = (char) ('A' + i); - } - - for (int i = 26, j = 0; i <= 51; i++, j++) { - lookUpBase64Alphabet[i] = (char) ('a' + j); - } - - for (int i = 52, j = 0; i <= 61; i++, j++) { - lookUpBase64Alphabet[i] = (char) ('0' + j); - } - lookUpBase64Alphabet[62] = (char) '+'; - lookUpBase64Alphabet[63] = (char) '/'; - - } - - private static boolean isWhiteSpace(char octect) { - return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9); - } - - private static boolean isPad(char octect) { - return (octect == PAD); - } - - private static boolean isData(char octect) { - return (octect < BASELENGTH && base64Alphabet[octect] != -1); - } - - /** - * Encodes hex octects into Base64 - * - * @param binaryData Array containing binaryData - * @return Encoded Base64 array - */ - public static String encode(byte[] binaryData) { - - if (binaryData == null) { - return null; - } - - int lengthDataBits = binaryData.length * EIGHTBIT; - if (lengthDataBits == 0) { - return ""; - } - - int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; - int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; - int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; - char encodedData[] = null; - - encodedData = new char[numberQuartet * 4]; - - byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; - - int encodedIndex = 0; - int dataIndex = 0; - if (fDebug) { - System.out.println("number of triplets = " + numberTriplets); - } - - for (int i = 0; i < numberTriplets; i++) { - b1 = binaryData[dataIndex++]; - b2 = binaryData[dataIndex++]; - b3 = binaryData[dataIndex++]; - - if (fDebug) { - System.out.println("b1= " + b1 + ", b2= " + b2 + ", b3= " + b3); - } - - l = (byte) (b2 & 0x0f); - k = (byte) (b1 & 0x03); - - byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); - byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); - byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); - - if (fDebug) { - System.out.println("val2 = " + val2); - System.out.println("k4 = " + (k << 4)); - System.out.println("vak = " + (val2 | (k << 4))); - } - - encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; - encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3]; - encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f]; - } - - // form integral number of 6-bit groups - if (fewerThan24bits == EIGHTBIT) { - b1 = binaryData[dataIndex]; - k = (byte) (b1 & 0x03); - if (fDebug) { - System.out.println("b1=" + b1); - System.out.println("b1<<2 = " + (b1 >> 2)); - } - byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); - encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4]; - encodedData[encodedIndex++] = PAD; - encodedData[encodedIndex++] = PAD; - } else if (fewerThan24bits == SIXTEENBIT) { - b1 = binaryData[dataIndex]; - b2 = binaryData[dataIndex + 1]; - l = (byte) (b2 & 0x0f); - k = (byte) (b1 & 0x03); - - byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); - byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); - - encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; - encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2]; - encodedData[encodedIndex++] = PAD; - } - - return new String(encodedData); - } - - /** - * Decodes Base64 data into octects - * - * @param encoded string containing Base64 data - * @return Array containind decoded data. - */ - public static byte[] decode(String encoded) { - - if (encoded == null) { - return null; - } - - char[] base64Data = encoded.toCharArray(); - // remove white spaces - int len = removeWhiteSpace(base64Data); - - if (len % FOURBYTE != 0) { - return null;//should be divisible by four - } - - int numberQuadruple = (len / FOURBYTE); - - if (numberQuadruple == 0) { - return new byte[0]; - } - - byte decodedData[] = null; - byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; - char d1 = 0, d2 = 0, d3 = 0, d4 = 0; - - int i = 0; - int encodedIndex = 0; - int dataIndex = 0; - decodedData = new byte[(numberQuadruple) * 3]; - - for (; i < numberQuadruple - 1; i++) { - - if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])) - || !isData((d3 = base64Data[dataIndex++])) - || !isData((d4 = base64Data[dataIndex++]))) { - return null; - }//if found "no data" just return null - - b1 = base64Alphabet[d1]; - b2 = base64Alphabet[d2]; - b3 = base64Alphabet[d3]; - b4 = base64Alphabet[d4]; - - decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); - decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); - decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); - } - - if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) { - return null;//if found "no data" just return null - } - - b1 = base64Alphabet[d1]; - b2 = base64Alphabet[d2]; - - d3 = base64Data[dataIndex++]; - d4 = base64Data[dataIndex++]; - if (!isData((d3)) || !isData((d4))) {//Check if they are PAD characters - if (isPad(d3) && isPad(d4)) { - if ((b2 & 0xf) != 0)//last 4 bits should be zero - { - return null; - } - byte[] tmp = new byte[i * 3 + 1]; - System.arraycopy(decodedData, 0, tmp, 0, i * 3); - tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); - return tmp; - } else if (!isPad(d3) && isPad(d4)) { - b3 = base64Alphabet[d3]; - if ((b3 & 0x3) != 0)//last 2 bits should be zero - { - return null; - } - byte[] tmp = new byte[i * 3 + 2]; - System.arraycopy(decodedData, 0, tmp, 0, i * 3); - tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); - tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); - return tmp; - } else { - return null; - } - } else { //No PAD e.g 3cQl - b3 = base64Alphabet[d3]; - b4 = base64Alphabet[d4]; - decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); - decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); - decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); - - } - - return decodedData; - } - - /** - * remove WhiteSpace from MIME containing encoded Base64 data. - * - * @param data the byte array of base64 data (with WS) - * @return the new length - */ - private static int removeWhiteSpace(char[] data) { - if (data == null) { - return 0; - } - - // count characters that's not whitespace - int newSize = 0; - int len = data.length; - for (int i = 0; i < len; i++) { - if (!isWhiteSpace(data[i])) { - data[newSize++] = data[i]; - } - } - return newSize; - } -} diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpProtocolHandler.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpProtocolHandler.java deleted file mode 100644 index 146d016..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpProtocolHandler.java +++ /dev/null @@ -1,191 +0,0 @@ -package com.xwbing.util.payAlipay; - -import org.apache.commons.httpclient.*; -import org.apache.commons.httpclient.methods.GetMethod; -import org.apache.commons.httpclient.methods.PostMethod; -import org.apache.commons.httpclient.methods.multipart.*; -import org.apache.commons.httpclient.params.HttpMethodParams; -import org.apache.commons.httpclient.util.IdleConnectionTimeoutThread; - -import java.io.File; -import java.io.IOException; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.List; - -/* * - *类名:HttpProtocolHandler - *功能:HttpClient方式访问 - *详细:获取远程HTTP数据 - *版本:3.3 - *日期:2012-08-17 - *说明: - *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - */ - -public class HttpProtocolHandler { - - private static String DEFAULT_CHARSET = "GBK"; - - /** 连接超时时间,由bean factory设置,缺省为8秒钟 */ - private int defaultConnectionTimeout = 8000; - - /** 回应超时时间, 由bean factory设置,缺省为30秒钟 */ - private int defaultSoTimeout = 30000; - - /** 闲置连接超时时间, 由bean factory设置,缺省为60秒钟 */ - private int defaultIdleConnTimeout = 60000; - - private int defaultMaxConnPerHost = 30; - - private int defaultMaxTotalConn = 80; - - /** 默认等待HttpConnectionManager返回连接超时(只有在达到最大连接数时起作用):1秒*/ - private static final long defaultHttpConnectionManagerTimeout = 3 * 1000; - - /** - * HTTP连接管理器,该连接管理器必须是线程安全的. - */ - private HttpConnectionManager connectionManager; - - private static HttpProtocolHandler httpProtocolHandler = new HttpProtocolHandler(); - - /** - * 工厂方法 - * - * @return - */ - public static HttpProtocolHandler getInstance() { - return httpProtocolHandler; - } - - /** - * 私有的构造方法 - */ - private HttpProtocolHandler() { - // 创建一个线程安全的HTTP连接池 - connectionManager = new MultiThreadedHttpConnectionManager(); - connectionManager.getParams().setDefaultMaxConnectionsPerHost(defaultMaxConnPerHost); - connectionManager.getParams().setMaxTotalConnections(defaultMaxTotalConn); - - IdleConnectionTimeoutThread ict = new IdleConnectionTimeoutThread(); - ict.addConnectionManager(connectionManager); - ict.setConnectionTimeout(defaultIdleConnTimeout); - - ict.start(); - } - - /** - * 执行Http请求 - * - * @param request 请求数据 - * @param strParaFileName 文件类型的参数名 - * @param strFilePath 文件路径 - * @return - * @throws HttpException, IOException - */ - public HttpResponse execute(HttpRequest request, String strParaFileName, String strFilePath) throws HttpException, IOException { - HttpClient httpclient = new HttpClient(connectionManager); - - // 设置连接超时 - int connectionTimeout = defaultConnectionTimeout; - if (request.getConnectionTimeout() > 0) { - connectionTimeout = request.getConnectionTimeout(); - } - httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout); - - // 设置回应超时 - int soTimeout = defaultSoTimeout; - if (request.getTimeout() > 0) { - soTimeout = request.getTimeout(); - } - httpclient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout); - - // 设置等待ConnectionManager释放connection的时间 - httpclient.getParams().setConnectionManagerTimeout(defaultHttpConnectionManagerTimeout); - - String charset = request.getCharset(); - charset = charset == null ? DEFAULT_CHARSET : charset; - HttpMethod method = null; - - //get模式且不带上传文件 - if (request.getMethod().equals(HttpRequest.METHOD_GET)) { - method = new GetMethod(request.getUrl()); - method.getParams().setCredentialCharset(charset); - - // parseNotifyConfig会保证使用GET方法时,request一定使用QueryString - method.setQueryString(request.getQueryString()); - } else if(strParaFileName.equals("") && strFilePath.equals("")) { - //post模式且不带上传文件 - method = new PostMethod(request.getUrl()); - ((PostMethod) method).addParameters(request.getParameters()); - method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; text/html; charset=" + charset); - } - else { - //post模式且带上传文件 - method = new PostMethod(request.getUrl()); - List parts = new ArrayList(); - for (int i = 0; i < request.getParameters().length; i++) { - parts.add(new StringPart(request.getParameters()[i].getName(), request.getParameters()[i].getValue(), charset)); - } - //增加文件参数,strParaFileName是参数名,使用本地文件 - parts.add(new FilePart(strParaFileName, new FilePartSource(new File(strFilePath)))); - - // 设置请求体 - ((PostMethod) method).setRequestEntity(new MultipartRequestEntity(parts.toArray(new Part[0]), new HttpMethodParams())); - } - - // 设置Http Header中的User-Agent属性 - method.addRequestHeader("User-Agent", "Mozilla/4.0"); - HttpResponse response = new HttpResponse(); - - try { - httpclient.executeMethod(method); - if (request.getResultType().equals(HttpResultType.STRING)) { - response.setStringResult(method.getResponseBodyAsString()); - } else if (request.getResultType().equals(HttpResultType.BYTES)) { - response.setByteResult(method.getResponseBody()); - } - response.setResponseHeaders(method.getResponseHeaders()); - } catch (UnknownHostException ex) { - - return null; - } catch (IOException ex) { - - return null; - } catch (Exception ex) { - - return null; - } finally { - method.releaseConnection(); - } - return response; - } - - /** - * 将NameValuePairs数组转变为字符串 - * - * @param nameValues - * @return - */ - protected String toString(NameValuePair[] nameValues) { - if (nameValues == null || nameValues.length == 0) { - return "null"; - } - - StringBuffer buffer = new StringBuffer(); - - for (int i = 0; i < nameValues.length; i++) { - NameValuePair nameValue = nameValues[i]; - - if (i == 0) { - buffer.append(nameValue.getName() + "=" + nameValue.getValue()); - } else { - buffer.append("&" + nameValue.getName() + "=" + nameValue.getValue()); - } - } - - return buffer.toString(); - } -} diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpRequest.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpRequest.java deleted file mode 100644 index 2ea12fe..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpRequest.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.xwbing.util.payAlipay; - -import org.apache.commons.httpclient.NameValuePair; - -/* * - *类名:HttpRequest - *功能:Http请求对象的封装 - *详细:封装Http请求 - *版本:3.3 - *日期:2011-08-17 - *说明: - *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - */ - -public class HttpRequest { - - /** HTTP GET method */ - public static final String METHOD_GET = "GET"; - - /** HTTP POST method */ - public static final String METHOD_POST = "POST"; - - /** - * 待请求的url - */ - private String url = null; - - /** - * 默认的请求方式 - */ - private String method = METHOD_POST; - - private int timeout = 0; - - private int connectionTimeout = 0; - - /** - * Post方式请求时组装好的参数值对 - */ - private NameValuePair[] parameters = null; - - /** - * Get方式请求时对应的参数 - */ - private String queryString = null; - - /** - * 默认的请求编码方式 - */ - private String charset = "GBK"; - - /** - * 请求发起方的ip地址 - */ - private String clientIp; - - /** - * 请求返回的方式 - */ - private HttpResultType resultType = HttpResultType.BYTES; - - public HttpRequest(HttpResultType resultType) { - super(); - this.resultType = resultType; - } - - /** - * @return Returns the clientIp. - */ - public String getClientIp() { - return clientIp; - } - - /** - * @param clientIp The clientIp to set. - */ - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public NameValuePair[] getParameters() { - return parameters; - } - - public void setParameters(NameValuePair[] parameters) { - this.parameters = parameters; - } - - public String getQueryString() { - return queryString; - } - - public void setQueryString(String queryString) { - this.queryString = queryString; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public String getMethod() { - return method; - } - - public void setMethod(String method) { - this.method = method; - } - - public int getConnectionTimeout() { - return connectionTimeout; - } - - public void setConnectionTimeout(int connectionTimeout) { - this.connectionTimeout = connectionTimeout; - } - - public int getTimeout() { - return timeout; - } - - public void setTimeout(int timeout) { - this.timeout = timeout; - } - - /** - * @return Returns the charset. - */ - public String getCharset() { - return charset; - } - - /** - * @param charset The charset to set. - */ - public void setCharset(String charset) { - this.charset = charset; - } - - public HttpResultType getResultType() { - return resultType; - } - - public void setResultType(HttpResultType resultType) { - this.resultType = resultType; - } - -} diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResponse.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResponse.java deleted file mode 100644 index ffc09ba..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResponse.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.xwbing.util.payAlipay; - -import org.apache.commons.httpclient.Header; - -import java.io.UnsupportedEncodingException; - - -/* * - *类名:HttpResponse - *功能:Http返回对象的封装 - *详细:封装Http返回信息 - *版本:3.3 - *日期:2011-08-17 - *说明: - *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - */ - -public class HttpResponse { - - /** - * 返回中的Header信息 - */ - private Header[] responseHeaders; - - /** - * String类型的result - */ - private String stringResult; - - /** - * btye类型的result - */ - private byte[] byteResult; - - public Header[] getResponseHeaders() { - return responseHeaders; - } - - public void setResponseHeaders(Header[] responseHeaders) { - this.responseHeaders = responseHeaders; - } - - public byte[] getByteResult() { - if (byteResult != null) { - return byteResult; - } - if (stringResult != null) { - return stringResult.getBytes(); - } - return null; - } - - public void setByteResult(byte[] byteResult) { - this.byteResult = byteResult; - } - - public String getStringResult() throws UnsupportedEncodingException { - if (stringResult != null) { - return stringResult; - } - if (byteResult != null) { - return new String(byteResult, "utf-8"); - } - return null; - } - - public void setStringResult(String stringResult) { - this.stringResult = stringResult; - } - -} diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResultType.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResultType.java deleted file mode 100644 index aff9195..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/HttpResultType.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Alipay.com Inc. - * Copyright (c) 2004-2005 All Rights Reserved. - */ -package com.xwbing.util.payAlipay; - -/* * - *类名:HttpResultType - *功能:表示Http返回的结果字符方式 - *详细:表示Http返回的结果字符方式 - *版本:3.3 - *日期:2012-08-17 - *说明: - *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - */ -public enum HttpResultType { - /** - * 字符串方式 - */ - STRING, - - /** - * 字节数组方式 - */ - BYTES -} diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/MD5.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/MD5.java deleted file mode 100644 index 772560d..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/MD5.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.xwbing.util.payAlipay; - -import org.apache.commons.codec.digest.DigestUtils; - -import java.io.UnsupportedEncodingException; -import java.security.SignatureException; - -/** -* 功能:支付宝MD5签名处理核心文件,不需要修改 -* 版本:3.3 -* 修改日期:2012-08-17 -* 说明: -* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 -* 该代码仅供学习和研究支付宝接口使用,只是提供一个 -* */ - -public class MD5 { - - /** - * 签名字符串 - * @param text 需要签名的字符串 - * @param key 密钥 - * @param input_charset 编码格式 - * @return 签名结果 - */ - public static String sign(String text, String key, String input_charset) { - text = text + key; - return DigestUtils.md5Hex(getContentBytes(text, input_charset)); - } - - /** - * 签名字符串 - * @param text 需要签名的字符串 - * @param sign 签名结果 - * @param key 密钥 - * @param input_charset 编码格式 - * @return 签名结果 - */ - public static boolean verify(String text, String sign, String key, String input_charset) { - text = text + key; - String mysign = DigestUtils.md5Hex(getContentBytes(text, input_charset)); - if(mysign.equals(sign)) { - return true; - } - else { - return false; - } - } - - /** - * @param content - * @param charset - * @return - * @throws SignatureException - * @throws UnsupportedEncodingException - */ - private static byte[] getContentBytes(String content, String charset) { - if (charset == null || "".equals(charset)) { - return content.getBytes(); - } - try { - return content.getBytes(charset); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException("MD5签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset); - } - } - -} \ No newline at end of file diff --git a/boot-service/src/main/java/com/xwbing/util/payAlipay/RSA.java b/boot-service/src/main/java/com/xwbing/util/payAlipay/RSA.java deleted file mode 100644 index 1e19d75..0000000 --- a/boot-service/src/main/java/com/xwbing/util/payAlipay/RSA.java +++ /dev/null @@ -1,119 +0,0 @@ - -package com.xwbing.util.payAlipay; - - -import javax.crypto.Cipher; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -public class RSA { - public static final String SIGN_ALGORITHMS = "SHA1WithRSA"; - - /** - * RSA签名 - * - * @param content 待签名数据 - * @param privateKey 商户私钥 - * @param input_charset 编码格式 - * @return 签名值 - */ - public static String sign(String content, String privateKey, String input_charset) { - try { - PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(privateKey)); - KeyFactory keyf = KeyFactory.getInstance("RSA"); - PrivateKey priKey = keyf.generatePrivate(priPKCS8); - java.security.Signature signature = java.security.Signature - .getInstance(SIGN_ALGORITHMS); - signature.initSign(priKey); - signature.update(content.getBytes(input_charset)); - byte[] signed = signature.sign(); - return Base64.encode(signed); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * RSA验签名检查 - * - * @param content 待签名数据 - * @param sign 签名值 - * @param ali_public_key 支付宝公钥 - * @param input_charset 编码格式 - * @return 布尔值 - */ - public static boolean verify(String content, String sign, String ali_public_key, String input_charset) { - try { - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - byte[] encodedKey = Base64.decode(ali_public_key); - PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); - java.security.Signature signature = java.security.Signature - .getInstance(SIGN_ALGORITHMS); - signature.initVerify(pubKey); - signature.update(content.getBytes(input_charset)); - boolean bverify = signature.verify(Base64.decode(sign)); - return bverify; - - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } - - /** - * 解密 - * - * @param content 密文 - * @param private_key 商户私钥 - * @param input_charset 编码格式 - * @return 解密后的字符串 - */ - public static String decrypt(String content, String private_key, String input_charset) throws Exception { - PrivateKey prikey = getPrivateKey(private_key); - Cipher cipher = Cipher.getInstance("RSA"); - cipher.init(Cipher.DECRYPT_MODE, prikey); - InputStream ins = new ByteArrayInputStream(Base64.decode(content)); - ByteArrayOutputStream writer = new ByteArrayOutputStream(); - //rsa解密的字节大小最多是128,将需要解密的内容,按128位拆开解密 - byte[] buf = new byte[128]; - int bufl; - while ((bufl = ins.read(buf)) != -1) { - byte[] block = null; - - if (buf.length == bufl) { - block = buf; - } else { - block = new byte[bufl]; - for (int i = 0; i < bufl; i++) { - block[i] = buf[i]; - } - } - writer.write(cipher.doFinal(block)); - } - return new String(writer.toByteArray(), input_charset); - } - - /** - * 得到私钥 - * - * @param key 密钥字符串(经过base64编码) - * @throws Exception - */ - public static PrivateKey getPrivateKey(String key) throws Exception { - byte[] keyBytes; - keyBytes = Base64.decode(key); - PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - PrivateKey privateKey = keyFactory.generatePrivate(keySpec); - return privateKey; - } - - -}