rentaiming
2024-07-12 867dde624b009fe1f288f292ea68699abd0600f7
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.enums.PaymentMethodEnum;
import com.ruoyi.common.core.enums.PointStatusEnum;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.order.domain.Paylog;
import com.ruoyi.order.mapper.OrderAuctionBondMapper;
@@ -228,7 +229,7 @@
                        return this.alipay(orderNO, subject, body, price, request);
                    } if (type == 2){
                        // 微信预下单
                        return this.wxpay(2, orderNO, body, openId, price, request);
                        return this.wxpay(2 ,orderNO, body, openId, price, request);
                    }
                }else{
                    LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
@@ -244,7 +245,7 @@
                        return this.alipay(orderNO, subject, body, price, request);
                    } if (type == 2) {
                        // 微信预下单
                        return this.wxpay(2,page1.getOrderTimeSx(), orderNO, body,openId, price, request);
                        return this.wxpay(2, orderNO, body,openId, price, request);
                    }
                }
@@ -305,8 +306,16 @@
                            wrapper1.eq(OrderAuctionBond::getOrderNo,paylog1.getOutTradeNo());
                            wrapper1.eq(OrderAuctionBond::getDelFlag,0);
                            OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
                            if (one1.getOrderTimeSx().isAfter(LocalDateTime.now())){
                                boolean bo = refundForAlipay(paylog1.getOutTradeNo(), paylog1.getTradeNo(), paylog1.getPayMoney());
                            }
                            one1.setBoundStatus(BondStatusEnum.PAID);
                            orderAuctionBondMapper.updateById(one1);
                        }else{
                            LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
                            wrapper1.eq(Order::getOrderNo,paylog1.getOutTradeNo());
@@ -434,6 +443,20 @@
                            wrapper1.eq(OrderAuctionBond::getOrderNo,paylog.getOutTradeNo());
                            wrapper1.eq(OrderAuctionBond::getDelFlag,0);
                            OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
                            if (one1.getOrderTimeSx().isAfter(LocalDateTime.now())){
                                String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d);
                                Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3));
                                String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d);
                                Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3));
                                refundFee = Integer.parseInt(money.substring(0, money.length() - 3));
                                String regEx = "[^0-9]";
                                Pattern p = Pattern.compile(regEx);
                                Matcher m = p.matcher(paylog.getOutTradeNo());
                                String ma = m.replaceAll("").trim();
                                refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2");
                            }
                            one1.setBoundStatus(BondStatusEnum.PAID);
                            one1.setPaymentMethod(PaymentMethodEnum.WECHAT);
                            orderAuctionBondMapper.updateById(one1);
@@ -570,7 +593,7 @@
     * @param request
     * @return
     */
    public static R<Map<String, Object>> wxpay(Integer apptype,LocalDateTime  sx,String outTradeNo, String body,String openId, Double price,
    public static R<Map<String, Object>> wxpay(Integer apptype,String outTradeNo, String body,String openId, Double price,
                                               HttpServletRequest request) {
        // 获取预支付接口返回参数
        Map<String, Object> map1 = new HashMap<String, Object>();
@@ -610,10 +633,6 @@
            paraMap.put("body", body);
            //设置请求参数(商户订单号)
            paraMap.put("out_trade_no", outTradeNo);
            if (sx!=null){
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
                paraMap.put("time_expire",sx.format(formatter));
            }
            //设置请求参数(总金额)
            String money=SinataUtil.doubleRetainTwo(price*100d);