From ad7efdce9d8de749481b4852d324df80c0fe2a29 Mon Sep 17 00:00:00 2001 From: egzosn Date: Tue, 8 Oct 2019 22:05:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A2=84=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E5=A4=84=E7=90=86=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../egzosn/pay/ali/before/api/AliPayService.java | 4 ++-- .../com/egzosn/pay/common/api/BasePayService.java | 13 +++++++++++++ .../com/egzosn/pay/fuiou/api/FuiouPayService.java | 7 ++++--- .../egzosn/pay/payoneer/api/PayoneerPayService.java | 2 +- .../com/egzosn/pay/paypal/api/PayPalPayService.java | 3 ++- .../com/egzosn/pay/union/api/UnionPayService.java | 2 +- .../pay/wx/youdian/api/WxYouDianPayService.java | 4 +++- .../java/com/egzosn/pay/wx/api/WxPayService.java | 10 ++++++---- .../com/egzosn/pay/yiji/api/YiJiPayService.java | 3 ++- 9 files changed, 34 insertions(+), 14 deletions(-) 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 d1f4b37..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 @@ -153,7 +153,7 @@ public class AliPayService extends BasePayService { @Override public Map orderInfo(PayOrder order) { - Map orderInfo = getOrder(order); + Map orderInfo = getOrder(order); String sign = null; if (AliTransactionType.APP == order.getTransactionType() ){ @@ -233,7 +233,7 @@ public class AliPayService extends BasePayService { // 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空 orderInfo.put("return_url", payConfigStorage.getReturnUrl()); - return orderInfo; + return preOrderHandler(orderInfo, order); } 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 509a2f3..53d5c90 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 @@ -454,4 +454,17 @@ public abstract class BasePayService implements Pay public PayMessage createMessage(Map message) { return new PayMessage(message); } + + /** + * 预订单回调处理器,用于订单信息的扩展 + * 签名之前使用 + * 如果需要进行扩展请重写该方法即可 + * @param orderInfo 预订单信息 + * @param orderInfo 订单信息 + * @return 处理后订单信息 + */ + public Map preOrderHandler(Map orderInfo, PayOrder payOrder){ + return orderInfo; + } + } 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 b5109dd..d297c9d 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 @@ -62,6 +62,7 @@ public class FuiouPayService extends BasePayService { * 获取对应的请求地址 * @return 请求地址 */ + @Override public String getReqUrl(TransactionType transactionType){ return payConfigStorage.isTest() ? DEV_URL_FUIOU_BASE_DOMAIN : URL_FUIOU_BASE_DOMAIN; } @@ -152,7 +153,7 @@ public class FuiouPayService extends BasePayService { */ @Override public Map orderInfo(PayOrder order) { - LinkedHashMap parameters = getOrderInfo(order); + Map parameters = getOrderInfo(order); String sign = createSign(SignUtils.parameters2MD5Str(parameters, "|"), payConfigStorage.getInputCharset()); parameters.put("md5", sign); return parameters; @@ -163,7 +164,7 @@ public class FuiouPayService extends BasePayService { * @param order 支付订单 * @return 返回支付请求参数集合 */ - private LinkedHashMap getOrderInfo(PayOrder order) { + private Map getOrderInfo(PayOrder order) { LinkedHashMap parameters = new LinkedHashMap(); //商户代码 parameters.put("mchnt_cd", payConfigStorage.getPid()); @@ -195,7 +196,7 @@ public class FuiouPayService extends BasePayService { parameters.put("rem", ""); //版本号 parameters.put("ver", "1.0.1"); - return parameters; + return preOrderHandler(parameters, order); } /** 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 c83766f..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 @@ -185,7 +185,7 @@ public class PayoneerPayService extends BasePayService im params.put("currency", order.getCurType()); params.put("description", order.getSubject()); - return params; + return preOrderHandler(params, order); } /** 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 eeec14f..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 @@ -44,6 +44,7 @@ public class PayPalPayService extends BasePayService{ * 获取对应的请求地址 * @return 请求地址 */ + @Override public String getReqUrl(TransactionType transactionType){ return (payConfigStorage.isTest() ? SANDBOX_REQ_URL : REQ_URL) + transactionType.getMethod(); } @@ -182,7 +183,7 @@ public class PayPalPayService extends BasePayService{ if ("created".equals(resp.getString("state")) && StringUtils.isNotEmpty(resp.getString("id"))){ order.setOutTradeNo(resp.getString("id")); } - return resp; + return preOrderHandler(resp, order); } @Override 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 c7e0f2e..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 @@ -288,7 +288,7 @@ public class UnionPayService extends BasePayService { params.put(SDKConstants.param_payTimeout, getPayTimeout(order.getExpirationTime())); params.put("orderDesc", order.getSubject()); } - + params = preOrderHandler(params, order); return setSign(params); } 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 c77dd23..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 @@ -224,9 +224,10 @@ public class WxYouDianPayService extends BasePayService data = new TreeMap<>(); + Map data = new TreeMap<>(); data.put("access_token", getAccessToken()); data.put("paymoney", Util.conversionAmount(order.getPrice()).toString()); + data = preOrderHandler(data, order); String apbNonce = SignUtils.randomStr(); String sign = createSign(SignUtils.parameterText(data, "") + apbNonce, payConfigStorage.getInputCharset()); data.put("PayMoney", data.remove("paymoney")); @@ -460,6 +461,7 @@ public class WxYouDianPayService extends BasePayService { * @param transactionType 交易类型 * @return 请求url */ + @Override public String getReqUrl(TransactionType transactionType) { return URI + (payConfigStorage.isTest() ? SANDBOXNEW : "") + transactionType.getMethod(); @@ -221,13 +222,14 @@ 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); setSign(parameters); String requestXML = XML.getMap2Xml(parameters); if (LOG.isDebugEnabled()) { LOG.debug("requestXML:" + requestXML); } + //调起支付的参数列表 JSONObject result = requestTemplate.postForObject(getReqUrl(order.getTransactionType()), requestXML, JSONObject.class); @@ -250,15 +252,14 @@ public class WxPayService extends BasePayService { ////统一下单 JSONObject result = unifiedOrder(order); - // 对微信返回的数据进行校验 - if (verify(result)) { + if (verify(preOrderHandler(result, order))) { //如果是扫码支付或者刷卡付无需处理,直接返回 if (((WxTransactionType) order.getTransactionType()).isReturn()) { return result; } - SortedMap params = new TreeMap(); + Map params = new TreeMap(); if (WxTransactionType.JSAPI == order.getTransactionType()) { params.put("signType", payConfigStorage.getSignType()); @@ -274,6 +275,7 @@ public class WxPayService extends BasePayService { params.put("noncestr", result.get(NONCE_STR)); params.put("package", "Sign=WXPay"); } + params = preOrderHandler(params, order); String paySign = createSign(SignUtils.parameterText(params), payConfigStorage.getInputCharset()); params.put(SIGN, paySign); return params; 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 4ea2fa4..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 @@ -53,6 +53,7 @@ public class YiJiPayService extends BasePayService { * * @return 请求地址 */ + @Override public String getReqUrl(TransactionType transactionType) { if (payConfigStorage.isTest()){ return DEV_REQ_URL; @@ -175,7 +176,7 @@ public class YiJiPayService extends BasePayService { orderInfo.put("currency", order.getCurType()); } - return orderInfo; + return preOrderHandler(orderInfo, order); } /**