diff --git a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java index 8d03d187..499638ba 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java @@ -113,6 +113,36 @@ public class WuyouController { return Result.success().put("data", baseResp.getData()); } + @ApiOperation("查询订单支付结果") + @GetMapping("/queryOrder/{orderId}") + public Result queryOrder(HttpServletRequest request, @PathVariable("orderId") Long orderId) { + Orders order = ordersService.getById(orderId); + if (order == null) { + return Result.error("订单不存在"); + } + + PayDetails payDetails = payDetailsDao.selectByOrderId(order.getOrdersNo()); + if (payDetails == null) { + return Result.error("订单支付信息不存在"); + } + + if (payDetails.getState() == 1) { + return Result.success().put("data", 1); + } + + BaseResp baseResp = WuyouPay.queryOrder(payDetails.getTradeNo(), order.getPayMoney().toString(), request.getHeader("User-Agent")); + if (baseResp.getCode() == null || baseResp.getData() == null) { + return Result.success().put("data", 0); + } + + if ("SUCCESS".equals(baseResp.getPayStatus())) { + updateOrderStatus(payDetails, order); + return Result.success().put("data", 1); + } + + return Result.success().put("data", 0); + } + @PostMapping("/extractNotify") public String extractNotify(HttpServletRequest request, NotifyDto notifyDto) { log.info("无忧支付提现回调, {}", notifyDto); @@ -166,12 +196,18 @@ public class WuyouController { // return "签名错误"; } + if (!"CODE_SUCCESS".equals(notifyDto.getStatus())) { + log.error("无忧支付回调 未支付成功, 参数: {}", JSONObject.toJSONString(notifyDto)); + return "success"; + } + log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto)); PayDetails payDetails = payDetailsDao.selectByTradeNo(notifyDto.getOut_trade_no()); - if (payDetails.getState() != 0) { + if (payDetails.getState() == 1) { log.info("订单表信息丢失!"); + return "success"; } Orders order = ordersService.selectOrderByOrdersNo(payDetails.getOrderId()); @@ -185,36 +221,8 @@ public class WuyouController { return "订单已支付"; } - String format = sdf.format(new Date()); - payDetailsDao.updateState(payDetails.getId(), 1, format, notifyDto.getOut_trade_no()); + updateOrderStatus(payDetails, order); - order.setPayWay(9); - order.setStatus(1); - order.setPayTime(DateUtils.format(new Date())); - - UserEntity user = userService.selectUserById(order.getUserId()); - UserEntity byUser = userService.queryByInvitationCode(user.getInviterCode()); - Map map = inviteService.updateInvite(byUser, format, user.getUserId(), order.getPayMoney()); - Object oneUserId = map.get("oneUserId"); - if (oneUserId != null) { - order.setOneUserId(Long.parseLong(String.valueOf(oneUserId))); - order.setOneMoney(new BigDecimal(String.valueOf(map.get("oneMoney")))); - } - Object twoUserId = map.get("twoUserId"); - if (twoUserId != null) { - order.setTwoUserId(Long.parseLong(String.valueOf(twoUserId))); - order.setTwoMoney(new BigDecimal(String.valueOf(map.get("twoMoney")))); - } - Object sysUserId = map.get("sysUserId"); - if (sysUserId != null) { - order.setSysUserId(Long.parseLong(String.valueOf(sysUserId))); - order.setQdMoney(new BigDecimal(String.valueOf(map.get("qdMoney")))); - } - ordersService.updateById(order); - ordersService.insertOrders(order); - CompletableFuture.runAsync(() -> { - activities(user, byUser); - }); return "success"; } @@ -256,4 +264,41 @@ public class WuyouController { } } } + + private void updateOrderStatus(PayDetails payDetails, Orders order) { + if (payDetails.getState() == 1) { + return; + } + + String format = sdf.format(new Date()); + payDetailsDao.updateState(payDetails.getId(), 1, format, payDetails.getTradeNo()); + + order.setPayWay(9); + order.setStatus(1); + order.setPayTime(DateUtils.format(new Date())); + + UserEntity user = userService.selectUserById(order.getUserId()); + UserEntity byUser = userService.queryByInvitationCode(user.getInviterCode()); + Map map = inviteService.updateInvite(byUser, format, user.getUserId(), order.getPayMoney()); + Object oneUserId = map.get("oneUserId"); + if (oneUserId != null) { + order.setOneUserId(Long.parseLong(String.valueOf(oneUserId))); + order.setOneMoney(new BigDecimal(String.valueOf(map.get("oneMoney")))); + } + Object twoUserId = map.get("twoUserId"); + if (twoUserId != null) { + order.setTwoUserId(Long.parseLong(String.valueOf(twoUserId))); + order.setTwoMoney(new BigDecimal(String.valueOf(map.get("twoMoney")))); + } + Object sysUserId = map.get("sysUserId"); + if (sysUserId != null) { + order.setSysUserId(Long.parseLong(String.valueOf(sysUserId))); + order.setQdMoney(new BigDecimal(String.valueOf(map.get("qdMoney")))); + } + ordersService.updateById(order); + ordersService.insertOrders(order); + CompletableFuture.runAsync(() -> { + activities(user, byUser); + }); + } }