Jelajahi Sumber

启动检查等待支付状态的订单,去聚合支付查询

qzyReal 3 tahun lalu
induk
melakukan
2fd71c3e28

+ 1 - 1
sp-server/src/main/java/com/pj/api/jh/service/JhService.java

@@ -164,7 +164,7 @@ public class JhService {
             return;
         }
         NotifyBO notifyBO = new NotifyBO();
-        notifyBO.setOutTradeNo(bo.getOutTradeNo()).setTimeEnd(bo.getSuccessTime())
+        notifyBO.setOutTradeNo(bo.getOutTradeNo()).setTimeEnd(bo.getSuccessTime()).setTradeStatus(orderStatus)
                 .setTransactionId(bo.getBankTrxNo()).setTimeEnd(bo.getSuccessTime())
                 .setTotalFee(NumberUtil.mul(bo.getOrderPrice(), 100 + "").toString());
         wxService.WxNotify(notifyBO);

+ 5 - 8
sp-server/src/main/java/com/pj/api/jh/task/CheckPayStatusTask.java

@@ -42,11 +42,6 @@ public class CheckPayStatusTask extends Task {
     }
 
     private void check(String url, Map<String, Object> params) {
-        LocalDateTime now = LocalDateTime.now();
-        if (ChronoUnit.MINUTES.between(startTime,now)>5){
-            log.error("超时订单,不再查单:{}",outTradeNo);
-            return;
-        }
         log.info("开始查单===:{}", JSONUtil.toJsonStr(params));
         JhHttpUtils jhHttpUtils = SpringUtil.getBean(JhHttpUtils.class);
         JSONObject result = jhHttpUtils.checkStatus(url, params);
@@ -61,12 +56,14 @@ public class CheckPayStatusTask extends Task {
         } else if (StrUtil.equals(orderStatus, "SUCCESS") || StrUtil.equals(orderStatus, "FINISH")) {
             TbOrderService tbOrderService = SpringUtil.getBean(TbOrderService.class);
             TbOrder tbOrder = tbOrderService.findByOutTradeNo(outTradeNo);
+            tbOrder.setOrderStatus(orderStatus);
+            tbOrderService.updateById(tbOrder);
             if (StrUtil.equals("WAITING_PAYMENT", tbOrder.getOrderStatus())) {
                 JhService jhService = SpringUtil.getBean(JhService.class);
                 JhNotifyBO notifyBO = new JhNotifyBO();
-                String completeDate=result.getStr("completeDate");
-                if (StrUtil.isEmpty(completeDate)){
-                    completeDate=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+                String completeDate = result.getStr("completeDate");
+                if (StrUtil.isEmpty(completeDate)) {
+                    completeDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
                 }
                 notifyBO.setAttach(tbOrder.getAttach()).setBankTrxNo(tbOrder.getTransactionId())
                         .setTradeStatus(orderStatus).setSuccessTime(completeDate)

+ 2 - 6
sp-server/src/main/java/com/pj/api/jh/utils/JhHttpUtils.java

@@ -39,7 +39,6 @@ public class JhHttpUtils {
         return resp;
     }
 
-    @Retryable(maxAttempts = 15, backoff = @Backoff(delay = 3000, maxDelay = 10000))
     public JSONObject checkStatus(String url, Map<String, Object> params) {
         log.info("检查支付状态:{},{}", url, JSONUtil.toJsonStr(params));
         String resp = HttpUtil.createPost(url)
@@ -48,10 +47,7 @@ public class JhHttpUtils {
                 .form(params)
                 .execute().body();
         log.info("检查支付状态返回:{},{}", url, resp);
-        JSONObject result = JSONUtil.parseObj(resp);
-        if (!StrUtil.equals(result.getStr("resultCode"), "0000")) {
-            throw new BusinessException(result.getStr("errMsg"));
-        }
-        return result;
+        return JSONUtil.parseObj(resp);
+
     }
 }

+ 11 - 8
sp-server/src/main/java/com/pj/api/wx/api/WxController.java

@@ -25,14 +25,15 @@ public class WxController {
     private WxService wxService;
 
     @RequestMapping(value = "notify")
-    public void notify(@RequestBody NotifyBO notifyBO, HttpServletResponse response) throws Exception{
+    public void notify(@RequestBody NotifyBO notifyBO, HttpServletResponse response) throws Exception {
         log.info("wx pay notify;{}", JSONUtil.toJsonStr(notifyBO));
         response.setContentType("application/json");
         response.setCharacterEncoding("UTF-8");
         Writer writer = response.getWriter();
-        Map<String,String>result=new HashMap<>();
+        Map<String, String> result = new HashMap<>();
         result.put("return_code", "SUCCESS");
         result.put("return_msg", "OK");
+        notifyBO.setTradeStatus("SUCCESS");
         wxService.WxNotify(notifyBO);
         writer.write(XmlUtil.mapToXmlStr(result));
         writer.flush();
@@ -46,20 +47,22 @@ public class WxController {
      * @return
      */
     @RequestMapping(value = "pre-pay")
-    public AjaxJson prePay( HttpServletRequest request) throws Exception {
+    public AjaxJson prePay(HttpServletRequest request) throws Exception {
         return AjaxJson.getSuccessData(wxService.prePay(request));
     }
 
     @GetMapping(value = "getRedirectUrl")
-    public AjaxJson getRedirectUrl(String path,@RequestParam(required = false) String state){
-        return AjaxJson.getSuccessData(wxService.getRedirectUrl(path,state));
+    public AjaxJson getRedirectUrl(String path, @RequestParam(required = false) String state) {
+        return AjaxJson.getSuccessData(wxService.getRedirectUrl(path, state));
     }
+
     @GetMapping(value = "getOpenidByCode")
-    public AjaxJson getOpenidByCode(String code,@RequestParam(required = false) String openid){
-        return AjaxJson.getSuccessData(wxService.getOpenidByCode(code,openid));
+    public AjaxJson getOpenidByCode(String code, @RequestParam(required = false) String openid) {
+        return AjaxJson.getSuccessData(wxService.getOpenidByCode(code, openid));
     }
+
     @GetMapping(value = "getWxConfig")
-    public AjaxJson getWxConfig(String url){
+    public AjaxJson getWxConfig(String url) {
         return AjaxJson.getSuccessData(wxService.getWxConfig(url));
     }
 }

+ 3 - 0
sp-server/src/main/java/com/pj/api/wx/bo/NotifyBO.java

@@ -41,4 +41,7 @@ public class NotifyBO {
     @JacksonXmlProperty(localName = "attach")
     private String attach;
 
+    @JacksonXmlProperty(localName = "result_code")
+    private  String tradeStatus;
+
 }

+ 8 - 3
sp-server/src/main/java/com/pj/api/wx/service/WxService.java

@@ -204,12 +204,17 @@ public class WxService {
 
 
     public void WxNotify(NotifyBO notifyBO) {
+        String orderStatus=notifyBO.getTradeStatus();
+        if (!"SUCCESS".equals(orderStatus) && !"FINISH".equals(orderStatus)) {
+            log.error("支付订单回调失败:{}",JSONUtil.toJsonStr(notifyBO));
+            return;
+        }
         String outTradeNo = notifyBO.getOutTradeNo();
         if (StrUtil.isNotEmpty(RedisUtil.get(outTradeNo))) {
             log.error("========订单已处理==========:{}", outTradeNo);
             return;
         }
-        RedisUtil.setByHour(outTradeNo, DateUtil.now(), 1);
+        RedisUtil.setByMINUTES(outTradeNo, DateUtil.now(), 10);
         TbOrder tbOrder = tbOrderService.findByOutTradeNo(outTradeNo);
         if (tbOrder == null) {
             log.error("========订单不存在==========:{}", outTradeNo);
@@ -252,9 +257,9 @@ public class WxService {
                 List<TbBusiness> businessList = tbBusinessService.listByIds(businessIds);
                 for (TbBusiness tbBusiness : businessList) {
                     tbBusiness.setPayTime(payTime).setPayType(3).setConfirmInput(1).setConfirmInputTime(payTime)
-                            .setPayMoney(tbBusiness.getPayMoney().add(tbBusiness.getItemPrice()))
+                            .setPayMoney(tbBusiness.getItemPrice())
                             .setPayNo(transactionId);
-                    tbBusiness.setPayStatus(tbBusiness.getPayMoney().equals(tbBusiness.getItemPrice()) ? 3 : 4);
+                    tbBusiness.setPayStatus(3);
                     tbBusinessService.updateById(tbBusiness);
                     TbGoods tbGoods = tbGoodsService.getById(tbBusiness.getGoodsId());
                     List<TbBusinessCar> carList = tbBusinessCarService.findOtherBusinessCar(businessId);

+ 4 - 7
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java

@@ -218,10 +218,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         carList.forEach(tbBusinessCar -> {
             tbBusinessCar.setIsLock(0);
             String carNo = tbBusinessCar.getCarNo().toUpperCase();
-            TbBusinessCar db = tbBusinessCarService.findByBusinessIdAndCarNo(t.getId(), carNo);
-            if (db != null) {
-                tbBusinessCar.setId(db.getId()).setIsLock(db.getIsLock());
-            }
+
             TbBusinessCar car = tbBusinessCarService.findInAndNoBusinessCar(carNo);
             if (car != null) {
                 tbBusinessCar.setId(car.getId()).setRealInTime(car.getRealInTime()).setIsLock(car.getIsLock());
@@ -237,13 +234,13 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         });
         String yueCarNo = t.getCardNo().toUpperCase();
         TbBusinessCar yueCar = tbBusinessCarService.findInAndNoBusinessCar(yueCarNo);
-        if (yueCar == null) {
-            yueCar = tbBusinessCarService.findByBusinessIdAndCarNo(t.getId(), yueCarNo);
+
+
             if (yueCar == null) {
                 yueCar = new TbBusinessCar();
                 yueCar.setIsLock(0);
             }
-        }
+
         yueCar.setBusinessId(t.getId()).setCarSize(t.getCardSize()).setCarNo(yueCarNo).setCustomerId(t.getCustomerId());
         if (StrUtil.isEmpty(yueCar.getNo())) {
             yueCar.setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));

+ 1 - 10
sp-server/src/main/java/com/pj/project/tb_business_car/TbBusinessCarService.java

@@ -91,12 +91,7 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
         return tbBusinessCarMapper.getList(so);
     }
 
-    public TbBusinessCar findByBusinessIdAndCarNo(String businessId, String carNo) {
-        QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
-        ew.eq("business_id", businessId)
-                .eq("car_no", carNo.toUpperCase());
-        return getOne(ew);
-    }
+
 
     public TbBusinessCar findInAndNoBusinessCar(String carNo) {
         QueryWrapper<TbBusinessCar> ew = new QueryWrapper<>();
@@ -165,10 +160,6 @@ public class TbBusinessCarService extends ServiceImpl<TbBusinessCarMapper, TbBus
         if (db != null) {
             throw new Exception("该车有未完成业务");
         }
-        TbBusinessCar businessCar = this.findByBusinessIdAndCarNo(businessId, carNo);
-        if (businessCar != null) {
-            throw new Exception("车辆已存在");
-        }
         TbBusiness tbBusiness = tbBusinessService.getById(businessId);
         if (!CAR_LIST.contains(carNo.substring(0, 1))) {
             tbBusiness.setCardNo(carNo);

+ 3 - 4
sp-server/src/main/java/com/pj/project/tb_order/TbOrderService.java

@@ -61,23 +61,22 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
     public void check() {
         QueryWrapper<TbOrder> ew = new QueryWrapper<>();
         ew.eq("order_status", "WAITING_PAYMENT");
-        ew.ge("date_format(order_time,'%Y-%m-%d %H:%i:%s')", LocalDateTime.now().minusMinutes(10).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         List<TbOrder> list = this.list(ew);
         String url = jhConfig.getServerUrl() + "/uaps-web-gateway/query/singleOrder";
         list.forEach(tbOrder -> {
             Map<String, Object> params = jhService.buildCheckParams(tbOrder.getOutTradeNo());
             JSONObject result = jhHttpUtils.checkStatus(url, params);
             String orderStatus = result.getStr("orderStatus");
+            tbOrder.setOrderStatus(orderStatus);
             if (StrUtil.equals(orderStatus, "SUCCESS") || StrUtil.equals(orderStatus, "FINISH")) {
-                tbOrder.setOrderStatus(orderStatus)
-                        .setTransactionId(result.getStr("bankTrxNo"))
+                tbOrder.setTransactionId(result.getStr("bankTrxNo"))
                         .setCompleteDate(result.getStr("completeDate"));
-                this.updateById(tbOrder);
                 JhNotifyBO notifyBO = new JhNotifyBO();
                 notifyBO.setAttach(tbOrder.getAttach()).setBankTrxNo(tbOrder.getTransactionId()).setTradeStatus(orderStatus)
                         .setOutTradeNo(tbOrder.getOutTradeNo()).setOrderPrice(tbOrder.getPrice());
                 jhService.notifyResult(notifyBO);
             }
+            this.updateById(tbOrder);
         });
     }
 

+ 5 - 4
sp-server/src/main/resources/application-dev.yml

@@ -79,9 +79,10 @@ wx-config:
     business-confirm-template: aOOyH-wldRhNviL-AKGZUl2g5uj6NXUaW8otkJJio90
 jh-config:
     product-type: 10000301
-    business-merchant-no: PRO88882021122310003030
-    merchant-no: PRO88882021122310003030
+    business-merchant-no: PRO88882022051010003035
+    merchant-no: PRO88882022051010003035
     trade-type: GAS_PAY
-    pay-secret: f0b9d6ea704d4c03a6b44be50d055025
-    server-url: http://116.252.74.15:8081
+    pay-secret: 85571966fdd14175ae7d81f59f545615
+    server-url: https://btpay.bgigc.com
     enable: true
+