diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java index 8ef5aec62..52ae8f1f4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java @@ -156,7 +156,6 @@ public class WxPayBillServiceImpl implements WxPayBillService { if(resultData.code!=Result.SUCCESS){ return new ResultData(ErrorCode.ORDER_IS_FAIL); } - record=wxPayBillMapper.selectByPrimaryKey(wxPayBill.getId()); record.setOpenId(openId); //创建新的订单号 @@ -175,8 +174,29 @@ public class WxPayBillServiceImpl implements WxPayBillService { logger.info("新的订单数据:"+JSONObject.toJSONString(record)); }else{ logger.info("数据库存在订单信息,更新支付中状态,返回之前的预支付信息:"+JSONObject.toJSONString(wxPayBill)); - //订单在120分钟之内没有失效,延用之前预支付订单号 - if(wxPayBill.getPayTimeEnd().after(new Date())){ + if (!owe.equals(wxPayBill.getPayAmount())) { + logger.info("欠缴费用与之前不同发起新的订单:" + wxPayBill.toString()); + ResultData resultData = payBillClose(appInfo, wxPayBill); + if (resultData.code != Result.SUCCESS) { + return new ResultData(ErrorCode.ORDER_IS_FAIL); + } + record = wxPayBillMapper.selectByPrimaryKey(wxPayBill.getId()); + //创建新的订单号 + payBillNo = record.getId() + DateUtils.getSystemTime("yyMMddHHmmss"); + record.setPayTimeStart(currentDate); + long endtime = currentDate.getTime() + 120 * 60 * 1000; + record.setPayTimeEnd(new Date(endtime)); + record.setPayBillNo(payBillNo); + record.setPayAmount((Long) bill.get("owe")); + record.setUpdateTime(currentDate); + sqlRow = wxPayBillMapper.updateByPrimaryKeySelective(record); + if (sqlRow != 1) { + logger.error("pay bill update error: " + JSONObject.toJSONString(record)); + throw new MallinkException(ErrorCode.DB_FAIL); + } + logger.info("新的订单数据:" + JSONObject.toJSONString(record)); + } else if (wxPayBill.getPayTimeEnd().after(new Date())) { + //订单在120分钟之内没有失效,延用之前预支付订单号 String noncestr = Utility.generate32UUID(); String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); Map sighMap = MapUtil.getOrderMap(); @@ -194,13 +214,13 @@ public class WxPayBillServiceImpl implements WxPayBillService { returnMap.put("signType", "HMAC-SHA256"); logger.info("订单在120分钟之内没有失效,延用之前预支付订单号:"+JSONObject.toJSONString(wxPayBill)); return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); - }else{ + } else { //超过时间关闭订单 + logger.info("超过时间关闭订单:" + wxPayBill.toString()); ResultData resultData = payBillClose(appInfo, wxPayBill); if(resultData.code!=Result.SUCCESS){ return new ResultData(ErrorCode.ORDER_IS_FAIL); } - logger.info("超过时间关闭订单:"+wxPayBill.toString()); record=wxPayBillMapper.selectByPrimaryKey(wxPayBill.getId()); //创建新的订单号 payBillNo = record.getId()+DateUtils.getSystemTime("yyMMddHHmmss");