Ver Fonte

Merge branch 'dev' into 'mp-server-test'

支付直连消息处理

See merge request quanshu/mp-server!828
zhong chunping há 2 anos atrás
pai
commit
bfbdd040cf

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

@@ -108,6 +108,11 @@ public class AlipayCallBackController {
       responseWrite(response,"fail");
       return;
     }
+    if (order.getOrderStatus() == PayOrderStatusEnum.SUCCESS.getValue()) {
+      logger.info("支付订单已成功,消息忽略,bizId:" + bizId + ",tradeNo:" + tradeNo);
+      responseWrite(response,"true");
+    }
+
     if(order.getTransactionAmount() != totalAmount){
       logger.error("回调金额与订单金额不一致");
       responseWrite(response,"fail");
@@ -125,22 +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 {
-      // 订单支付状态单独保存
-      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) {
-        throw new ServiceException("支付订单更新失败,orderId:" + order.getOrderId());
-      }
-
       // 更新订单,单个事务处理
       logger.info("支付回调消息更新成功 orderId:" + order.getOrderId());
       walletService.payOrderStatusHandle(payOrder);
       responseWrite(response,"success");
     } catch (Exception e){
-      LogUtil.error(logger, e, "支付回调消息更新失败 orderId:" + order.getOrderId());
+      LogUtil.error(logger, e, "支付回调消息处理异常 orderId:" + order.getOrderId());
       responseWrite(response,"fail");
     }
   }