From 8c312d2f443ee1c953b93b9522c2675aa1f9fe1f Mon Sep 17 00:00:00 2001 From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com> Date: 星期五, 11 十月 2024 09:00:25 +0800 Subject: [PATCH] 退款状态判断 --- src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java | 40 +++++++++++++++++++++++++++++++++------- 1 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java b/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java index 83853a9..b181462 100644 --- a/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java +++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java @@ -298,7 +298,9 @@ } } - return !"1001".equals(trxstatus); + return !("1001".equals(trxstatus) || StringUtils.isEmpty(trxstatus) + || "2008".equals(trxstatus) + || "2000".equals(trxstatus)); } public boolean checkOrderStatusRefund(String outTradeNo) throws Exception { @@ -343,8 +345,10 @@ Map<String,String> params = service.query(orderId, up.getTransactionId()); String trxstatus = params.get("trxstatus");//支付状态 - if("1001".equals(trxstatus)){ - //空单 直接取消 + if("1001".equals(trxstatus) || "3088".equals(trxstatus)){ + //3088-交易未支付(在查询时间区间内未成功支付,如已影响资金24小时内会做差错退款处理) + //1001:交易不存在 + //直接取消 } else if (StringUtils.isEmpty(trxstatus) || "2008".equals(trxstatus) || "2000".equals(trxstatus)) { @@ -438,16 +442,22 @@ throw new ValidationException("订单不可退款"); } - long trxamt = up.getPaymentAmount().longValue(); + long trxamt = prepareAmount(up.getPaymentAmount()); String reqsn = orderId; String oldtrxid = up.getTransactionId(); - String oldreqsn = null; + String oldreqsn = orderId; SybPayService service = new SybPayService(); Map<String,String> map = service.cancel(trxamt, reqsn, oldtrxid, oldreqsn); String retcode = map.get("retcode"); if(!"SUCCESS".equals(retcode)){ throw new ValidationException("订单退款失败: " + map.get("retmsg")); + } + + //这个不是订单状态,是通用的,如果是支付查询,代表就是订单状态,如果是退款代表的是退款状态 + String trxstatus = map.get("trxstatus"); + if(!"0000".equals(trxstatus)){ + throw new ValidationException("订单退款交易失败:" + map.get("errmsg")); } updateOrderRefund(orderId, oldtrxid); @@ -465,16 +475,22 @@ throw new ValidationException("订单不可退款"); } - long trxamt = up.getPaymentAmount().longValue(); + long trxamt = prepareAmount(up.getPaymentAmount()); String reqsn = orderId; String oldtrxid = up.getTransactionId(); - String oldreqsn = null; + String oldreqsn = orderId; SybPayService service = new SybPayService(); Map<String,String> map = service.refund(trxamt, reqsn, oldtrxid, oldreqsn); String retcode = map.get("retcode"); if(!"SUCCESS".equals(retcode)){ throw new ValidationException("订单退款失败: " + map.get("retmsg")); + } + + //这个不是订单状态,是通用的,如果是支付查询,代表就是订单状态,如果是退款代表的是退款状态 + String trxstatus = map.get("trxstatus"); + if(!"0000".equals(trxstatus)){ + throw new ValidationException("订单退款交易失败:" + map.get("errmsg")); } updateOrderRefund(orderId, oldtrxid); @@ -553,9 +569,19 @@ throw new ValidationException("订单退款失败: " + map.get("retmsg")); } + //这个不是订单状态,是通用的,如果是支付查询,代表就是订单状态,如果是退款代表的是退款状态 + String trxstatus = map.get("trxstatus"); + if(!"0000".equals(trxstatus)){ + throw new ValidationException("订单退款交易失败:" + map.get("errmsg")); + } + re.setRequest(toJSONString(map)); re.create(SecurityUtils.getUserId()); + re.setStatus(retcode); + re.setNotification(retcode); + re.setNotifyTime(LocalDateTime.now()); + orderRefundMapper.insert(re); return re.getId(); -- Gitblit v1.9.3