diff --git a/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java b/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java
index 9ff1b5c..6af2bc6 100644
--- a/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java
+++ b/electripper-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java
@@ -12,7 +12,8 @@ import lombok.Getter;
 public enum RedisLockKey {
 
     DEDUCTION("deduction", "押金抵扣"),
-    EDITPRICE("editPrice", "改价");
+    EDITPRICE("editPrice", "改价"),
+    PAYCALLBACK("payCallback", "支付回调");
 
     private final String key;
     private final String name;
diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java
index d48eaf8..1cd865a 100644
--- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java
+++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/CallbackServiceImpl.java
@@ -13,6 +13,8 @@ import com.ruoyi.common.core.domain.entity.AsUser;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.core.redis.RedisLock;
+import com.ruoyi.common.core.redis.enums.RedisLockKey;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.pay.wx.domain.NotifyEventType;
 import com.ruoyi.common.utils.*;
@@ -141,10 +143,12 @@ public class CallbackServiceImpl implements CallbackService {
     @Value("${aliyun.templateCode2}")
     private String templateCode2;
 
-
     @Resource
     private EtMsgLogMapper etMsgLogMapper;
 
+    @Autowired
+    private RedisLock redisLock;
+
 
     /**
      * 微信支付回调
@@ -183,9 +187,21 @@ public class CallbackServiceImpl implements CallbackService {
     public void businessHandle(String outTradeNo,AttachVo attachVo,String payType) {
         // 充值成功后的业务处理
         EtOrder order = orderService.selectEtOrderByOutTradeNo(outTradeNo);
+        String orderNo = order.getOrderNo();
         if(order.getPaid().equals(ServiceConstants.ORDER_PAY_STATUS_PAID)){
             return;
         }
+        // 加锁
+        ServiceUtil.assertion(!redisLock.lock(RedisLockKey.PAYCALLBACK, orderNo), "当前订单正在支付,请稍后再试!");
+        try {
+            busHandle(order, attachVo, payType);
+        } finally {
+            // 解锁
+            redisLock.unlock(RedisLockKey.PAYCALLBACK, orderNo);
+        }
+    }
+
+    private void busHandle(EtOrder order, AttachVo attachVo, String payType) {
         EtOrder order1 = new EtOrder();
         order1.setOrderId(order.getOrderId());
         logger.info("【支付回调】订单信息 : {}", JSON.toJSONString(order));