From ae1471f378f399f76518539ec8992e64a3673436 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期三, 08 一月 2025 15:26:06 +0800 Subject: [PATCH] 1.订单提交:订单最小金额配置 --- src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java | 69 +++++++++++++++++++++++++++++----- 1 files changed, 59 insertions(+), 10 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 bf4fbf7..ea8f878 100644 --- a/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java +++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java @@ -28,7 +28,9 @@ import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -227,6 +229,19 @@ order.setPaymentAmount(order.getTotalAmount()); } order.setPaymentTime(up.getPaymentTimeCallback()); + + if(null!=order.getPaymentTime()){ + LocalDateTime paymentTime = order.getPaymentTime(); + LocalDate paymentDate = paymentTime.toLocalDate(); + LocalDateTime today1700 = paymentTime.with(LocalTime.of(17, 0)); + // 比较时间是否大于当天的 17:00 + if (paymentTime.isAfter(today1700)) { + // 如果大于 17:00,设置为下一天的日期 + paymentDate = paymentDate.plusDays(1); + } + order.setPaymentDateSta(paymentDate); + } + order.setStatus(Constants.ORDER_STATUS.SEND.name()); } else if (Constants.ORDER_STATUS_BACKEND.CANCEL.name().equals(orderStatus)){ order.setStatus(Constants.ORDER_STATUS.CANCEL.name()); @@ -343,10 +358,16 @@ SybPayService service = new SybPayService(); Map<String,String> params = service.query(orderId, up.getTransactionId()); + String retcode = params.get("retcode"); + if(!"SUCCESS".equals(retcode)){ + throw new ValidationException("查询订单交易状态失败: " + params.get("retmsg")); + } 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)) { @@ -355,10 +376,15 @@ Map<String,String> map = service.close(trxid, orderId); log.info("======关闭订单结果" + toJSONString(map)); - String retcode = map.get("retcode"); + retcode = map.get("retcode"); if(!"SUCCESS".equals(retcode)){ - throw new ValidationException("取消订单失败: " + map.get("retmsg")); + throw new ValidationException("调用通联关闭订单失败: " + map.get("retmsg")); } + trxstatus = map.get("trxstatus"); + if(!"0000".equals(trxstatus)){ + throw new ValidationException("取消订单失败: " + map.get("errmsg")); + } + } else { throw new ValidationException("订单不可取消"); } @@ -440,7 +466,7 @@ throw new ValidationException("订单不可退款"); } - long trxamt = up.getPaymentAmount().longValue(); + long trxamt = prepareAmount(up.getPaymentAmount()); String reqsn = orderId; String oldtrxid = up.getTransactionId(); String oldreqsn = orderId; @@ -449,7 +475,14 @@ 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")); + throw new ValidationException("调用通联撤销接口失败: " + map.get("retmsg")); + } + + //这个不是订单状态,是通用的,如果是支付查询,代表就是订单状态,如果是退款代表的是退款状态 + String trxstatus = map.get("trxstatus"); + if(!"0000".equals(trxstatus)){ + log.error("通联撤销交易失败:" + map.get("errmsg")); + throw new ValidationException("订单退款交易失败:" + map.get("errmsg")); } updateOrderRefund(orderId, oldtrxid); @@ -467,7 +500,7 @@ throw new ValidationException("订单不可退款"); } - long trxamt = up.getPaymentAmount().longValue(); + long trxamt = prepareAmount(up.getPaymentAmount()); String reqsn = orderId; String oldtrxid = up.getTransactionId(); String oldreqsn = orderId; @@ -476,7 +509,13 @@ 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")); + throw new ValidationException("调用通联退款失败: " + map.get("retmsg")); + } + + //这个不是订单状态,是通用的,如果是支付查询,代表就是订单状态,如果是退款代表的是退款状态 + String trxstatus = map.get("trxstatus"); + if(!"0000".equals(trxstatus)){ + throw new ValidationException("订单退款交易失败:" + map.get("errmsg")); } updateOrderRefund(orderId, oldtrxid); @@ -544,7 +583,7 @@ new QueryWrapper<UserPayment>().eq("order_id", o.getId())); long trxamt = refund; - String reqsn = o.getId(); + String reqsn = re.getId();//退款单的id String oldtrxid = up.getTransactionId(); String oldreqsn = null; @@ -552,12 +591,22 @@ 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")); + 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