rk
2026-04-02 d0c2a04e6ec9f07f84aaaa864362358423dda83b
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -19,12 +19,16 @@
import com.doumee.dao.business.model.*;
import com.doumee.dao.dto.*;
import com.doumee.dao.vo.OrderReleaseVO;
import com.doumee.dao.vo.PayResponse;
import com.doumee.service.business.AliSmsService;
import com.doumee.service.business.OrdersService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Amount;
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Payer;
@@ -44,10 +48,15 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -194,30 +203,32 @@
        return orderReleaseVO;
    }
    private Object getWxPayResponse(Orders orders,String openid){
        Object response = null;
        //调起支付
        PrepayRequest request = new PrepayRequest();
        request.setAttach("createOrder");
        request.setDescription("近快订单支付");
        request.setSpMchid(WxMiniConfig.wxProperties.getMchId());
        request.setSpAppid(WxMiniConfig.wxProperties.getAppId());
        request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId());
        request.setSubAppid(WxMiniConfig.wxProperties.getSubAppId());
    private PayResponse getWxPayResponse(Orders orders,String openid){
        try {
            Object response = null;
            //调起支付
            WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
            request.setAttach("createOrder");
            request.setAttach("订单支付");
            request.setOutTradeNo(orders.getOutTradeNo());
            request.setTotalFee(BaseWxPayRequest.yuanToFen(orders.getPrice().toString()));
        Payer payer = new Payer();
        payer.setSubOpenid(openid);
        request.setPayer(payer);
        request.setOutTradeNo(orders.getOutTradeNo());
        request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//这个回调url必须是https开头的
        Amount amount = new Amount();
        amount.setTotal(orders.getPayAccount().intValue());
        request.setAmount(amount);
//        PrepayResponse res = WxMiniConfig.wxPayService.prepay(request);
        // 跟之前下单示例一样,填充预下单参数
        PrepayWithRequestPaymentResponse resParam =  WxMiniConfig.jsapiExtService.prepayWithRequestPayment(request,WxMiniConfig.wxProperties.getSubAppId());
        response =resParam;
        return response;
            request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss"));
            request.setSpbillCreateIp(Constants.getIpAddr());
            //微信小程序
            request.setOpenid(openid);
            response = WxMiniConfig.wxPayService.createOrder(request);
            PayResponse payResponse = new PayResponse();
            payResponse.setResponse(response);
            payResponse.setOrderId(orders.getId());
            payResponse.setPayType(Constants.ZERO);
            return payResponse;
        } catch (WxPayException e) {
            e.printStackTrace();
        }
        throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"支付失败!");
    }
    /**
@@ -2089,7 +2100,6 @@
        //更新缓存
        redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,0);
    }
}