yeg
2026-09-15 3430766339078f9e8f58d281dbdf10c9b033f64c
fix(huifu): 微信商户配置补上必填的 product_id

以汇付接口规则为准逐项对账后,四个接口里只有《微信商户配置》(v2.merchant.busi.config)
真的漏了必填字段:

文档「### 请求参数」表:product_id | 产品编号 | String | 32 | **Y** | 示例值 JCTEST

它在 data 里,和公共参数表里那个由 SDK 自动携带的 product_id 不是同一处,必须自己传。
(同样的坑在 head/config 上踩过一次:补上 product_id 之后请求才被受理。)

其余三个接口经核对没有漏:
- v2/merchant/basicdata/ent 25 个顶层必填字段,代码全部发送
- v2/merchant/basicdata/indv 15 个顶层必填字段,代码全部发送(含 settle_card_front_pic)
- v2/merchant/busi.open 顶层必填只有 req_seq_id / req_date / huifu_id,均已发送
这三个接口出现的 product_id 都在返回参数表里,不是请求必填。

回归:回调幂等、进件重试、进件结果解析共 16 项通过。
1个文件已修改
3 ■■■■■ 已修改文件
talent-card-server/src/main/java/com/talentcard/server/business/payment/huifu/HuifuMerchantWechatConfigGateway.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/payment/huifu/HuifuMerchantWechatConfigGateway.java
@@ -29,6 +29,9 @@
        request.put("req_date", LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE));
        request.put("huifu_id", huifuId);
        request.put("fee_type", "01");
        // 文档《微信商户配置》的请求参数表里 product_id 是必填(示例值 JCTEST)。
        // 它与公共参数里的 product_id(SDK 自动带)不是同一处:这一处在 data 里,必须自己传。
        request.put("product_id", properties.getProductId().trim());
        request.put("wx_applet_app_id", properties.getMiniProgramAppId().trim());
        putIfPresent(request, "async_return_url", properties.getMerchantWechatConfigNotifyUrl());
        try {