From d4096194f143b03137f3d76a1b1d883ed0af6d46 Mon Sep 17 00:00:00 2001 From: egzosn Date: Wed, 6 Oct 2021 15:45:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=A2=E5=8D=95=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/egzosn/pay/ali/api/AliPayService.java | 23 +++-- .../egzosn/pay/baidu/api/BaiduPayService.java | 12 ++- .../com/egzosn/pay/common/api/PayService.java | 10 ++ .../egzosn/pay/common/bean/CloseOrder.java | 92 +++++++++++++++++++ .../pay/common/bean/OrderParaStructure.java | 8 ++ .../com/egzosn/pay/common/bean/PayOrder.java | 2 + .../com/egzosn/pay/common/util/DateUtils.java | 1 + .../egzosn/pay/fuiou/api/FuiouPayService.java | 12 ++- .../pay/payoneer/api/PayoneerPayService.java | 12 ++- .../pay/paypal/api/PayPalPayService.java | 12 ++- .../pay/paypal/v2/api/PayPalPayService.java | 12 ++- .../egzosn/pay/union/api/UnionPayService.java | 12 ++- .../wx/youdian/api/WxYouDianPayService.java | 12 ++- .../com/egzosn/pay/wx/api/WxPayService.java | 12 +++ .../egzosn/pay/yiji/api/YiJiPayService.java | 12 ++- 15 files changed, 226 insertions(+), 18 deletions(-) create mode 100644 pay-java-common/src/main/java/com/egzosn/pay/common/bean/CloseOrder.java 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 5c5568f..1b9d724 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 @@ -31,6 +31,7 @@ import com.egzosn.pay.ali.bean.CertEnvironment; import com.egzosn.pay.ali.bean.OrderSettle; import com.egzosn.pay.common.api.BasePayService; import com.egzosn.pay.common.bean.BillType; +import com.egzosn.pay.common.bean.CloseOrder; import com.egzosn.pay.common.bean.MethodType; import com.egzosn.pay.common.bean.NoticeParams; import com.egzosn.pay.common.bean.Order; @@ -130,7 +131,7 @@ public class AliPayService extends BasePayService { return false; } - return signVerify(params, (String) params.get(SIGN)) && verifySource((String) params.get("notify_id")); + return signVerify(params, (String) params.get(SIGN)); } @@ -182,15 +183,6 @@ public class AliPayService extends BasePayService { return (String) respMap.get(ALIPAY_CERT_SN_FIELD); } - /** - * 校验数据来源 - * - * @param id 业务id, 数据的真实性. - * @return true通过 - */ - protected boolean verifySource(String id) { - return true; - } /** @@ -484,6 +476,17 @@ public class AliPayService extends BasePayService { return secondaryInterface(tradeNo, outTradeNo, AliTransactionType.CLOSE); } + /** + * 交易关闭接口 + * + * @param closeOrder 关闭订单 + * @return 返回支付方交易关闭后的结果 + */ + @Override + public Map close(CloseOrder closeOrder){ + return secondaryInterface(closeOrder.getTradeNo(), closeOrder.getOutTradeNo(), AliTransactionType.CLOSE); + } + /** * 支付交易返回失败或支付系统超时,调用该接口撤销交易。 * 如果此订单用户支付失败,支付宝系统会将此订单关闭;如果用户支付成功,支付宝系统会将此订单资金退还给用户。 diff --git a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java index 58487fe..3b7f3af 100644 --- a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java +++ b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java @@ -25,6 +25,7 @@ import com.egzosn.pay.baidu.util.Asserts; import com.egzosn.pay.common.api.BasePayService; import com.egzosn.pay.common.bean.BaseRefundResult; import com.egzosn.pay.common.bean.BillType; +import com.egzosn.pay.common.bean.CloseOrder; import com.egzosn.pay.common.bean.CurType; import com.egzosn.pay.common.bean.MethodType; import com.egzosn.pay.common.bean.NoticeParams; @@ -438,7 +439,16 @@ public class BaiduPayService extends BasePayService { public Map close(String tradeNo, String outTradeNo) { throw new UnsupportedOperationException("不支持该操作"); } - + /** + * 交易关闭接口 + * + * @param closeOrder 关闭订单 + * @return 返回支付方交易关闭后的结果 + */ + @Override + public Map close(CloseOrder closeOrder){ + throw new UnsupportedOperationException("不支持该操作"); + } /** * 退款 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 0e0d03f..6ee633d 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 @@ -6,6 +6,7 @@ import java.util.Date; import java.util.Map; import com.egzosn.pay.common.bean.BillType; +import com.egzosn.pay.common.bean.CloseOrder; import com.egzosn.pay.common.bean.MethodType; import com.egzosn.pay.common.bean.NoticeParams; import com.egzosn.pay.common.bean.NoticeRequest; @@ -218,8 +219,17 @@ public interface PayService { * @param tradeNo 支付平台订单号 * @param outTradeNo 商户单号 * @return 返回支付方交易关闭后的结果 + * @see #close(CloseOrder) */ + @Deprecated Map close(String tradeNo, String outTradeNo); + /** + * 交易关闭接口 + * + * @param closeOrder 关闭订单 + * @return 返回支付方交易关闭后的结果 + */ + Map close(CloseOrder closeOrder); /** diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/CloseOrder.java b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/CloseOrder.java new file mode 100644 index 0000000..b7e975a --- /dev/null +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/CloseOrder.java @@ -0,0 +1,92 @@ +package com.egzosn.pay.common.bean; + +import java.util.Map; + +/** + * 关闭订单 + * @author Egan + * @email egan@egzosn.com + * @date 2021/10/6 + */ +public class CloseOrder implements Order { + + /** + * 支付平台订单号,交易号 + */ + private String tradeNo; + /** + * 商户单号 + */ + private String outTradeNo; + + + /** + * 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息, + */ + private Map attr; + + public CloseOrder() { + } + + public CloseOrder(String outTradeNo) { + this.outTradeNo = outTradeNo; + } + + + + /** + * 添加订单信息 + * + * @param key key + * @param value 值 + */ + @Override + public void addAttr(String key, Object value) { + attr.put(key, value); + } + + /** + * 获取属性 这里可用做覆盖已设置的信息属性,订单信息在签名前进行覆盖。 + * + * @return 属性 + */ + @Override + public Map getAttrs() { + return attr; + } + + /** + * 获取属性 这里可用做覆盖已设置的订单信息属性,订单信息在签名前进行覆盖。 + * + * @param key 属性名 + * @return 属性 + */ + @Override + public Object getAttr(String key) { + return attr.get(key); + } + + public String getTradeNo() { + return tradeNo; + } + + public void setTradeNo(String tradeNo) { + this.tradeNo = tradeNo; + } + + public String getOutTradeNo() { + return outTradeNo; + } + + public void setOutTradeNo(String outTradeNo) { + this.outTradeNo = outTradeNo; + } + + public Map getAttr() { + return attr; + } + + public void setAttr(Map attr) { + this.attr = attr; + } +} diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/OrderParaStructure.java b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/OrderParaStructure.java index c651b25..0453306 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/OrderParaStructure.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/OrderParaStructure.java @@ -1,11 +1,14 @@ package com.egzosn.pay.common.bean; +import java.util.Date; import java.util.Map; +import com.egzosn.pay.common.util.DateUtils; import com.egzosn.pay.common.util.str.StringUtils; /** * 订单参数构造器 + * * @author Egan *
  * email egzosn@gmail.com
@@ -32,4 +35,9 @@ public final class OrderParaStructure {
         return parameters;
     }
 
+    public static Map loadDateParameters(Map parameters, String key, Order order, String datePattern) {
+        return OrderParaStructure.loadParameters(parameters, key, DateUtils.formatDate((Date) order.getAttr(key), datePattern));
+    }
+
+
 }
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 92995ab..1db5c6e 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
@@ -48,10 +48,12 @@ public class PayOrder implements Order {
     /**
      * 设备信息
      */
