Commit 55e1bca3c0ad1e16cc935935d24cfeddd69abaa7

Authored by YunaiV
1 parent 625265b1

【代码修复】PAY:微信扫码支付 v2 版本,缺少 product_id 的报错

yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
@@ -2,9 +2,11 @@ package cn.iocoder.yudao.framework.web.core.handler; @@ -2,9 +2,11 @@ package cn.iocoder.yudao.framework.web.core.handler;
2 2
3 import cn.hutool.core.exceptions.ExceptionUtil; 3 import cn.hutool.core.exceptions.ExceptionUtil;
4 import cn.hutool.core.map.MapUtil; 4 import cn.hutool.core.map.MapUtil;
  5 +import cn.hutool.core.util.ObjUtil;
5 import cn.hutool.core.util.StrUtil; 6 import cn.hutool.core.util.StrUtil;
6 import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService; 7 import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService;
7 import cn.iocoder.yudao.framework.common.exception.ServiceException; 8 import cn.iocoder.yudao.framework.common.exception.ServiceException;
  9 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
8 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 10 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
9 import cn.iocoder.yudao.framework.common.util.collection.SetUtils; 11 import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
10 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 12 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
@@ -222,8 +224,17 @@ public class GlobalExceptionHandler { @@ -222,8 +224,17 @@ public class GlobalExceptionHandler {
222 // 不包含的时候,才进行打印,避免 ex 堆栈过多 224 // 不包含的时候,才进行打印,避免 ex 堆栈过多
223 if (!IGNORE_ERROR_MESSAGES.contains(ex.getMessage())) { 225 if (!IGNORE_ERROR_MESSAGES.contains(ex.getMessage())) {
224 // 即使打印,也只打印第一层 StackTraceElement,并且使用 warn 在控制台输出,更容易看到 226 // 即使打印,也只打印第一层 StackTraceElement,并且使用 warn 在控制台输出,更容易看到
225 - StackTraceElement[] stackTrace = ex.getStackTrace();  
226 - log.warn("[serviceExceptionHandler]\n\t{}", stackTrace[0]); 227 + try {
  228 + StackTraceElement[] stackTraces = ex.getStackTrace();
  229 + for (StackTraceElement stackTrace : stackTraces) {
  230 + if (ObjUtil.notEqual(stackTrace.getClassName(), ServiceExceptionUtil.class.getName())) {
  231 + log.warn("[serviceExceptionHandler]\n\t{}", stackTrace);
  232 + break;
  233 + }
  234 + }
  235 + } catch (Exception ignored) {
  236 + // 忽略日志,避免影响主流程
  237 + }
227 } 238 }
228 return CommonResult.error(ex.getCode(), ex.getMessage()); 239 return CommonResult.error(ex.getCode(), ex.getMessage());
229 } 240 }
yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/weixin/WxNativePayClient.java
@@ -35,6 +35,7 @@ public class WxNativePayClient extends AbstractWxPayClient { @@ -35,6 +35,7 @@ public class WxNativePayClient extends AbstractWxPayClient {
35 protected PayOrderRespDTO doUnifiedOrderV2(PayOrderUnifiedReqDTO reqDTO) throws WxPayException { 35 protected PayOrderRespDTO doUnifiedOrderV2(PayOrderUnifiedReqDTO reqDTO) throws WxPayException {
36 // 构建 WxPayUnifiedOrderRequest 对象 36 // 构建 WxPayUnifiedOrderRequest 对象
37 WxPayUnifiedOrderRequest request = buildPayUnifiedOrderRequestV2(reqDTO); 37 WxPayUnifiedOrderRequest request = buildPayUnifiedOrderRequestV2(reqDTO);
  38 +// .setProductId(reqDTO.getOutTradeNo()); // V2 必须传递 productId,无需在微信配置。该参数在 V3 简化,无需传递!
38 // 执行请求 39 // 执行请求
39 WxPayNativeOrderResult response = client.createOrder(request); 40 WxPayNativeOrderResult response = client.createOrder(request);
40 41