woody 7 ماه پیش
والد
کامیت
85b26fc749

+ 39 - 0
framework-common/src/main/java/com/chelvc/framework/common/model/Compare.java

@@ -0,0 +1,39 @@
+package com.chelvc.framework.common.model;
+
+/**
+ * 比较方式枚举
+ *
+ * @author Woody
+ * @date 2024/9/8
+ */
+public enum Compare {
+    /**
+     * 小于
+     */
+    LT,
+
+    /**
+     * 小于等于
+     */
+    LE,
+
+    /**
+     * 等于
+     */
+    EQ,
+
+    /**
+     * 大于
+     */
+    GT,
+
+    /**
+     * 大于等于
+     */
+    GE,
+
+    /**
+     * 不等于
+     */
+    NE;
+}

+ 0 - 5
framework-wechat/src/main/java/com/chelvc/framework/wechat/WechatPayRequest.java

@@ -44,11 +44,6 @@ public class WechatPayRequest implements Serializable {
      */
      */
     private String openid;
     private String openid;
 
 
-    /**
-     * 微信unionid
-     */
-    private String unionid;
-
     /**
     /**
      * 上下文参数
      * 上下文参数
      */
      */

+ 28 - 8
framework-wechat/src/main/java/com/chelvc/framework/wechat/support/DefaultWechatPaymentHandler.java

@@ -63,18 +63,38 @@ public class DefaultWechatPaymentHandler implements WechatPaymentHandler {
 
 
     @Override
     @Override
     public WechatPaymentCallback callback(@NonNull String name, @NonNull String content) {
     public WechatPaymentCallback callback(@NonNull String name, @NonNull String content) {
+        // 首次处理(使用匹配的处理器)
+        StringBuilder error = null;
+        WechatPaymentCallback callback;
+        WechatPaymentProcessor primary = this.getProcessor(name, null);
+        try {
+            if (Objects.nonNull(callback = primary.callback(content))) {
+                return callback;
+            }
+        } catch (Exception e) {
+            (error = new StringBuilder()).append(e);
+        }
+
+        // 兼容处理,防止在支付配置切换过程中导致支付回调失败的情况
         for (WechatPaymentProcessor processor : this.processors) {
         for (WechatPaymentProcessor processor : this.processors) {
-            if (Objects.equals(name, processor.getName())) {
-                try {
-                    WechatPaymentCallback callback = processor.callback(content);
-                    if (Objects.nonNull(callback)) {
-                        return callback;
-                    }
-                } catch (Exception e) {
-                    log.error("Wechat payment callback process failed: {}", content, e);
+            if (processor == primary || !Objects.equals(name, processor.getName())) {
+                continue;
+            }
+            try {
+                if (Objects.nonNull(callback = processor.callback(content))) {
+                    return callback;
+                }
+            } catch (Exception e) {
+                if (error == null) {
+                    error = new StringBuilder();
+                }
+                if (error.length() > 0) {
+                    error.append(" ");
                 }
                 }
+                error.append(e);
             }
             }
         }
         }
+        log.error("Wechat payment callback process failed: {}\n{}", error, content);
         return null;
         return null;
     }
     }
 }
 }