mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-05-08 03:56:48 +08:00
类预订单泛型约束本版本暂时移除
This commit is contained in:
@@ -26,7 +26,7 @@ import java.util.*;
|
||||
* date 2017/3/5 20:36
|
||||
* </pre>
|
||||
*/
|
||||
public abstract class BasePayService<PC extends PayConfigStorage, O extends PayOrder> implements PayService<PC, O> {
|
||||
public abstract class BasePayService<PC extends PayConfigStorage> implements PayService<PC> {
|
||||
protected final Log LOG = LogFactory.getLog(getClass());
|
||||
protected PC payConfigStorage;
|
||||
|
||||
@@ -138,7 +138,7 @@ public abstract class BasePayService<PC extends PayConfigStorage, O extends PayO
|
||||
* @return 对应页面重定向信息
|
||||
*/
|
||||
@Override
|
||||
public String toPay(O order) {
|
||||
public <O extends PayOrder> String toPay(O order) {
|
||||
Map orderInfo = orderInfo(order);
|
||||
return buildRequest(orderInfo, MethodType.POST);
|
||||
}
|
||||
@@ -150,7 +150,7 @@ public abstract class BasePayService<PC extends PayConfigStorage, O extends PayO
|
||||
* @return 返回图片信息,支付时需要的
|
||||
*/
|
||||
@Override
|
||||
public BufferedImage genQrPay(O order) {
|
||||
public <O extends PayOrder> BufferedImage genQrPay(O order) {
|
||||
return MatrixToImageWriter.writeInfoToJpgBuff(getQrPay(order));
|
||||
}
|
||||
|
||||
@@ -463,7 +463,7 @@ public abstract class BasePayService<PC extends PayConfigStorage, O extends PayO
|
||||
* @param orderInfo 订单信息
|
||||
* @return 处理后订单信息
|
||||
*/
|
||||
public Map<String, Object> preOrderHandler(Map<String, Object> orderInfo, O payOrder){
|
||||
public <O extends PayOrder> Map<String, Object> preOrderHandler(Map<String, Object> orderInfo, O payOrder){
|
||||
return orderInfo;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.util.Map;
|
||||
* date 2016-5-18 14:09:01
|
||||
* </pre>
|
||||
*/
|
||||
public interface PayService<PC extends PayConfigStorage, O extends PayOrder> {
|
||||
public interface PayService<PC extends PayConfigStorage> {
|
||||
|
||||
|
||||
/**
|
||||
@@ -88,7 +88,7 @@ public interface PayService<PC extends PayConfigStorage, O extends PayOrder> {
|
||||
* @return 订单信息
|
||||
* @see PayOrder 支付订单信息
|
||||
*/
|
||||
Map<String, Object> orderInfo(O order);
|
||||
<O extends PayOrder>Map<String, Object> orderInfo(O order);
|
||||
|
||||
/**
|
||||
* 页面转跳支付, 返回对应页面重定向信息
|
||||
@@ -96,7 +96,7 @@ public interface PayService<PC extends PayConfigStorage, O extends PayOrder> {
|
||||
* @param order 订单信息
|
||||
* @return 对应页面重定向信息
|
||||
*/
|
||||
String toPay(O order);
|
||||
<O extends PayOrder>String toPay(O order);
|
||||
|
||||
/**
|
||||
* 创建签名
|
||||
@@ -160,14 +160,14 @@ public interface PayService<PC extends PayConfigStorage, O extends PayOrder> {
|
||||
* @param order 发起支付的订单信息
|
||||
* @return 返回图片信息,支付时需要的
|
||||
*/
|
||||
BufferedImage genQrPay(O order);
|
||||
<O extends PayOrder>BufferedImage genQrPay(O order);
|
||||
/**
|
||||
* 获取输出二维码信息,
|
||||
*
|
||||
* @param order 发起支付的订单信息
|
||||
* @return 返回二维码信息,,支付时需要的
|
||||
*/
|
||||
String getQrPay(O order);
|
||||
<O extends PayOrder>String getQrPay(O order);
|
||||
|
||||
/**
|
||||
* 刷卡付,pos主动扫码付款(条码付)
|
||||
@@ -175,7 +175,7 @@ public interface PayService<PC extends PayConfigStorage, O extends PayOrder> {
|
||||
* @param order 发起支付的订单信息
|
||||
* @return 返回支付结果
|
||||
*/
|
||||
Map<String, Object> microPay(O order);
|
||||
<O extends PayOrder>Map<String, Object> microPay(O order);
|
||||
|
||||
/**
|
||||
* 交易查询接口
|
||||
@@ -462,6 +462,6 @@ public interface PayService<PC extends PayConfigStorage, O extends PayOrder> {
|
||||
* @param payOrder 订单信息
|
||||
* @return 处理后订单信息
|
||||
*/
|
||||
Map<String, Object> preOrderHandler(Map<String, Object> orderInfo, O payOrder);
|
||||
<O extends PayOrder>Map<String, Object> preOrderHandler(Map<String, Object> orderInfo, O payOrder);
|
||||
|
||||
}
|
||||
|
||||
@@ -52,7 +52,9 @@ public class HttpRequestTemplate {
|
||||
|
||||
protected HttpHost httpProxy;
|
||||
|
||||
HttpConfigStorage configStorage;
|
||||
protected HttpConfigStorage configStorage;
|
||||
|
||||
private SSLConnectionSocketFactory sslsf;
|
||||
/**
|
||||
* 获取代理带代理地址的 HttpHost
|
||||
* @return 获取代理带代理地址的 HttpHost
|
||||
@@ -73,9 +75,9 @@ public class HttpRequestTemplate {
|
||||
.custom()
|
||||
//网络提供者
|
||||
.setDefaultCredentialsProvider(createCredentialsProvider(configStorage))
|
||||
.setConnectionManager(connectionManager(configStorage))
|
||||
//设置httpclient的SSLSocketFactory
|
||||
.setSSLSocketFactory(createSSL(configStorage))
|
||||
.setConnectionManager(connectionManager(configStorage))
|
||||
.setDefaultRequestConfig(createRequestConfig(configStorage))
|
||||
.build();
|
||||
if (null == connectionManager) {
|
||||
@@ -114,36 +116,38 @@ public class HttpRequestTemplate {
|
||||
* @return SSLConnectionSocketFactory Layered socket factory for TLS/SSL connections.
|
||||
*/
|
||||
public SSLConnectionSocketFactory createSSL( HttpConfigStorage configStorage){
|
||||
|
||||
if (null != sslsf){
|
||||
return sslsf;
|
||||
}
|
||||
if (null == configStorage.getKeystore()){
|
||||
try {
|
||||
return new SSLConnectionSocketFactory(SSLContext.getDefault());
|
||||
return sslsf = new SSLConnectionSocketFactory(SSLContext.getDefault());
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
//读取本机存放的PKCS12证书文件
|
||||
//读取本机存放的PKCS12证书文件
|
||||
try(InputStream instream = configStorage.getKeystoreInputStream()){
|
||||
//指定读取证书格式为PKCS12
|
||||
KeyStore keyStore = KeyStore.getInstance("PKCS12");
|
||||
//指定读取证书格式为PKCS12
|
||||
KeyStore keyStore = KeyStore.getInstance("PKCS12");
|
||||
|
||||
char[] password = configStorage.getStorePassword().toCharArray();
|
||||
//指定PKCS12的密码
|
||||
keyStore.load(instream, password);
|
||||
// 实例化密钥库 & 初始化密钥工厂
|
||||
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
||||
kmf.init(keyStore, password);
|
||||
// 创建 SSLContext
|
||||
SSLContext sslcontext = SSLContexts.custom()
|
||||
.loadKeyMaterial(keyStore, password).build();
|
||||
char[] password = configStorage.getStorePassword().toCharArray();
|
||||
//指定PKCS12的密码
|
||||
keyStore.load(instream, password);
|
||||
// 实例化密钥库 & 初始化密钥工厂
|
||||
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
||||
kmf.init(keyStore, password);
|
||||
// 创建 SSLContext
|
||||
SSLContext sslcontext = SSLContexts.custom()
|
||||
.loadKeyMaterial(keyStore, password).build();
|
||||
|
||||
//指定TLS版本
|
||||
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
|
||||
sslcontext, new String[]{"TLSv1"}, null,
|
||||
new DefaultHostnameVerifier());
|
||||
//指定TLS版本
|
||||
sslsf = new SSLConnectionSocketFactory(
|
||||
sslcontext, new String[]{"TLSv1"}, null,
|
||||
new DefaultHostnameVerifier());
|
||||
|
||||
return sslsf;
|
||||
return sslsf;
|
||||
} catch (IOException e) {
|
||||
LOG.error(e);
|
||||
} catch (GeneralSecurityException e) {
|
||||
@@ -168,7 +172,7 @@ public class HttpRequestTemplate {
|
||||
// 需要用户认证的代理服务器
|
||||
CredentialsProvider credsProvider = new BasicCredentialsProvider();
|
||||
credsProvider.setCredentials(
|
||||
AuthScope.ANY,
|
||||
AuthScope.ANY,
|
||||
new UsernamePasswordCredentials(configStorage.getAuthUsername(), configStorage.getAuthPassword()));
|
||||
|
||||
|
||||
@@ -348,9 +352,9 @@ public class HttpRequestTemplate {
|
||||
}
|
||||
httpRequest.setResponseType(responseType);
|
||||
try (CloseableHttpResponse response = getHttpClient().execute(httpRequest)) {
|
||||
return httpRequest.handleResponse(response);
|
||||
return httpRequest.handleResponse(response);
|
||||
}catch (IOException e){
|
||||
throw new PayErrorException(new PayException("IOException", e.getLocalizedMessage()));
|
||||
throw new PayErrorException(new PayException("IOException", e.getLocalizedMessage()));
|
||||
}finally {
|
||||
httpRequest.releaseConnection();
|
||||
}
|
||||
@@ -368,6 +372,6 @@ public class HttpRequestTemplate {
|
||||
* @return 类型对象
|
||||
*/
|
||||
public <T>T doExecute(String uri, Object request, Class<T> responseType, MethodType method){
|
||||
return doExecute(URI.create(uri), request, responseType, method);
|
||||
return doExecute(URI.create(uri), request, responseType, method);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user