refactor(payment): 移除微信转账服务中的用户确认字段

- 移除了 initiateSingleTransferInternal 方法中的 userConfirm 参数
- 删除了 TransferSceneReportInfo 内部类中的 userConfirm 字段
- 移除了请求体中设置 userConfirm 字段的逻辑
- 更新了日志输出格式,移除 userConfirm 相关信息
- 添加注释说明微信侧对未定义字段的严格校验规则
- 保持方法兼容性以支持小程序拉起确认页功能
This commit is contained in:
2026-01-31 16:24:46 +08:00
parent 49998c71e4
commit 40aecd7c22

View File

@@ -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<TransferSceneReportInfo> transferSceneReportInfos;
/**
* 是否需要用户在小程序确认页确认收款;为 true 时,微信会返回 package_info用于 wx.requestMerchantTransfer。
*/
private Boolean userConfirm;
}
@lombok.Data