Browse Source

改动过的

huanglizhi 1 year ago
parent
commit
ec71766040

+ 1 - 1
module-erp/pom.xml

@@ -43,7 +43,7 @@
         <dependency>
             <groupId>com.github.binarywang</groupId>
             <artifactId>weixin-java-pay</artifactId>
-            <version>4.6.0</version>
+            <version>4.6.2.B</version>
         </dependency>
 
         <dependency>

+ 42 - 26
module-erp/src/main/java/com/hys/app/controller/erp/use/PayController.java

@@ -4,27 +4,26 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
-import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
 import com.hys.app.framework.exception.ServiceException;
 import com.hys.app.model.erp.dos.OrderCustomerFee;
 import com.hys.app.model.erp.dos.OrderDO;
 import com.hys.app.model.erp.dto.PayTypeUrl;
 import com.hys.app.pay.ali.AliPayService;
 import com.hys.app.pay.ali.PayOrder;
-import com.hys.app.pay.ali.WxService;
+import com.hys.app.pay.wx.WxPayServiceMy;
 import com.hys.app.service.erp.OrderCustomerFeeManager;
 import com.hys.app.service.erp.OrderManager;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.net.UnknownHostException;
 import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.List;
@@ -38,13 +37,13 @@ import java.util.Map;
 public class PayController {
     private OrderManager orderManager;
     private AliPayService aliPayService;
-    private WxService wxService;
+    private WxPayServiceMy wxPayServiceMy;
     private OrderCustomerFeeManager orderCustomerFeeManager;
-    private WxPayService wxPayService;
+
 
     @ApiOperation(value = "扫描完获取拉起支付的url")
     @PostMapping("/getPayUrl")
-    public Object getListByScan(@RequestBody @Validated PayTypeUrl payTypeUrl) {
+    public Object getListByScan(@RequestBody @Validated PayTypeUrl payTypeUrl) throws UnknownHostException {
         OrderDO aDo = orderManager.getById(payTypeUrl.getOrderId());
         if (ObjectUtil.isNull(aDo)) {
             throw new ServiceException("未查询到订单信息");
@@ -52,20 +51,20 @@ public class PayController {
         PayOrder payOrder = new PayOrder();
         payOrder.setTraceNo(aDo.getId().toString());
 
-        payOrder.setSubject("租赁订单支付金额");
+        payOrder.setSubject("订单支付金额");
         payOrder.setTimeExpire(LocalDateTime.now().plusMinutes(30));
         List<OrderCustomerFee> list = orderCustomerFeeManager.list(new LambdaQueryWrapper<OrderCustomerFee>().eq(OrderCustomerFee::getOrderId, payTypeUrl.getOrderId()));
-        if (CollectionUtil.isNotEmpty(list)){
-            payOrder.setTotalAmount(new BigDecimal(aDo.getRealPrice()).add(list.stream().map(OrderCustomerFee::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add)).doubleValue());
-        }else {
-            payOrder.setTotalAmount(aDo.getRealPrice());
+        if (CollectionUtil.isNotEmpty(list)) {
+            payOrder.setTotalAmount(new BigDecimal(aDo.getRealPrice()).add(list.stream().map(OrderCustomerFee::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add)).multiply(new BigDecimal(1 + aDo.getTaxRate() * 0.01)).doubleValue());
+        } else {
+            payOrder.setTotalAmount(aDo.getRealPrice() * (1 + aDo.getTaxRate() * 0.01));
         }
 
         switch (payTypeUrl.getPayType()) {
             case "ali":
                 return aliPayService.pay(payOrder);
             case "wx":
-                return "暂未开通";
+                return wxPayServiceMy.pay(payOrder);
             default:
                 return "不支持的支付方式";
         }
@@ -89,17 +88,34 @@ public class PayController {
     }
 
     @PostMapping("/wxpay/notify")
-    public String payNotify(@RequestBody String xmlData) throws Exception {
-        WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
-
-        if ("SUCCESS".equals(notifyResult.getResultCode())) {
-            // 处理业务逻辑
-            String outTradeNo = notifyResult.getOutTradeNo();
-            String transactionId = notifyResult.getTransactionId();
-            // 更新订单状态等
-            return "<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>";
-        } else {
-            return "<xml><return_code><![CDATA[FAIL]]></return_code></xml>";
+    public String parseOrderNotify(@RequestBody String xmlData) {
+        try {
+            WxPayServiceImpl wxPayService = new WxPayServiceImpl();
+            // 解析支付通知结果
+            WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
+            // 处理订单逻辑
+            if ("SUCCESS".equals(notifyResult.getResultCode().toUpperCase())) {
+                // 支付成功
+                OrderDO aDo = orderManager.getById(notifyResult.getOutTradeNo());
+                aDo.setHasPayReturn(true);
+                orderManager.updateById(aDo);
+                // 返回成功响应给微信服务器
+                return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
+            }
+        } catch (WxPayException e) {
+            // 处理解析异常,记录日志
+            e.printStackTrace();
         }
+        return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[解析失败]]></return_msg></xml>";
+    }
+
+    @GetMapping("getopenId")
+    public String getopenId() {
+        String appId = "wx51e98f2dee35237d";
+        String secret = "13803c1b0d911e023c7da0b300cbce89";
+
+        String accessToken = WxPayServiceMy.getAccessToken(appId, secret);
+        String openId = WxPayServiceMy.getOpenId(accessToken);
+        return openId;
     }
 }

+ 8 - 0
module-erp/src/main/java/com/hys/app/model/erp/dos/OrderDO.java

@@ -189,5 +189,13 @@ public class OrderDO extends BaseDO {
     @ApiModelProperty(name = "subtract_stock", value = "渠道id")
     private Long  saleChannelId;
 
+    /**
+     * 折扣
+     */
     private Double  reduction;
+
+    /**
+     * 税率
+     */
+    private Integer  taxRate;
 }

+ 8 - 0
module-erp/src/main/java/com/hys/app/model/erp/dos/OrderItemDO.java

@@ -12,6 +12,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -136,4 +137,11 @@ public class OrderItemDO implements Serializable {
 
     private String areaStock;
 
+    private BigDecimal itemMoney;
+    /**
+     * 折扣
+     */
+    private Double  reduction;
+
+
 }

+ 9 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderDTO.java

@@ -96,9 +96,18 @@ public class OrderDTO {
     @Min(value = 0, message = "打折后的金额不能为空能小于0")
     private Double realPrice;
 
+    /**
+     * 折扣
+     */
     private Double  reduction;
 
 
+    /**
+     * 折扣
+     */
+    @NotNull(message = "税率不能为空")
+    private Integer  taxRate;
+
     @ApiModelProperty(name = "province_city_area_address", value = "地址不能为空")
 //    @NotBlank(message = "地址不能为空")
     private String provinceCityAreaAddress;

+ 8 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/OrderItemDTO.java

@@ -12,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -71,5 +72,12 @@ public class OrderItemDTO {
     @ApiModelProperty(name = "not_return_num", value = "未退货数量")
     private Integer notReturnNum = 0;
 
+    /**
+     * 折扣
+     */
+    private Double  reduction;
+
+    private BigDecimal itemMoney;
+
 }
 

+ 0 - 29
module-erp/src/main/java/com/hys/app/pay/ali/AliReturnPay.java

@@ -1,29 +0,0 @@
-package com.hys.app.pay.ali;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-import java.io.Serializable;
-
-//支付宝的回调实体类
-@Data
-@ToString
-@AllArgsConstructor
-@NoArgsConstructor
-public class AliReturnPay implements Serializable {
-    private static final long serialVersionUID = 8683949075381016639L;
-    // 开发者的app_id
-    private String app_id;
-    // 商户订单号
-    private String out_trade_no;
-    // 签名
-    private String sign;
-    // 交易状态
-    private String trade_status;
-    // 支付宝交易号
-    private String trade_no;
-    // 交易的金额
-    private String total_amount;
-}

+ 0 - 36
module-erp/src/main/java/com/hys/app/pay/ali/WxConfig.java

@@ -1,36 +0,0 @@
-package com.hys.app.pay.ali;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-@Data
-@Component
-@ConfigurationProperties(prefix = "wx")
-public class WxConfig {
-    /**
-     *  商户号
-     */
-    private String merchantId;
-    /**
-     * 商户API私钥路径
-     */
-    private String privateKeyPath;
-    /**
-     * 序列号
-     */
-    private String merchantSerialNumber;
-    /**
-     *  商户APIV3密钥
-     */
-    private String apiV3Key;
-    /**
-     *  APPID
-     */
-    private String appid;
-
-    /**
-     *  回调地址
-     */
-    private String notifyUrl;
-}

+ 0 - 47
module-erp/src/main/java/com/hys/app/pay/ali/WxService.java

@@ -1,47 +0,0 @@
-package com.hys.app.pay.ali;
-
-import com.hys.app.framework.exception.ServiceException;
-import com.wechat.pay.java.core.Config;
-import com.wechat.pay.java.core.RSAAutoCertificateConfig;
-import com.wechat.pay.java.core.auth.WechatPay2Validator;
-import com.wechat.pay.java.service.payments.h5.model.Amount;
-import com.wechat.pay.java.service.payments.h5.H5Service;
-import com.wechat.pay.java.service.payments.h5.model.PrepayRequest;
-import com.wechat.pay.java.service.payments.h5.model.PrepayResponse;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-@Service
-public class WxService {
-    @Resource
-    private WxConfig wxConfig;
-
-    public PrepayResponse pay(PayOrder payOrder) {
-
-        try {
-            // 初始化SDK
-            Config config = new RSAAutoCertificateConfig.Builder()
-                    .merchantId(wxConfig.getMerchantId())
-                    .privateKeyFromPath(wxConfig.getPrivateKeyPath())
-                    .merchantSerialNumber(wxConfig.getMerchantSerialNumber())
-                    .apiV3Key(wxConfig.getApiV3Key())
-                    .build();
-            // 构建service
-            H5Service service = new H5Service.Builder().config(config).build();
-            PrepayRequest request = new PrepayRequest();
-            request.setAppid(wxConfig.getAppid());
-            request.setMchid(wxConfig.getMerchantId());
-            request.setOutTradeNo(payOrder.getTraceNo());
-            request.setTimeExpire(payOrder.getTimeExpire().toString());
-            Amount amount = new Amount();
-            amount.setTotal(payOrder.getTotalAmount().intValue()*100);
-            request.setAmount(amount);
-            request.setDescription(payOrder.getSubject());
-            return service.prepay(request);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        throw new ServiceException("拉起微信异常");
-    }
-}

+ 30 - 0
module-erp/src/main/java/com/hys/app/pay/wx/WxConfig.java

@@ -0,0 +1,30 @@
+package com.hys.app.pay.wx;
+
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+@Data
+@Configuration
+public class WxConfig {
+
+    @Value("${wxpay.appId}")
+    private String appId;
+    @Value("${wxpay.mchId}")
+    private String mchId;
+    @Value("${wxpay.mchKey}")
+    private String mchKey;
+    @Value("${wxpay.keyPath}")
+    private String keyPath;
+    @Value("${wxpay.apiV3Key}")
+    private String apiV3Key;
+    @Value("${wxpay.notifyUrl}")
+    private String notifyUrl;
+    @Value("${wxpay.subMchId}")
+    private String subMchId;
+
+}

+ 0 - 29
module-erp/src/main/java/com/hys/app/pay/wx/WxPayConfigMy.java

@@ -1,29 +0,0 @@
-package com.hys.app.pay.wx;
-
-import com.github.binarywang.wxpay.config.WxPayConfig;
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ConfigurationProperties(prefix = "wxpay")
-@Data
-public class WxPayConfigMy {
-    private String appId;
-    private String mchId;
-    private String mchKey;
-    private String apiV3Key;
-    private String keyPath;
-
-    @Bean
-    public WxPayConfig wxPayConfig() {
-        WxPayConfig payConfig = new WxPayConfig();
-        payConfig.setAppId(appId); // 服务商AppID
-        payConfig.setMchId(mchId); // 服务商商户号
-        payConfig.setMchKey(mchKey); // 服务商API密钥
-        payConfig.setKeyPath("path/to/your/cert.p12"); // 证书路径
-        payConfig.setApiV3Key(apiV3Key); // 服务商API v3密钥
-        return payConfig;
-    }
-}

+ 0 - 27
module-erp/src/main/java/com/hys/app/pay/wx/WxPayServiceConfig.java

@@ -1,27 +0,0 @@
-package com.hys.app.pay.wx;
-
-import com.github.binarywang.wxpay.config.WxPayConfig;
-import com.github.binarywang.wxpay.service.WxPayService;
-import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class WxPayServiceConfig {
-
-    @Autowired
-    private WxPayConfigMy wxPayConfigMy;
-
-    @Bean
-    public WxPayService wxPayService() {
-        WxPayService wxPayService = new WxPayServiceImpl();
-        WxPayConfig payConfig = new WxPayConfig();
-        payConfig.setAppId(wxPayConfigMy.getAppId());
-        payConfig.setMchId(wxPayConfigMy.getMchId());
-        payConfig.setMchKey(wxPayConfigMy.getMchKey());
-        payConfig.setKeyPath(wxPayConfigMy.getKeyPath());
-        wxPayService.setConfig(payConfig);
-        return wxPayService;
-    }
-}

+ 122 - 19
module-erp/src/main/java/com/hys/app/pay/wx/WxPayServiceMy.java

@@ -1,34 +1,137 @@
 package com.hys.app.pay.wx;
 
-import com.github.binarywang.wxpay.bean.applyment.WxPayApplymentCreateResult;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.service.WxPayService;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import com.github.binarywang.wxpay.util.SignUtils;
+import com.hys.app.framework.database.annotation.Id;
+import com.hys.app.framework.util.JsonUtil;
+import com.hys.app.pay.ali.PayOrder;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.InetAddress;
+import java.net.URL;
+import java.net.UnknownHostException;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 @Service
 public class WxPayServiceMy {
+    @Resource
+    private WxConfig wxConfig;
 
-    @Autowired
-    private WxPayService wxPayService;
-
-    public WxPayUnifiedOrderResult createOrder(String orderId, String description, int totalFee, String ip, String notifyUrl) throws Exception {
-        WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
-        request.setOutTradeNo(orderId);
-        request.setBody(description);
-        request.setTotalFee(totalFee);
-        request.setSpbillCreateIp(ip);
-        request.setNotifyUrl(notifyUrl);
-        request.setTradeType("JSAPI"); // 或者 "NATIVE", "APP" 等
-        return wxPayService.unifiedOrder(request);
+    private WxPayService getPayService() {
+        WxPayConfig payConfig = new WxPayConfig();
+        payConfig.setAppId(wxConfig.getAppId());
+        payConfig.setMchId(wxConfig.getMchId());
+        payConfig.setMchKey(wxConfig.getMchKey());
+        payConfig.setKeyPath(wxConfig.getKeyPath());
+        payConfig.setApiV3Key(wxConfig.getApiV3Key());
+        WxPayService wxPayService = new WxPayServiceImpl();
+        wxPayService.setConfig(payConfig);
+        return wxPayService;
     }
 
-//    public WxPayApplymentForSubCreateResult registerSubMerchant(WxPayApplymentForSubCreateRequest request) throws WxPayException {
-//        // 调用wxPayService的方法执行API调用
-//        return wxPayService.createApplymentForSub(request);
-//    }
-}
+
+    public Map<String, String> pay(PayOrder payOrder) throws UnknownHostException {
+        WxPayService wxPayService = getPayService();
+
+        WxPayUnifiedOrderRequest orderRequest = WxPayUnifiedOrderRequest.newBuilder()
+                .body(payOrder.getSubject())
+                .outTradeNo(payOrder.getTraceNo())
+                .totalFee((int) Math.round(payOrder.getTotalAmount() * 100)) // 单位是分
+                .spbillCreateIp(InetAddress.getLocalHost().getHostAddress())
+                .notifyUrl(wxConfig.getNotifyUrl())
+                .tradeType("JSAPI")
+                .productId(IdUtil.fastUUID())
+                .build();
+
+        // 设置商户子账户id
+        orderRequest.setSubMchId(wxConfig.getSubMchId());
+        try {
+            WxPayUnifiedOrderResult result = wxPayService.unifiedOrder(orderRequest);
+            Map<String, String> payData = new HashMap<>();
+            payData.put("appId", wxConfig.getAppId());
+            payData.put("timeStamp", String.valueOf(System.currentTimeMillis() / 1000));
+            payData.put("nonceStr", result.getNonceStr());
+            payData.put("package", "prepay_id=" + result.getPrepayId());
+            payData.put("signType", "MD5");
+            payData.put("paySign", SignUtils.createSign(payData, wxPayService.getConfig().getMchKey(), null, null));
+            return payData;
+        } catch (WxPayException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static String getAccessToken(String appId, String secret) {
+        String accessToken = "";
+        try {
+            String authString = appId + ":" + secret;
+            byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes());
+            String authStringEnc = new String(authEncBytes);
+
+            URL url = new URL("https://api.weixin.qq.com/sns/oauth2/access_token");
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
+
+            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String inputLine;
+            StringBuffer response = new StringBuffer();
+
+            while ((inputLine = in.readLine()) != null) {
+                response.append(inputLine);
+            }
+            in.close();
+
+            accessToken = response.toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return accessToken;
+    }
+
+    public static String getOpenId(String accessToken) {
+        String openId = "";
+        try {
+            URL url = new URL("https://api.weixin.qq.com/sns/oauth2/access_token"+accessToken);
+                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("GET");
+
+            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String inputLine;
+            StringBuffer response = new StringBuffer();
+
+            while ((inputLine = in.readLine()) != null) {
+                response.append(inputLine);
+            }
+            in.close();
+            LinkedHashMap<String, Object> map = JsonUtil.toMap(response.toString());
+            openId = map.get("openid").toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return openId;
+    }
+}

+ 4 - 4
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java

@@ -80,9 +80,9 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
         for (OrderVO datum : orderVOWebPage.getData()) {
             List<OrderCustomerFee> list = orderCustomerFeeManager.list(new LambdaQueryWrapper<OrderCustomerFee>().eq(OrderCustomerFee::getOrderId, datum.getId()));
             if (CollectionUtil.isNotEmpty(list)){
-                datum.setTotalAmount(new BigDecimal(datum.getRealPrice()).add(list.stream().map(OrderCustomerFee::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add)));
+                datum.setTotalAmount(new BigDecimal(datum.getRealPrice()).add(list.stream().map(OrderCustomerFee::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add)).multiply(new BigDecimal(1+datum.getTaxRate()*0.01)));
             }else {
-                datum.setTotalAmount(new BigDecimal(datum.getRealPrice()));
+                datum.setTotalAmount(new BigDecimal(datum.getRealPrice()).multiply(new BigDecimal(1+datum.getTaxRate()*0.01)));
             }
         }
         return orderVOWebPage;
@@ -118,8 +118,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
     public void edit(OrderDTO orderDTO) {
         //修改把原先订单所有的东西都置空在新增
         orderSendManager.remove(new LambdaQueryWrapper<OrderSendDO>().eq(OrderSendDO::getOrderId, orderDTO.getId()));
-        //删除冻结明细
-        lockedStockDetailManager.remove(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId, orderDTO.getId()));
+
         //解冻库存
         List<OrderItemDO> itemDOS = orderItemManager.list(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderDTO.getId()));
         List<StockDTO> stockDTOS = new ArrayList<>();
@@ -132,6 +131,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
         productStockManager.updateLockedStock(stockDTOS);
         orderItemManager.remove(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderDTO.getId()));
         List<LockedStockDetailDO> list = lockedStockDetailManager.list(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId, orderDTO.getId()));
+        //删除冻结明细
         lockedStockDetailManager.remove(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId, orderDTO.getId()));
         List<StockDTO> arrayList = new ArrayList<>();
         list.forEach(item -> {

+ 7 - 4
server/src/main/resources/application-local.yml

@@ -79,8 +79,11 @@ alipay:
   signType: RSA2
 
 wxpay:
-  appId: your_app_id
-  mchId: your_merchant_id
-  mchKey: your_merchant_key
-  keyPath: /path/to/your/apiclient_cert.p12
+  appId:  wx51e98f2dee35237d
+  mchId: 1638981115
+  mchKey: tt9teerjiwer930i4t54u5894irhjehf
+  keyPath: /apiclient_cert.p12
+  apiV3Key: tt9teerjiwer930i4t54u5894irhjehf
+  notifyUrl: http://529920wmvp80.vicp.fun:52722/admin/erp/pay/wxpay/notify
+  subMchId: 1639506733
 

+ 4 - 1
server/src/main/resources/application-prod.yml

@@ -81,4 +81,7 @@ wxpay:
   appId:  wx51e98f2dee35237d
   mchId: 1638981115
   mchKey: tt9teerjiwer930i4t54u5894irhjehf
-  keyPath: /path/to/your/apiclient_cert.p12
+  keyPath: /apiclient_cert.p12
+  apiV3Key: tt9teerjiwer930i4t54u5894irhjehf
+  notifyUrl: https://apidoc.raycos.net/admin/erp/pay/wxpay/notify
+  subMchId: 1648546606