From 40aecd7c225a889ed9aa55574826d663bd37a45d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sat, 31 Jan 2026 16:24:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor(payment):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E8=BD=AC=E8=B4=A6=E6=9C=8D=E5=8A=A1=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E7=A1=AE=E8=AE=A4=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了 initiateSingleTransferInternal 方法中的 userConfirm 参数 - 删除了 TransferSceneReportInfo 内部类中的 userConfirm 字段 - 移除了请求体中设置 userConfirm 字段的逻辑 - 更新了日志输出格式,移除 userConfirm 相关信息 - 添加注释说明微信侧对未定义字段的严格校验规则 - 保持方法兼容性以支持小程序拉起确认页功能 --- .../payment/service/WxTransferService.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gxwebsoft/payment/service/WxTransferService.java b/src/main/java/com/gxwebsoft/payment/service/WxTransferService.java index 7032a2b..a8565c9 100644 --- a/src/main/java/com/gxwebsoft/payment/service/WxTransferService.java +++ b/src/main/java/com/gxwebsoft/payment/service/WxTransferService.java @@ -83,7 +83,7 @@ public class WxTransferService { String outBillNo, String remark, String userName) throws PaymentException { - return initiateSingleTransferInternal(tenantId, openid, amountYuan, outBillNo, remark, userName, false); + return initiateSingleTransferInternal(tenantId, openid, amountYuan, outBillNo, remark, userName); } /** @@ -97,7 +97,9 @@ public class WxTransferService { String outBillNo, String remark, String userName) throws PaymentException { - return initiateSingleTransferInternal(tenantId, openid, amountYuan, outBillNo, remark, userName, true); + // 注意:微信侧会严格校验请求体字段,传入未定义字段(如 user_confirm)会直接 400(PARAM_ERROR)。 + // 此处不再向请求体写入 user_confirm,仅保留该方法用于兼容调用方(若微信侧返回 package_info,可供小程序拉起确认页)。 + return initiateSingleTransferInternal(tenantId, openid, amountYuan, outBillNo, remark, userName); } private TransferBillsResponse initiateSingleTransferInternal(Integer tenantId, @@ -105,8 +107,7 @@ public class WxTransferService { BigDecimal amountYuan, String outBillNo, String remark, - String userName, - boolean userConfirm) throws PaymentException { + String userName) throws PaymentException { if (tenantId == null) { throw PaymentException.paramError("租户ID不能为空"); @@ -175,8 +176,6 @@ public class WxTransferService { request.setTransferAmount(amountFen); request.setTransferRemark(limitLen(remark, 32)); request.setTransferSceneReportInfos(sceneReportInfos); - // 小程序拉起收款确认页:需要 user_confirm=true,微信会在响应中返回 package_info - request.setUserConfirm(userConfirm ? Boolean.TRUE : null); log.debug("微信商家转账(升级版)请求参数: tenantId={}, outBillNo={}, transferSceneId={}, sceneReportInfosCount={}", tenantId, outBillNo, transferSceneId, sceneReportInfos.size()); @@ -219,9 +218,8 @@ public class WxTransferService { } } TransferBillsResponse response = httpResponse.getServiceResponse(); - log.info("微信商家转账已受理(升级版): tenantId={}, outBillNo={}, userConfirm={}, transferBillNo={}, state={}", + log.info("微信商家转账已受理(升级版): tenantId={}, outBillNo={}, transferBillNo={}, state={}", tenantId, outBillNo, - userConfirm, response != null ? response.getTransferBillNo() : null, response != null ? response.getState() : null); return response; @@ -281,10 +279,6 @@ public class WxTransferService { private String userName; private String notifyUrl; private List transferSceneReportInfos; - /** - * 是否需要用户在小程序确认页确认收款;为 true 时,微信会返回 package_info,用于 wx.requestMerchantTransfer。 - */ - private Boolean userConfirm; } @lombok.Data