Ver Fonte

feat : 支付宝支付回调调试完成

bilingfeng há 1 ano atrás
pai
commit
14da779823

+ 13 - 49
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/AliPayService.java

@@ -4,7 +4,6 @@ import com.alipay.easysdk.factory.Factory;
 import com.alipay.easysdk.kernel.Config;
 import com.alipay.easysdk.kernel.util.ResponseChecker;
 import com.alipay.easysdk.payment.app.models.AlipayTradeAppPayResponse;
-import com.alipay.easysdk.payment.common.models.AlipayTradeCloseResponse;
 import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse;
 import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
 import com.alipay.easysdk.payment.wap.models.AlipayTradeWapPayResponse;
@@ -55,21 +54,11 @@ public class AliPayService extends PayBaseService {
 
     private Pattern param = Pattern.compile("value=\"(.*)\">", Pattern.CASE_INSENSITIVE);
 
-    /**
-     * 支付成功并且已经超过可退款时限
-     */
-    private static final String TRADE_STATUS_FINISHED = "TRADE_FINISHED";
-
     /**
      * 支付成功
      */
     private static final String TRADE_STATUS_SUCCESS = "TRADE_SUCCESS";
 
-    /**
-     * 订单待支付(正确输入了支付密码, 但是余额不足, 未支付成功)
-     */
-    private static final String TRADE_STATUS_WAIT = "WAIT_BUYER_PAY";
-
     /**
      * 订单关闭
      */
@@ -171,9 +160,16 @@ public class AliPayService extends PayBaseService {
             return HttpStatusEnum.FAIL.getMsg();
         }
         //签名验证通过, 判断是否支付成功
-        if (Objects.equals("TRADE_SUCCESS", tradeStatus)) {
+        if (Objects.equals(TRADE_STATUS_SUCCESS, tradeStatus)) {
             this.paySuccess(orderNo, params.get("total_amount"), params.get("trade_no"));
         }
+        //订单自动关闭
+        if (Objects.equals(TRADE_STATUS_CLOSED, tradeStatus)) {
+            orderService.update(new LambdaUpdateWrapper<Order>()
+                    .set(Order::getStatus, OrderStateEnum.CANCEL_PAY.getCode())
+                    .set(Order::getUpdateTime, LocalDateTime.now())
+                    .eq(Order::getOrderId, orderNo));
+        }
         //返回消息接收成功
         log.error("支付宝异步回调 -------end----->");
         return HttpStatusEnum.SUCCESS.getMsg();
@@ -196,45 +192,13 @@ public class AliPayService extends PayBaseService {
             log.error("关闭订单查询订单信息异常, orderId : {}, e : {}", orderId, e.getMessage());
             return;
         }
+        //未下单的订单, 直接取消(后续如果用户成功支付, 也是可以收到支付成功的回调的)
         if (!ResponseChecker.success(queryResponse)) {
             log.error("关闭订单查询订单信息不存在, orderId : {}, queryResponse : {}", orderId, JsonUtil.toString(queryResponse));
-            return;
-        }
-        log.error("支付宝关闭订单, 查询阿里订单接口 queryResponse : {}", JsonUtil.toString(queryResponse));
-        //订单已经自动关闭
-        if (Objects.equals(queryResponse.getTradeStatus(), TRADE_STATUS_CLOSED)) {
-            //本地订单未更新为取消状态, 更新订单最新状态
-            if (!Objects.equals(platformOrderDTO.getStatus(), OrderStateEnum.CANCEL_PAY.getCode())) {
-                orderService.update(new LambdaUpdateWrapper<Order>()
-                        .set(Order::getStatus, OrderStateEnum.CANCEL_PAY.getCode())
-                        .set(Order::getUpdateTime, LocalDateTime.now())
-                        .eq(Order::getOrderId, orderId));
-            }
-            return;
-        }
-        //订单是支付成功或者完成状态, 本地订单非成功状态(支付成功的订单, 到不了关闭逻辑)
-        if (Objects.equals(queryResponse.getTradeStatus(), TRADE_STATUS_SUCCESS)
-                || Objects.equals(queryResponse.getTradeStatus(), TRADE_STATUS_FINISHED)) {
-            this.paySuccess(orderId, platformOrderDTO.getAmount().toString(), this.payMerchant.getMerchantNo());
-        }
-        //订单已经超时, 还是待支付状态(该逻辑只是兜底, 按照支付宝自动超时关闭, 正常情况下该逻辑不会执行)
-        if (Objects.equals(queryResponse.getTradeStatus(), TRADE_STATUS_WAIT)) {
-            log.error("订单超时, 支付宝订单未自动关闭, orderId : {}", orderId);
-            //执行关闭订单
-            AlipayTradeCloseResponse response;
-            try {
-                response = Factory.Payment.Common().close(orderId);
-            } catch (Exception e) {
-                log.error("支付宝执行关闭订单异常, orderId : {}, e : {}", orderId, e.getMessage());
-                return;
-            }
-            //订单关闭成功, 订单状态更新为取消
-            if (ResponseChecker.success(response)) {
-                orderService.update(new LambdaUpdateWrapper<Order>()
-                        .set(Order::getStatus, OrderStateEnum.CANCEL_PAY.getCode())
-                        .set(Order::getUpdateTime, LocalDateTime.now())
-                        .eq(Order::getOrderId, orderId));
-            }
+            orderService.update(new LambdaUpdateWrapper<Order>()
+                    .set(Order::getStatus, OrderStateEnum.CANCEL_PAY.getCode())
+                    .set(Order::getUpdateTime, LocalDateTime.now())
+                    .eq(Order::getOrderId, orderId));
         }
     }