+    @Deprecated
     private String deviceInfo;
     /**
      * 支付创建ip
      */
+    @Deprecated
     private String spbillCreateIp;
     /**
      * 付款条码串,人脸凭证,有关支付代码相关的,
diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/util/DateUtils.java b/pay-java-common/src/main/java/com/egzosn/pay/common/util/DateUtils.java
index f5397da..1691321 100644
--- a/pay-java-common/src/main/java/com/egzosn/pay/common/util/DateUtils.java
+++ b/pay-java-common/src/main/java/com/egzosn/pay/common/util/DateUtils.java
@@ -58,6 +58,7 @@ public final class DateUtils {
     }
 
     public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
+    public static final String YYYY_MM_DD_T_HH_MM_SS = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
     public static final String YYYY_MM_DD = "yyyy-MM-dd";
     public static final String YYYYMMDD = "yyyyMMdd";
     public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
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 f3127da..94f6dc8 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
@@ -10,6 +10,7 @@ import java.util.Map;
 import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.MethodType;
 import com.egzosn.pay.common.bean.NoticeParams;
 import com.egzosn.pay.common.bean.PayMessage;
@@ -412,7 +413,16 @@ public class FuiouPayService extends BasePayService {
     public Map close(String tradeNo, String outTradeNo) {
         return Collections.EMPTY_MAP;
     }
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        throw new UnsupportedOperationException("不支持该操作");
+    }
 
     /**
      * 申请退款接口
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 a09043f..d1572b3 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
@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BaseRefundResult;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.CurType;
 import com.egzosn.pay.common.bean.DefaultCurType;
 import com.egzosn.pay.common.bean.MethodType;
@@ -305,7 +306,16 @@ public class PayoneerPayService extends BasePayService im
     public Map close(String tradeNo, String outTradeNo) {
         return secondaryInterface(tradeNo, outTradeNo, PayoneerTransactionType.CHARGE_CANCEL);
     }
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        return secondaryInterface(closeOrder.getTradeNo(), closeOrder.getOutTradeNo(), PayoneerTransactionType.CHARGE_CANCEL);
+    }
     /**
      * 交易交易撤销
      *
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 9b1b15f..6d44c1c 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
@@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BaseRefundResult;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.CurType;
 import com.egzosn.pay.common.bean.DefaultCurType;
 import com.egzosn.pay.common.bean.MethodType;
@@ -271,7 +272,16 @@ public class PayPalPayService extends BasePayService {
         return null;
     }
 
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        throw new UnsupportedOperationException("不支持该操作");
+    }
     /**
      * 申请退款接口
      *
diff --git a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java
index 5e54691..c932770 100644
--- a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java
+++ b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java
@@ -22,6 +22,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.CurType;
 import com.egzosn.pay.common.bean.DefaultCurType;
 import com.egzosn.pay.common.bean.MethodType;
@@ -354,7 +355,16 @@ public class PayPalPayService extends BasePayService implem
     public Map close(String tradeNo, String outTradeNo) {
         return null;
     }
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        throw new UnsupportedOperationException("不支持该操作");
+    }
     /**
      * 注意:最好在付款成功之后回调时进行调用
      * 确认订单并返回确认后订单信息
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 bfcf361..7576302 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
@@ -27,6 +27,7 @@ import java.util.TreeMap;
 import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.MethodType;
 import com.egzosn.pay.common.bean.NoticeParams;
 import com.egzosn.pay.common.bean.PayMessage;
@@ -656,7 +657,16 @@ public class UnionPayService extends BasePayService {
     public Map close(String tradeNo, String outTradeNo) {
         return Collections.emptyMap();
     }
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        return Collections.emptyMap();
+    }
 
     @Override
     public UnionRefundResult refund(RefundOrder refundOrder) {
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 859bcb5..5eec170 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
@@ -14,6 +14,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BaseRefundResult;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.CurType;
 import com.egzosn.pay.common.bean.MethodType;
 import com.egzosn.pay.common.bean.NoticeParams;
@@ -422,7 +423,16 @@ public class WxYouDianPayService extends BasePayService close(String tradeNo, String outTradeNo) {
         return Collections.emptyMap();
     }
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        return Collections.emptyMap();
+    }
 
     /**
      * 申请退款接口
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 58e622f..570feb1 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
@@ -39,6 +39,7 @@ import static com.egzosn.pay.wx.bean.WxTransferType.TRANSFERS;
 import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.MethodType;
 import com.egzosn.pay.common.bean.NoticeParams;
 import com.egzosn.pay.common.bean.Order;
@@ -514,6 +515,17 @@ public class WxPayService extends BasePayService implements
 
         return secondaryInterface(transactionId, outTradeNo, WxTransactionType.CLOSE);
     }
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        return secondaryInterface(closeOrder.getTradeNo(), closeOrder.getOutTradeNo(), WxTransactionType.CLOSE);
+    }
+
 
     /**
      * 交易交易撤销
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 cd3c66c..adae363 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
@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.api.BasePayService;
 import com.egzosn.pay.common.bean.BaseRefundResult;
 import com.egzosn.pay.common.bean.BillType;
+import com.egzosn.pay.common.bean.CloseOrder;
 import com.egzosn.pay.common.bean.CurType;
 import com.egzosn.pay.common.bean.DefaultCurType;
 import com.egzosn.pay.common.bean.MethodType;
@@ -298,7 +299,16 @@ public class YiJiPayService extends BasePayService {
     public Map close(String tradeNo, String outTradeNo) {
         return Collections.emptyMap();
     }
-
+    /**
+     * 交易关闭接口
+     *
+     * @param closeOrder    关闭订单
+     * @return 返回支付方交易关闭后的结果
+     */
+    @Override
+    public Map close(CloseOrder closeOrder){
+        return Collections.emptyMap();
+    }
 
     /**
      * 申请退款接口