From b38c2b7f2a3bbe3c012d490aa553ebfc22551602 Mon Sep 17 00:00:00 2001 From: egzosn Date: Mon, 25 Nov 2019 20:10:03 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E7=B1=BB=E9=A2=84=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=E7=BA=A6=E6=9D=9F=E6=9C=AC=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E7=A7=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/egzosn/pay/ali/api/AliPayService.java | 2 +- .../pay/ali/before/api/AliPayService.java | 2 +- .../egzosn/pay/common/api/BasePayService.java | 8 +-- .../com/egzosn/pay/common/api/PayService.java | 14 ++--- .../pay/common/http/HttpRequestTemplate.java | 54 ++++++++++--------- .../egzosn/pay/fuiou/api/FuiouPayService.java | 2 +- .../pay/payoneer/api/AdvancedPayService.java | 2 +- .../pay/payoneer/api/PayoneerPayService.java | 2 +- .../pay/paypal/api/PayPalPayService.java | 2 +- .../egzosn/pay/union/api/UnionPayService.java | 2 +- .../wx/youdian/api/WxYouDianPayService.java | 2 +- .../com/egzosn/pay/wx/api/WxPayService.java | 2 +- .../egzosn/pay/yiji/api/YiJiPayService.java | 2 +- 13 files changed, 50 insertions(+), 46 deletions(-) diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java index 1dcdeeb..ff51eb2 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java @@ -26,7 +26,7 @@ import java.util.*; * email egzosn@gmail.com * date 2017-2-22 20:09 */ -public class AliPayService extends BasePayService { +public class AliPayService extends BasePayService { /** * 正式测试环境 diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java index 5ad9318..ae9c93b 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java @@ -35,7 +35,7 @@ import static com.egzosn.pay.ali.api.AliPayService.SIGN; * @see com.egzosn.pay.ali.api.AliPayService */ @Deprecated -public class AliPayService extends BasePayService { +public class AliPayService extends BasePayService { diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java index ef39af7..c955e04 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java @@ -26,7 +26,7 @@ import java.util.*; * date 2017/3/5 20:36 * */ -public abstract class BasePayService implements PayService { +public abstract class BasePayService implements PayService { protected final Log LOG = LogFactory.getLog(getClass()); protected PC payConfigStorage; @@ -138,7 +138,7 @@ public abstract class BasePayService String toPay(O order) { Map orderInfo = orderInfo(order); return buildRequest(orderInfo, MethodType.POST); } @@ -150,7 +150,7 @@ public abstract class BasePayService BufferedImage genQrPay(O order) { return MatrixToImageWriter.writeInfoToJpgBuff(getQrPay(order)); } @@ -463,7 +463,7 @@ public abstract class BasePayService preOrderHandler(Map orderInfo, O payOrder){ + public Map preOrderHandler(Map orderInfo, O payOrder){ return orderInfo; } diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java index 70fe5e5..346b3f5 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java @@ -20,7 +20,7 @@ import java.util.Map; * date 2016-5-18 14:09:01 * */ -public interface PayService { +public interface PayService { /** @@ -88,7 +88,7 @@ public interface PayService { * @return 订单信息 * @see PayOrder 支付订单信息 */ - Map orderInfo(O order); + Map orderInfo(O order); /** * 页面转跳支付, 返回对应页面重定向信息 @@ -96,7 +96,7 @@ public interface PayService { * @param order 订单信息 * @return 对应页面重定向信息 */ - String toPay(O order); + String toPay(O order); /** * 创建签名 @@ -160,14 +160,14 @@ public interface PayService { * @param order 发起支付的订单信息 * @return 返回图片信息,支付时需要的 */ - BufferedImage genQrPay(O order); + BufferedImage genQrPay(O order); /** * 获取输出二维码信息, * * @param order 发起支付的订单信息 * @return 返回二维码信息,,支付时需要的 */ - String getQrPay(O order); + String getQrPay(O order); /** * 刷卡付,pos主动扫码付款(条码付) @@ -175,7 +175,7 @@ public interface PayService { * @param order 发起支付的订单信息 * @return 返回支付结果 */ - Map microPay(O order); + Map microPay(O order); /** * 交易查询接口 @@ -462,6 +462,6 @@ public interface PayService { * @param payOrder 订单信息 * @return 处理后订单信息 */ - Map preOrderHandler(Map orderInfo, O payOrder); + Map preOrderHandler(Map orderInfo, O payOrder); } diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java b/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java index c816e32..ceaf45b 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java @@ -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 doExecute(String uri, Object request, Class responseType, MethodType method){ - return doExecute(URI.create(uri), request, responseType, method); + return doExecute(URI.create(uri), request, responseType, method); } } diff --git a/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java b/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java index 2c67b2c..fdbfde6 100644 --- a/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java +++ b/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java @@ -21,7 +21,7 @@ import java.util.*; * create 2017 2017/1/16 0016 * */ -public class FuiouPayService extends BasePayService { +public class FuiouPayService extends BasePayService { /** * 正式域名 diff --git a/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/AdvancedPayService.java b/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/AdvancedPayService.java index 76c3a0e..bd04eff 100644 --- a/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/AdvancedPayService.java +++ b/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/AdvancedPayService.java @@ -16,7 +16,7 @@ import java.util.Map; * */ -public interface AdvancedPayService extends PayService { +public interface AdvancedPayService extends PayService { /** * 获取授权页面 * @param payeeId 用户id diff --git a/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java b/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java index f0f2de8..4d61b73 100644 --- a/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java +++ b/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java @@ -33,7 +33,7 @@ import java.util.*; * create 2018-01-19 * */ -public class PayoneerPayService extends BasePayService implements AdvancedPayService { +public class PayoneerPayService extends BasePayService implements AdvancedPayService { /** * 测试地址 */ diff --git a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java index 6519c9d..b94f887 100644 --- a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java +++ b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java @@ -29,7 +29,7 @@ import java.util.concurrent.locks.Lock; * email egzosn@gmail.com * date 2018-4-8 ‏‎22:15:09 */ -public class PayPalPayService extends BasePayService{ +public class PayPalPayService extends BasePayService{ /** * 沙箱环境 diff --git a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java index 0637aa1..90aaad6 100644 --- a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java +++ b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java @@ -38,7 +38,7 @@ import java.util.*; * create 2017 2017/11/5 * */ -public class UnionPayService extends BasePayService { +public class UnionPayService extends BasePayService { /** * 测试域名 */ diff --git a/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java b/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java index 7134cfb..2d7775f 100644 --- a/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java +++ b/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java @@ -27,7 +27,7 @@ import java.util.concurrent.locks.Lock; * email egzosn@gmail.com * date 2017/01/12 22:58 */ -public class WxYouDianPayService extends BasePayService { +public class WxYouDianPayService extends BasePayService { private final static String URL = "http://life.51youdian.com/Api/CheckoutCounter/"; diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java index 9368a2f..5027d82 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java @@ -36,7 +36,7 @@ import static com.egzosn.pay.wx.bean.WxTransferType.*; * date 2016-5-18 14:09:01 * */ -public class WxPayService extends BasePayService { +public class WxPayService extends BasePayService { /** diff --git a/pay-java-yiji/src/main/java/com/egzosn/pay/yiji/api/YiJiPayService.java b/pay-java-yiji/src/main/java/com/egzosn/pay/yiji/api/YiJiPayService.java index 911c9a2..cece47f 100644 --- a/pay-java-yiji/src/main/java/com/egzosn/pay/yiji/api/YiJiPayService.java +++ b/pay-java-yiji/src/main/java/com/egzosn/pay/yiji/api/YiJiPayService.java @@ -27,7 +27,7 @@ import java.util.TreeMap; * email egzosn@gmail.com * * date 2019/04/15 22:51 */ -public class YiJiPayService extends BasePayService { +public class YiJiPayService extends BasePayService { /** * 正式测试环境 From 0be5bfa2c5c9cc151d368a44983d117a1522c036 Mon Sep 17 00:00:00 2001 From: egzosn Date: Mon, 25 Nov 2019 20:28:59 +0800 Subject: [PATCH 02/12] =?UTF-8?q?2.12.9=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pay-java-ali/pom.xml | 8 +------- pay-java-common/pom.xml | 2 +- .../java/com/egzosn/pay/common/api/PayMessageRouter.java | 1 + .../main/java/com/egzosn/pay/common/api/PayService.java | 6 ++++++ pay-java-demo/pom.xml | 2 +- pay-java-fuiou/pom.xml | 2 +- pay-java-payoneer/pom.xml | 2 +- pay-java-paypal/pom.xml | 2 +- pay-java-union/pom.xml | 2 +- pay-java-wx-youdian/pom.xml | 2 +- pay-java-wx/pom.xml | 2 +- pay-java-yiji/pom.xml | 2 +- pom.xml | 8 ++++---- 13 files changed, 21 insertions(+), 20 deletions(-) diff --git a/pay-java-ali/pom.xml b/pay-java-ali/pom.xml index 942190e..9b17eb2 100644 --- a/pay-java-ali/pom.xml +++ b/pay-java-ali/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 pay-java-ali @@ -19,12 +19,6 @@ pay-java-common - diff --git a/pay-java-common/pom.xml b/pay-java-common/pom.xml index ea25260..1dfa318 100644 --- a/pay-java-common/pom.xml +++ b/pay-java-common/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 jar diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouter.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouter.java index 990e24e..24e849b 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouter.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouter.java @@ -124,6 +124,7 @@ public class PayMessageRouter { * 处理支付消息 * * @param payMessage 支付消息 + * @param storage 支付配置 * @return 支付输出结果 */ public PayOutMessage route(Map payMessage, PayConfigStorage storage) { diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java index 346b3f5..ce065ea 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java @@ -86,6 +86,7 @@ public interface PayService { * * @param order 支付订单 * @return 订单信息 + * @param 预订单类型 * @see PayOrder 支付订单信息 */ Map orderInfo(O order); @@ -94,6 +95,7 @@ public interface PayService { * 页面转跳支付, 返回对应页面重定向信息 * * @param order 订单信息 + * @param 预订单类型 * @return 对应页面重定向信息 */ String toPay(O order); @@ -158,6 +160,7 @@ public interface PayService { * 获取输出二维码,用户返回给支付端, * * @param order 发起支付的订单信息 + * @param 预订单类型 * @return 返回图片信息,支付时需要的 */ BufferedImage genQrPay(O order); @@ -165,6 +168,7 @@ public interface PayService { * 获取输出二维码信息, * * @param order 发起支付的订单信息 + * @param 预订单类型 * @return 返回二维码信息,,支付时需要的 */ String getQrPay(O order); @@ -173,6 +177,7 @@ public interface PayService { * 刷卡付,pos主动扫码付款(条码付) * 刷脸付 * @param order 发起支付的订单信息 + * @param 预订单类型 * @return 返回支付结果 */ Map microPay(O order); @@ -460,6 +465,7 @@ public interface PayService { * 如果需要进行扩展请重写该方法即可 * @param orderInfo 商户平台预订单信息 * @param payOrder 订单信息 + * @param 预订单类型 * @return 处理后订单信息 */ Map preOrderHandler(Map orderInfo, O payOrder); diff --git a/pay-java-demo/pom.xml b/pay-java-demo/pom.xml index 144cc7f..17c0e16 100644 --- a/pay-java-demo/pom.xml +++ b/pay-java-demo/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 war diff --git a/pay-java-fuiou/pom.xml b/pay-java-fuiou/pom.xml index 15c9e85..63e5797 100644 --- a/pay-java-fuiou/pom.xml +++ b/pay-java-fuiou/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 pay-java-fuiou diff --git a/pay-java-payoneer/pom.xml b/pay-java-payoneer/pom.xml index e8a7e2e..dd049db 100644 --- a/pay-java-payoneer/pom.xml +++ b/pay-java-payoneer/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 pay-java-payoneer diff --git a/pay-java-paypal/pom.xml b/pay-java-paypal/pom.xml index 3cdb33f..6dbe403 100644 --- a/pay-java-paypal/pom.xml +++ b/pay-java-paypal/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 diff --git a/pay-java-union/pom.xml b/pay-java-union/pom.xml index 6310983..cadae0c 100644 --- a/pay-java-union/pom.xml +++ b/pay-java-union/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 diff --git a/pay-java-wx-youdian/pom.xml b/pay-java-wx-youdian/pom.xml index 610977d..cdd7f5d 100644 --- a/pay-java-wx-youdian/pom.xml +++ b/pay-java-wx-youdian/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 pay-java-wx-youdian diff --git a/pay-java-wx/pom.xml b/pay-java-wx/pom.xml index bee89ca..0842391 100644 --- a/pay-java-wx/pom.xml +++ b/pay-java-wx/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 pay-java-wx diff --git a/pay-java-yiji/pom.xml b/pay-java-yiji/pom.xml index 7ecd98b..c1d5845 100644 --- a/pay-java-yiji/pom.xml +++ b/pay-java-yiji/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9-SNAPSHOT + 2.12.9 4.0.0 diff --git a/pom.xml b/pom.xml index 775e767..a2e4081 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.egzosn pay-java-parent pom - 2.12.9-SNAPSHOT + 2.12.9 Pay Java - Parent Pay Java Parent @@ -52,13 +52,13 @@ pay-java-payoneer pay-java-paypal pay-java-yiji - pay-java-demo + - 2.12.9-SNAPSHOT + 2.12.9 4.5.4 1.2.17 1.2.58 @@ -183,7 +183,7 @@ sign-artifacts - none + install sign From fb619526f1b6396d2c044617be1ecf658273fda3 Mon Sep 17 00:00:00 2001 From: egzosn Date: Mon, 25 Nov 2019 20:41:40 +0800 Subject: [PATCH 03/12] =?UTF-8?q?2.12.9=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index a2e4081..8db4562 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ pay-java-payoneer pay-java-paypal pay-java-yiji - + pay-java-demo @@ -183,10 +183,10 @@ sign-artifacts - install - + none + From a4bd0f0dbfb4f878510628d74bf8da57ad718cd4 Mon Sep 17 00:00:00 2001 From: egzosn Date: Mon, 25 Nov 2019 20:42:40 +0800 Subject: [PATCH 04/12] =?UTF-8?q?2.12.9=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ef5cfc9..bcb3242 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ com.egzosn {module-name} - 2.12.8 + 2.12.9 ``` From 607a4fd9c5df323d127a4fa40d1c1f3aacb59f45 Mon Sep 17 00:00:00 2001 From: egzosn Date: Tue, 26 Nov 2019 22:50:21 +0800 Subject: [PATCH 05/12] =?UTF-8?q?2.12.9=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pay-java-payoneer/README.md | 2 +- pay-java-union/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pay-java-payoneer/README.md b/pay-java-payoneer/README.md index 40143db..06e14f3 100644 --- a/pay-java-payoneer/README.md +++ b/pay-java-payoneer/README.md @@ -102,7 +102,7 @@ ```java - Map result = service..query(null, "我方系统单号"); + Map result = service.query(null, "我方系统单号"); ``` diff --git a/pay-java-union/README.md b/pay-java-union/README.md index dad8d53..40951df 100644 --- a/pay-java-union/README.md +++ b/pay-java-union/README.md @@ -180,7 +180,7 @@ ```java - Map result = service..query(null, "我方系统单号"); + Map result = service.query(null, "我方系统单号"); ``` From 31e1b2ea612d58859a592e3dc55594e640926a7b Mon Sep 17 00:00:00 2001 From: egzosn Date: Tue, 26 Nov 2019 22:53:52 +0800 Subject: [PATCH 06/12] =?UTF-8?q?2.12.9=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pay-java-ali/README.md | 2 +- pay-java-wx/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pay-java-ali/README.md b/pay-java-ali/README.md index 99bdc99..e50a842 100644 --- a/pay-java-ali/README.md +++ b/pay-java-ali/README.md @@ -197,7 +197,7 @@ ```java - Map result = service..query("支付宝单号", "我方系统单号"); + Map result = service.query("支付宝单号", "我方系统单号"); ``` diff --git a/pay-java-wx/README.md b/pay-java-wx/README.md index d98f264..fa69395 100644 --- a/pay-java-wx/README.md +++ b/pay-java-wx/README.md @@ -194,7 +194,7 @@ ```java - Map result = service..query("微信单号", "我方系统单号"); + Map result = service.query("微信单号", "我方系统单号"); ``` From f4cec5623352975fa0015285f2f7c6ad8d40b913 Mon Sep 17 00:00:00 2001 From: egan Date: Wed, 27 Nov 2019 16:45:44 +0800 Subject: [PATCH 07/12] wx --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bcb3242..c65e3be 100644 --- a/README.md +++ b/README.md @@ -67,4 +67,4 @@ E-Mail:egzosn@gmail.com QQ群:542193977 -微信群: ![微信群](https://images.gitee.com/uploads/images/2019/1117/151422_5085eaae_1221178.jpeg "wx.jpg") +微信群: ![微信群](https://www.egzosn.com/images/wx.jpeg "wx.jpg") From 307009dc59910d57a57206a76f13bf68fe2583d1 Mon Sep 17 00:00:00 2001 From: egan Date: Wed, 27 Nov 2019 16:46:36 +0800 Subject: [PATCH 08/12] wx --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c65e3be..cc7525c 100644 --- a/README.md +++ b/README.md @@ -67,4 +67,4 @@ E-Mail:egzosn@gmail.com QQ群:542193977 -微信群: ![微信群](https://www.egzosn.com/images/wx.jpeg "wx.jpg") +微信群: ![微信群](https://www.egzosn.com/images/wx.jpg "wx.jpg") From 16b26d4a2f62bfac5a3b38a2e9ba93b34e363795 Mon Sep 17 00:00:00 2001 From: egzosn Date: Mon, 2 Dec 2019 23:20:43 +0800 Subject: [PATCH 09/12] =?UTF-8?q?xml=E6=B7=BB=E5=8A=A0=E5=A4=9A=E5=B1=82?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 24 ++++++++++ pay-java-ali/pom.xml | 2 +- pay-java-common/pom.xml | 2 +- .../java/com/egzosn/pay/common/util/XML.java | 46 +++++++++++++++++-- pay-java-demo/pom.xml | 2 +- pay-java-fuiou/pom.xml | 2 +- pay-java-payoneer/pom.xml | 2 +- pay-java-paypal/pom.xml | 2 +- pay-java-union/pom.xml | 2 +- pay-java-wx-youdian/pom.xml | 2 +- pay-java-wx/pom.xml | 2 +- pay-java-yiji/pom.xml | 2 +- pom.xml | 4 +- 13 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b40fb55 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +.idea +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* diff --git a/pay-java-ali/pom.xml b/pay-java-ali/pom.xml index 9b17eb2..35e8c8c 100644 --- a/pay-java-ali/pom.xml +++ b/pay-java-ali/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 pay-java-ali diff --git a/pay-java-common/pom.xml b/pay-java-common/pom.xml index 1dfa318..0a0a62d 100644 --- a/pay-java-common/pom.xml +++ b/pay-java-common/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 jar diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java b/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java index 2410653..b61898b 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/util/XML.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.nio.charset.Charset; +import java.util.List; import java.util.Map; @@ -232,10 +233,11 @@ public class XML { for (int idx = 0; idx < children.getLength(); ++idx) { Node node = children.item(idx); NodeList nodeList = node.getChildNodes(); - if (node.getNodeType() == Node.ELEMENT_NODE && nodeList.getLength() <= 1) { - m.put(node.getNodeName(), node.getTextContent()); - } else if (node.getNodeType() == Node.ELEMENT_NODE && nodeList.getLength() > 1) { + int length = nodeList.getLength(); + if (node.getNodeType() == Node.ELEMENT_NODE && length >= 1 && nodeList.item(0).hasChildNodes()) { m.put(node.getNodeName(), getChildren(nodeList)); + } else if (node.getNodeType() == Node.ELEMENT_NODE ) { + m.put(node.getNodeName(), node.getTextContent()); } } } catch (Exception e) { @@ -323,13 +325,47 @@ public class XML { value = ""; } org.w3c.dom.Element filed = document.createElement(entry.getKey()); - if (value instanceof Map){ + /* if (value instanceof Map){ + map2Xml((Map)value, document, filed); + }else if (value instanceof List){ + List vs = (List)value; + for (Object v : vs ){ + if (value instanceof Map){ + map2Xml((Map)value, document, filed); + } + } map2Xml((Map)value, document, filed); }else { value = value.toString().trim(); filed.appendChild(document.createTextNode(value.toString())); - } + }*/ + object2Xml(value, document, filed); element.appendChild(filed); } } + + private static void object2Xml(Object value, Document document, org.w3c.dom.Element element){ + + if (value instanceof Map){ + map2Xml((Map)value, document, element); + }else if (value instanceof List){ + List vs = (List)value; + for (Object v : vs ){ + object2Xml(v, document, element); + } +// map2Xml((Map)value, document, element); + }else { + value = value.toString().trim(); + element.appendChild(document.createTextNode(value.toString())); + } + + + } + + + public static void main(String[] args) { + String text = "01张三2张4"; + System.out.println( getMap2Xml(toJSONObject(text), "data", "utf-8")); + + } } diff --git a/pay-java-demo/pom.xml b/pay-java-demo/pom.xml index 17c0e16..b196ab5 100644 --- a/pay-java-demo/pom.xml +++ b/pay-java-demo/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 war diff --git a/pay-java-fuiou/pom.xml b/pay-java-fuiou/pom.xml index 63e5797..a77d590 100644 --- a/pay-java-fuiou/pom.xml +++ b/pay-java-fuiou/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 pay-java-fuiou diff --git a/pay-java-payoneer/pom.xml b/pay-java-payoneer/pom.xml index dd049db..6020570 100644 --- a/pay-java-payoneer/pom.xml +++ b/pay-java-payoneer/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 pay-java-payoneer diff --git a/pay-java-paypal/pom.xml b/pay-java-paypal/pom.xml index 6dbe403..969573e 100644 --- a/pay-java-paypal/pom.xml +++ b/pay-java-paypal/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 diff --git a/pay-java-union/pom.xml b/pay-java-union/pom.xml index cadae0c..b9ebdc1 100644 --- a/pay-java-union/pom.xml +++ b/pay-java-union/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 diff --git a/pay-java-wx-youdian/pom.xml b/pay-java-wx-youdian/pom.xml index cdd7f5d..c424d22 100644 --- a/pay-java-wx-youdian/pom.xml +++ b/pay-java-wx-youdian/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 pay-java-wx-youdian diff --git a/pay-java-wx/pom.xml b/pay-java-wx/pom.xml index 0842391..484a61e 100644 --- a/pay-java-wx/pom.xml +++ b/pay-java-wx/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 pay-java-wx diff --git a/pay-java-yiji/pom.xml b/pay-java-yiji/pom.xml index c1d5845..63fb58e 100644 --- a/pay-java-yiji/pom.xml +++ b/pay-java-yiji/pom.xml @@ -5,7 +5,7 @@ pay-java-parent com.egzosn - 2.12.9 + 2.13.1-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 8db4562..979bbd9 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.egzosn pay-java-parent pom - 2.12.9 + 2.13.1-SNAPSHOT Pay Java - Parent Pay Java Parent @@ -58,7 +58,7 @@ - 2.12.9 + 2.13.1-SNAPSHOT 4.5.4 1.2.17 1.2.58 From 096332bfc98a56cca7c38a9bde0b6f363e5c8c58 Mon Sep 17 00:00:00 2001 From: "fuhai999@gmail.com" Date: Fri, 6 Dec 2019 12:33:59 +0800 Subject: [PATCH 10/12] optimize payorder constructor --- .../com/egzosn/pay/common/bean/PayOrder.java | 58 +++++++++++-------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/PayOrder.java b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/PayOrder.java index 1dc0c46..d4c52fa 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/PayOrder.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/PayOrder.java @@ -7,7 +7,7 @@ import java.util.Date; * 支付订单信息 * * @author egan - *
+ * 
  *      email egzosn@gmail.com
  *      date 2016/10/19 22:34
  *  
@@ -66,7 +66,7 @@ public class PayOrder { private String wapName; /** * 用户唯一标识 - * 微信含 sub_openid 字段 + * 微信含 sub_openid 字段 */ private String openid; /** @@ -83,6 +83,21 @@ public class PayOrder { private Date expirationTime; + public PayOrder() { + } + + + public PayOrder(String subject, String body, BigDecimal price, String outTradeNo) { + this(subject, body, price, outTradeNo, null); + } + + public PayOrder(String subject, String body, BigDecimal price, String outTradeNo, TransactionType transactionType) { + this.subject = tryTrim(subject); + this.body = tryTrim(body); + this.price = price; + this.outTradeNo = tryTrim(outTradeNo); + this.transactionType = transactionType; + } public CurType getCurType() { @@ -127,13 +142,16 @@ public class PayOrder { /** * 支付平台订单号,交易号 - * @return 支付平台订单号,交易号 + * + * @return 支付平台订单号, 交易号 */ public String getTradeNo() { return tradeNo; } + /** * 支付平台订单号,交易号 + * * @param tradeNo 支付平台订单号,交易号 */ public void setTradeNo(String tradeNo) { @@ -141,7 +159,8 @@ public class PayOrder { } /** - * 获取商户订单号 + * 获取商户订单号 + * * @return 商户订单号 */ public String getOutTradeNo() { @@ -150,7 +169,8 @@ public class PayOrder { /** * 设置商户订单号 - * @param outTradeNo 商户订单号 + * + * @param outTradeNo 商户订单号 */ public void setOutTradeNo(String outTradeNo) { this.outTradeNo = outTradeNo; @@ -196,24 +216,6 @@ public class PayOrder { this.deviceInfo = deviceInfo; } - public PayOrder() { - } - - - public PayOrder(String subject, String body, BigDecimal price, String outTradeNo, TransactionType transactionType) { - this.subject = subject; - this.body = body; - this.price = price; - this.outTradeNo = outTradeNo; - this.transactionType = transactionType; - } - public PayOrder(String subject, String body, BigDecimal price, String outTradeNo) { - this.subject = subject; - this.body = body; - this.price = price; - this.outTradeNo = outTradeNo; - } - public String getWapUrl() { return wapUrl; } @@ -246,6 +248,16 @@ public class PayOrder { this.expirationTime = expirationTime; } + /** + * 对 subject body 进行 trim 运算, + * 以防止在签名是可能造成的签名错误问题 + * @param str + * @return + */ + private static String tryTrim(String str) { + return str == null ? null : str.trim(); + } + @Override public String toString() { return "PayOrder{" + From 9c447db949eb75884dc2293b613f4b1c403f79e2 Mon Sep 17 00:00:00 2001 From: egzosn Date: Sun, 8 Dec 2019 21:01:23 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E5=8F=91=E8=B5=B7=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BA=A4=E6=98=93=E7=B1=BB=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=83=BD=E5=A4=9F=E7=A1=AE=E5=AE=9A=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=85=A8=E9=83=A8=E4=BB=A5?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E4=B8=BA=E5=9F=BA=E5=87=86=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E8=87=AA=E8=A1=8C=E8=AE=BE=E7=BD=AE=E4=BA=86=E4=BD=86?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E4=B8=8D=E4=B8=80=E6=A0=B7=E5=B0=B1=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/egzosn/pay/ali/api/AliPayService.java | 18 +++++- .../pay/ali/bean/AliTransactionType.java | 7 +-- .../egzosn/pay/fuiou/api/FuiouPayService.java | 9 ++- .../pay/payoneer/api/PayoneerPayService.java | 2 + .../pay/paypal/api/PayPalPayService.java | 4 ++ .../egzosn/pay/union/api/UnionPayService.java | 14 +++++ .../wx/youdian/api/WxYouDianPayService.java | 2 + .../com/egzosn/pay/wx/api/WxPayService.java | 62 +++++++++++-------- 8 files changed, 84 insertions(+), 34 deletions(-) diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java index ff51eb2..41ae9a2 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java @@ -200,7 +200,6 @@ public class AliPayService extends BasePayService { bizContent.put("total_amount", Util.conversionAmount(order.getPrice()).toString()); switch ((AliTransactionType) order.getTransactionType()) { case PAGE: - case DIRECT: bizContent.put(PASSBACK_PARAMS, order.getAddition()); bizContent.put(PRODUCT_CODE, "FAST_INSTANT_TRADE_PAY"); orderInfo.put(RETURN_URL, payConfigStorage.getReturnUrl()); @@ -272,6 +271,16 @@ public class AliPayService extends BasePayService { return PayOutMessage.TEXT().content("success").build(); } + @Override + public String toPay(PayOrder order) { + if (null == order.getTransactionType()) { + order.setTransactionType(AliTransactionType.PAGE); + } else if (order.getTransactionType() != AliTransactionType.PAGE && order.getTransactionType() != AliTransactionType.WAP) { + throw new PayErrorException(new PayException("-1", "错误的交易类型:" + order.getTransactionType())); + } + return super.toPay(order); + } + /** * @param orderInfo 发起支付的订单信息 * @param method 请求方式 "post" "get", @@ -301,6 +310,7 @@ public class AliPayService extends BasePayService { */ @Override public String getQrPay(PayOrder order){ + order.setTransactionType(AliTransactionType.SWEEPPAY); Map orderInfo = orderInfo(order); //预订单 JSONObject result = getHttpRequestTemplate().postForObject(getReqUrl() + "?" + UriVariables.getMapToParameters(orderInfo), null, JSONObject.class); @@ -320,6 +330,12 @@ public class AliPayService extends BasePayService { */ @Override public Map microPay(PayOrder order) { + if (null == order.getTransactionType()){ + order.setTransactionType(AliTransactionType.BAR_CODE); + }else if (order.getTransactionType() != AliTransactionType.BAR_CODE && order.getTransactionType() != AliTransactionType.WAVE_CODE && order.getTransactionType() != AliTransactionType.SECURITY_CODE){ + throw new PayErrorException(new PayException("-1", "错误的交易类型:" + order.getTransactionType())); + } + Map orderInfo = orderInfo(order); //预订单 JSONObject result = getHttpRequestTemplate().postForObject(getReqUrl() + "?" + UriVariables.getMapToParameters(orderInfo), null, JSONObject.class); diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java index b97e5ef..bb722de 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java @@ -18,12 +18,7 @@ import com.egzosn.pay.common.bean.TransactionType; * date 2016/10/19 22:58 */ public enum AliTransactionType implements TransactionType { - /** - * 即时到帐 - * 过时的名称,请换至 {@link #PAGE} - */ - @Deprecated - DIRECT("alipay.trade.page.pay"), + /** * 网页支付 */ diff --git a/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java b/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java index fdbfde6..3b06ce2 100644 --- a/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java +++ b/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java @@ -9,6 +9,8 @@ import com.egzosn.pay.common.util.DateUtils; import com.egzosn.pay.common.util.Util; import com.egzosn.pay.common.util.sign.SignUtils; import com.egzosn.pay.common.util.str.StringUtils; +import com.egzosn.pay.fuiou.bean.FuiouTransactionType; + import java.awt.image.BufferedImage; import java.io.InputStream; import java.math.BigDecimal; @@ -134,7 +136,7 @@ public class FuiouPayService extends BasePayService { */ @Override public boolean verifySource(String orderId) { - LinkedHashMap params = new LinkedHashMap<>(); + LinkedHashMap params = new LinkedHashMap(3); params.put("mchnt_cd", payConfigStorage.getPid()); params.put("order_id", orderId); params.put("md5", createSign(SignUtils.parameters2MD5Str(params, "|"), payConfigStorage.getInputCharset())); @@ -153,6 +155,10 @@ public class FuiouPayService extends BasePayService { */ @Override public Map orderInfo(PayOrder order) { + if (null == order.getTransactionType()){ + order.setTransactionType(FuiouTransactionType.B2C); + } + Map parameters = getOrderInfo(order); String sign = createSign(SignUtils.parameters2MD5Str(parameters, "|"), payConfigStorage.getInputCharset()); parameters.put("md5", sign); @@ -165,6 +171,7 @@ public class FuiouPayService extends BasePayService { * @return 返回支付请求参数集合 */ private Map getOrderInfo(PayOrder order) { + LinkedHashMap parameters = new LinkedHashMap(); //商户代码 parameters.put("mchnt_cd", payConfigStorage.getPid()); diff --git a/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java b/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java index 4d61b73..76afaba 100644 --- a/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java +++ b/pay-java-payoneer/src/main/java/com/egzosn/pay/payoneer/api/PayoneerPayService.java @@ -263,6 +263,8 @@ public class PayoneerPayService extends BasePayService im */ @Override public Map microPay(PayOrder order) { + order.setTransactionType(PayoneerTransactionType.CHARGE); + HttpStringEntity entity = new HttpStringEntity(JSON.toJSONString(orderInfo(order)), ContentType.APPLICATION_JSON); //设置 base atuh entity.setHeaders(authHeader()); diff --git a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java index b94f887..e522814 100644 --- a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java +++ b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/api/PayPalPayService.java @@ -146,6 +146,10 @@ public class PayPalPayService extends BasePayService{ */ @Override public Map orderInfo(PayOrder order) { + if (null == order.getTransactionType()){ + order.setTransactionType(PayPalTransactionType.sale); + } + Amount amount = new Amount(); if (null == order.getCurType()){ order.setCurType(DefaultCurType.USD); diff --git a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java index 90aaad6..93792d3 100644 --- a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java +++ b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java @@ -379,6 +379,18 @@ public class UnionPayService extends BasePayService { return null; } + @Override + public String toPay(PayOrder order) { + + if (null == order.getTransactionType()){ + order.setTransactionType(UnionTransactionType.WEB); + }else if (UnionTransactionType.WEB != order.getTransactionType() && UnionTransactionType.WAP != order.getTransactionType() && UnionTransactionType.B2B != order.getTransactionType()){ + throw new PayErrorException(new PayException("-1", "错误的交易类型:" + order.getTransactionType())); + } + + return super.toPay(order); + } + /** * 获取输出二维码,用户返回给支付端, * @@ -387,6 +399,7 @@ public class UnionPayService extends BasePayService { */ @Override public String getQrPay(PayOrder order) { + order.setTransactionType(UnionTransactionType.APPLY_QR_CODE); Map params = orderInfo(order); String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); Map response = UriVariables.getParametersToMap(responseStr); @@ -411,6 +424,7 @@ public class UnionPayService extends BasePayService { */ @Override public Map microPay(PayOrder order) { + order.setTransactionType(UnionTransactionType.CONSUME); Map params = orderInfo(order); String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); return UriVariables.getParametersToMap(responseStr); diff --git a/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java b/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java index 2d7775f..b108c5b 100644 --- a/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java +++ b/pay-java-wx-youdian/src/main/java/com/egzosn/pay/wx/youdian/api/WxYouDianPayService.java @@ -336,6 +336,7 @@ public class WxYouDianPayService extends BasePayService microPay(PayOrder order) { + order.setTransactionType(YoudianTransactionType.MICROPAY); JSONObject orderInfo = orderInfo(order); return orderInfo; } diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java index 5027d82..0940488 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java @@ -31,7 +31,7 @@ import static com.egzosn.pay.wx.bean.WxTransferType.*; * 微信支付服务 * * @author egan - *
+ * 
  *                 email egzosn@gmail.com
  *                 date 2016-5-18 14:09:01
  *                 
@@ -95,6 +95,7 @@ public class WxPayService extends BasePayService { this.payConfigStorage = payConfigStorage; return this; } + /** * 根据交易类型获取url * @@ -222,7 +223,7 @@ public class WxPayService extends BasePayService { parameters.put("time_expire", DateUtils.formatDate(order.getExpirationTime(), DateUtils.YYYYMMDDHHMMSS)); } ((WxTransactionType) order.getTransactionType()).setAttribute(parameters, order); - parameters = preOrderHandler(parameters, order); + parameters = preOrderHandler(parameters, order); setSign(parameters); String requestXML = XML.getMap2Xml(parameters); @@ -275,7 +276,7 @@ public class WxPayService extends BasePayService { params.put("noncestr", result.get(NONCE_STR)); params.put("package", "Sign=WXPay"); } - params = preOrderHandler(params, order); + params = preOrderHandler(params, order); String paySign = createSign(SignUtils.parameterText(params), payConfigStorage.getInputCharset()); params.put(SIGN, paySign); return params; @@ -291,11 +292,12 @@ public class WxPayService extends BasePayService { * @return 请求参数 */ private Map setSign(Map parameters) { - String signType = payConfigStorage.getSignType(); - if (HMACSHA256.equals(signType)) { - signType = HMAC_SHA256; + + String signTypeStr = payConfigStorage.getSignType(); + if (HMACSHA256.equals(signTypeStr)) { + signTypeStr = SignUtils.HMACSHA256.getName(); } - parameters.put("sign_type", signType); + parameters.put("sign_type", signTypeStr); String sign = createSign(SignUtils.parameterText(parameters, "&", SIGN, "appId"), payConfigStorage.getInputCharset()); parameters.put(SIGN, sign); return parameters; @@ -338,21 +340,22 @@ public class WxPayService extends BasePayService { return createSign(content, characterEncoding, payConfigStorage.isTest()); } + /** * 签名 * * @param content 需要签名的内容 不包含key * @param characterEncoding 字符编码 - * @param test 是否为沙箱环境 + * @param test 是否为沙箱环境 * @return 签名结果 */ public String createSign(String content, String characterEncoding, boolean test) { - SignUtils signUtils = SignUtils.valueOf(payConfigStorage.getSignType().toUpperCase()); + SignType signType = SignUtils.valueOf(payConfigStorage.getSignType().toUpperCase()); String keyPrivate = payConfigStorage.getKeyPrivate(); - if (test){ + if (test) { keyPrivate = getKeyPrivate(); } - return signUtils.createSign(content + "&key=" + (signUtils == SignUtils.MD5 ? "" : keyPrivate), keyPrivate, characterEncoding).toUpperCase(); + return signType.createSign(content + "&key=" + (signType == SignUtils.MD5 ? "" : keyPrivate), keyPrivate, characterEncoding).toUpperCase(); } /** @@ -426,14 +429,16 @@ public class WxPayService extends BasePayService { * @return 返回二维码信息,,支付时需要的 */ @Override - public String getQrPay(PayOrder order){ + public String getQrPay(PayOrder order) { + order.setTransactionType(WxTransactionType.NATIVE); Map orderInfo = orderInfo(order); //获取对应的支付账户操作工具(可根据账户id) if (!SUCCESS.equals(orderInfo.get(RESULT_CODE))) { - throw new PayErrorException(new WxPayError((String)orderInfo.get("err_code"), orderInfo.toString())); + throw new PayErrorException(new WxPayError((String) orderInfo.get("err_code"), orderInfo.toString())); } return (String) orderInfo.get("code_url"); } + /** * 刷卡付,pos主动扫码付款 * @@ -442,7 +447,12 @@ public class WxPayService extends BasePayService { */ @Override public Map microPay(PayOrder order) { + if (null == order.getTransactionType()) { + order.setTransactionType(WxTransactionType.MICROPAY); + } else if (WxTransactionType.MICROPAY != order.getTransactionType() && WxTransactionType.FACEPAY != order.getTransactionType()) { + throw new PayErrorException(new PayException("-1", "错误的交易类型:" + order.getTransactionType())); + } return orderInfo(order); } @@ -527,7 +537,7 @@ public class WxPayService extends BasePayService { parameters.put("total_fee", Util.conversionCentAmount(refundOrder.getTotalAmount())); parameters.put("refund_fee", Util.conversionCentAmount(refundOrder.getRefundAmount())); parameters.put("op_user_id", payConfigStorage.getPid()); - setParameters(parameters, "notify_url", payConfigStorage.getNotifyUrl()); + setParameters(parameters, "notify_url", payConfigStorage.getNotifyUrl()); //设置签名 setSign(parameters); @@ -563,7 +573,7 @@ public class WxPayService extends BasePayService { setParameters(parameters, "out_refund_no", refundOrder.getRefundNo()); //设置签名 setSign(parameters); - return requestTemplate.postForObject(getReqUrl( WxTransactionType.REFUNDQUERY), XML.getMap2Xml(parameters) , JSONObject.class); + return requestTemplate.postForObject(getReqUrl(WxTransactionType.REFUNDQUERY), XML.getMap2Xml(parameters), JSONObject.class); } @@ -633,7 +643,7 @@ public class WxPayService extends BasePayService { } //设置签名 setSign(parameters); - return requestTemplate.postForObject(getReqUrl(transactionType), XML.getMap2Xml(parameters) , JSONObject.class); + return requestTemplate.postForObject(getReqUrl(transactionType), XML.getMap2Xml(parameters), JSONObject.class); } /** @@ -642,13 +652,13 @@ public class WxPayService extends BasePayService { * @param order 转账订单 *
      *
-     *              注意事项:
-     *              ◆ 当返回错误码为“SYSTEMERROR”时,请不要更换商户订单号,一定要使用原商户订单号重试,否则可能造成重复支付等资金风险。
-     *              ◆ XML具有可扩展性,因此返回参数可能会有新增,而且顺序可能不完全遵循此文档规范,如果在解析回包的时候发生错误,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新回包字段,会更新到此API文档中。
-     *              ◆ 因为错误代码字段err_code的值后续可能会增加,所以商户如果遇到回包返回新的错误码,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新的错误码,会更新到此API文档中。
-     *              ◆ 错误代码描述字段err_code_des只供人工定位问题时做参考,系统实现时请不要依赖这个字段来做自动化处理。
+     *                           注意事项:
+     *                           ◆ 当返回错误码为“SYSTEMERROR”时,请不要更换商户订单号,一定要使用原商户订单号重试,否则可能造成重复支付等资金风险。
+     *                           ◆ XML具有可扩展性,因此返回参数可能会有新增,而且顺序可能不完全遵循此文档规范,如果在解析回包的时候发生错误,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新回包字段,会更新到此API文档中。
+     *                           ◆ 因为错误代码字段err_code的值后续可能会增加,所以商户如果遇到回包返回新的错误码,请商户务必不要换单重试,请商户联系客服确认付款情况。如果有新的错误码,会更新到此API文档中。
+     *                           ◆ 错误代码描述字段err_code_des只供人工定位问题时做参考,系统实现时请不要依赖这个字段来做自动化处理。
      *
-     *              
+ *
* @return 对应的转账结果 */ @Override @@ -672,7 +682,7 @@ public class WxPayService extends BasePayService { } parameters.put(SIGN, createSign(SignUtils.parameterText(parameters, "&", SIGN), payConfigStorage.getInputCharset())); - return getHttpRequestTemplate().postForObject(getReqUrl(order.getTransferType()), XML.getMap2Xml(parameters), JSONObject.class); + return getHttpRequestTemplate().postForObject(getReqUrl(order.getTransferType()), XML.getMap2Xml(parameters), JSONObject.class); } /** @@ -740,11 +750,11 @@ public class WxPayService extends BasePayService { throw new PayErrorException(new WxPayError(FAILURE, "微信转账类型 #transferQuery(String outNo, String wxTransferType) 必填,详情com.egzosn.pay.wx.bean.WxTransferType")); } //如果类型为余额方式 - if (TRANSFERS.getType().equals(wxTransferType) || GETTRANSFERINFO.getType().equals(wxTransferType)){ - return getHttpRequestTemplate().postForObject(getReqUrl(GETTRANSFERINFO), XML.getMap2Xml(parameters), JSONObject.class); + if (TRANSFERS.getType().equals(wxTransferType) || GETTRANSFERINFO.getType().equals(wxTransferType)) { + return getHttpRequestTemplate().postForObject(getReqUrl(GETTRANSFERINFO), XML.getMap2Xml(parameters), JSONObject.class); } //默认查询银行卡的记录 - return getHttpRequestTemplate().postForObject(getReqUrl(QUERY_BANK), XML.getMap2Xml(parameters), JSONObject.class); + return getHttpRequestTemplate().postForObject(getReqUrl(QUERY_BANK), XML.getMap2Xml(parameters), JSONObject.class); } From 36b590ca2070216a11451c555463a884b779df93 Mon Sep 17 00:00:00 2001 From: egzosn Date: Sun, 8 Dec 2019 21:04:26 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E7=AD=BE=E5=90=8D=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/common/util/sign/SignUtils.java | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/util/sign/SignUtils.java b/pay-java-common/src/main/java/com/egzosn/pay/common/util/sign/SignUtils.java index 3d13bf5..ae31172 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/util/sign/SignUtils.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/util/sign/SignUtils.java @@ -1,6 +1,7 @@ package com.egzosn.pay.common.util.sign; +import com.egzosn.pay.common.bean.SignType; import com.egzosn.pay.common.bean.result.PayException; import com.egzosn.pay.common.exception.PayErrorException; import com.egzosn.pay.common.util.str.StringUtils; @@ -22,7 +23,7 @@ import java.util.*; * date 2016/11/9 17:45 *
*/ -public enum SignUtils { +public enum SignUtils implements SignType { MD5 { /** @@ -51,6 +52,11 @@ public enum SignUtils { return com.egzosn.pay.common.util.sign.encrypt.MD5.verify(text, sign, key, characterEncoding); } },HMACSHA256{ + @Override + public String getName() { + return "HMAC-SHA256"; + } + /** * 签名 * @@ -279,6 +285,11 @@ public enum SignUtils { return UUID.randomUUID().toString().replace("-", ""); } + @Override + public String getName() { + return this.name(); + } + /** * 签名 * @@ -305,15 +316,6 @@ public enum SignUtils { } - /** - * 签名 - * - * @param content 需要签名的内容 - * @param key 密钥 - * @param characterEncoding 字符编码 - * @return 签名值 - */ - public abstract String createSign(String content, String key, String characterEncoding); /** * 签名字符串 @@ -330,16 +332,5 @@ public enum SignUtils { } - /** - * 签名字符串 - * - * @param text 需要签名的字符串 - * @param sign 签名结果 - * @param key 密钥 - * @param characterEncoding 编码格式 - * @return 签名结果 - */ - public abstract boolean verify(String text, String sign, String key, String characterEncoding); - }