From ac41edc045e8945f01e8460b6712579b710aadef Mon Sep 17 00:00:00 2001 From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com> Date: 星期三, 09 十月 2024 14:50:54 +0800 Subject: [PATCH] 再支付验证 --- src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java | 64 ++++++++++++++++++++----------- 1 files changed, 41 insertions(+), 23 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 b53e9c1..bf4fbf7 100644 --- a/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java +++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentSybService.java @@ -276,27 +276,31 @@ VSP503:微信支付退款 */ String trxstatus = params.get("trxstatus");//支付状态 - if("VSP501".equals(trxcode) && "0000".equals(trxstatus)){ - String status = Constants.PAYMENT_STATUS.SUCCESS.name(); - UserPaymentDTO dto = new UserPaymentDTO(); - dto.setOrderId(orderId); - dto.setTransactionId(transactionId); - dto.setOutTradeNo(outTradeNo); - dto.setOriginalXml(originalXml); - String trxamtStr = params.get("trxamt");//交易金额 单位:分 - log.info("======trxamt: " + trxamtStr); - dto.setPaymentAmountCallback(trxamtStr); + if("VSP501".equals(trxcode)){ + if("0000".equals(trxstatus)) { + String status = Constants.PAYMENT_STATUS.SUCCESS.name(); + UserPaymentDTO dto = new UserPaymentDTO(); + dto.setOrderId(orderId); + dto.setTransactionId(transactionId); + dto.setOutTradeNo(outTradeNo); + dto.setOriginalXml(originalXml); + String trxamtStr = params.get("trxamt");//交易金额 单位:分 + log.info("======trxamt: " + trxamtStr); + dto.setPaymentAmountCallback(trxamtStr); - dto.setStatus(status); + dto.setStatus(status); - String orderStatus = Constants.ORDER_STATUS_BACKEND.PAYMENT.name(); + String orderStatus = Constants.ORDER_STATUS_BACKEND.PAYMENT.name(); - saveCallbackInfo(dto, orderStatus); + saveCallbackInfo(dto, orderStatus); - return true; + return true; + } } - return !("2008".equals(trxstatus) || "2000".equals(trxstatus)); + return !("1001".equals(trxstatus) || StringUtils.isEmpty(trxstatus) + || "2008".equals(trxstatus) + || "2000".equals(trxstatus)); } public boolean checkOrderStatusRefund(String outTradeNo) throws Exception { @@ -319,7 +323,7 @@ VSP502:微信支付撤销 VSP503:微信支付退款 */ - if ("VSP502".equals(trxcode)|| "VSP503".equals(trxcode)){ + if ("VSP502".equals(trxcode) || "VSP503".equals(trxcode)){ String trxid = params.get("trxid"); updateOrderRefund(outTradeNo, trxid); @@ -337,12 +341,26 @@ } SybPayService service = new SybPayService(); - Map<String,String> map = service.close(null, orderId); - log.info("======关闭订单结果" + toJSONString(map)); - String retcode = map.get("retcode"); - if(!"SUCCESS".equals(retcode)){ - throw new ValidationException("取消订单失败: " + map.get("retmsg")); + Map<String,String> params = service.query(orderId, up.getTransactionId()); + String trxstatus = params.get("trxstatus");//支付状态 + + if("1001".equals(trxstatus)){ + //空单 直接取消 + } else if (StringUtils.isEmpty(trxstatus) + || "2008".equals(trxstatus) + || "2000".equals(trxstatus)) { + String trxid = params.get("trxid"); + //2008或者2000 : 交易处理中,请查询交易,如果是实时交易(例如刷卡支付,交易撤销,退货),建议每隔一段时间(10秒)查询交易 + Map<String,String> map = service.close(trxid, orderId); + log.info("======关闭订单结果" + toJSONString(map)); + + String retcode = map.get("retcode"); + if(!"SUCCESS".equals(retcode)){ + throw new ValidationException("取消订单失败: " + map.get("retmsg")); + } + } else { + throw new ValidationException("订单不可取消"); } Order order = orderMapper.selectById(orderId); @@ -425,7 +443,7 @@ long trxamt = up.getPaymentAmount().longValue(); 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); @@ -452,7 +470,7 @@ long trxamt = up.getPaymentAmount().longValue(); 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); -- Gitblit v1.9.3