Ver Fonte

支付直连消息处理

chunping há 2 anos atrás
pai
commit
345759ab46

+ 12 - 9
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/AlipayCallBackController.java

@@ -130,19 +130,22 @@ public class AlipayCallBackController {
 //    payOrder.setChannelNo(channelNo);
     payOrder.setOrderStatus(PayOrderStatusEnum.SUCCESS.getValue());
 
-    // 订单支付状态单独保存
-    LambdaUpdateWrapper<PayOrder> updateWrapper = new LambdaUpdateWrapper<>();
-    updateWrapper.eq(PayOrder::getOrderStatus, PayOrderStatusEnum.WAIT.getValue());
-    updateWrapper.eq(PayOrder::getOrderId, order.getOrderId());
-    boolean ret = payOrderService.update(payOrder, updateWrapper);
-    if (!ret) {
-      LogUtil.error(logger, "支付回调消息更新支付单状态失败 orderId:" + order.getOrderId());
-      responseWrite(response,"fail");
-    }
+
     try {
       // 更新订单,单个事务处理
       logger.info("支付回调消息更新成功 orderId:" + order.getOrderId());
       walletService.payOrderStatusHandle(payOrder);
+
+      // 订单支付状态单独保存
+      LambdaUpdateWrapper<PayOrder> updateWrapper = new LambdaUpdateWrapper<>();
+      updateWrapper.eq(PayOrder::getOrderStatus, PayOrderStatusEnum.WAIT.getValue());
+      updateWrapper.eq(PayOrder::getOrderId, order.getOrderId());
+      boolean ret = payOrderService.update(payOrder, updateWrapper);
+      if (!ret) {
+        LogUtil.error(logger, "支付回调消息更新支付单状态失败 orderId:" + order.getOrderId());
+        responseWrite(response,"fail");
+      }
+
       responseWrite(response,"success");
     } catch (Exception e){
       LogUtil.error(logger, e, "支付回调消息处理异常 orderId:" + order.getOrderId());

+ 10 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/PayCallBackController.java

@@ -65,8 +65,13 @@ public class PayCallBackController {
     int payMoney = Integer.parseInt(request.getParameter("payMoney"));
     logger.info("data: orderNo:"+orderNo +" orderStatus:"+orderStatus +" shopOrderNo:"+shopOrderNo+ "channelNo:"+channelNo+" payType:"+payType);
 
-    //回调金额与订单金额一致性校验
+
     PayOrder order = payOrderService.getById(shopOrderNo);
+    if (order.getOrderStatus() == PayOrderStatusEnum.SUCCESS.getValue()) {
+      logger.info("支付订单已成功,消息忽略,shopOrderNo:" + shopOrderNo);
+      responseWrite(response,"true");
+    }
+    //回调金额与订单金额一致性校验
     if(order.getTransactionAmount() != payMoney){
       logger.error("回调金额与订单金额不一致");
       responseWrite(response,"error");
@@ -80,6 +85,10 @@ public class PayCallBackController {
     payOrder.setOrderStatus(orderStatus);
 
     try {
+      // 更新订单,单个事务处理
+      logger.info("支付回调消息更新成功 shopOrderNo:"+shopOrderNo);
+      walletService.payOrderStatusHandle(payOrder);
+
       // 订单支付状态单独保存
       LambdaUpdateWrapper<PayOrder> updateWrapper = new LambdaUpdateWrapper<>();
       updateWrapper.eq(PayOrder::getOrderStatus, PayOrderStatusEnum.WAIT.getValue());
@@ -88,10 +97,6 @@ public class PayCallBackController {
       if (!ret) {
         throw new ServiceException("支付订单更新失败,orderId:" + shopOrderNo);
       }
-
-      // 更新订单,单个事务处理
-      logger.info("支付回调消息更新成功 shopOrderNo:"+shopOrderNo);
-      walletService.payOrderStatusHandle(payOrder);
       responseWrite(response,"success");
     } catch (Exception e){
       LogUtil.error(logger, e, "支付回调消息更新失败 shopOrderNo:"+shopOrderNo);